octoprint-googledrivefiles's People
octoprint-googledrivefiles's Issues
Sub-folders are not synced
Not sure if this is by design or just not implemented yet but I wanted to organise my GCode into sub-folders per project and found that the plugin only syncs GCode in the root of the folder specified in the settings. Any sub-folders (either created in Drive directly, or in OctoPrint) are not synced.
Would be really useful if this could be implemented.
Google Drive Files not downloading updates
Hi, after following your instructions and installing the plugin it seems to work fine for the first synchronization, all of the files in my Google folder in Google Drive download fine. However, after several weeks, i'll upload a new gcode file and it won't download until I disconnect the plugin then reauthorize it.
I started the debug of the plugin like I saw you suggest in another issue however it didn't seem like it was polling google drive for updates whenever I uploaded the file. After reauthorizing it it polled and downloaded updates in the debug log.
Worth noting, I have three octopi instances and all of them are sharing the same secret key, do you think that could be causing the issue? All three are experiencing this issue.
Display Layer Progress Plugin Conflict
Files appear on octoprint but are only 130 bytes and contain no information. The file will appear but wont print or download and will be that small file size.
google drive files not getting installed
as you can see i've installed latest version of octoprint/octopi installed via raspberry pi imager
in the end it says google drive files have been installed properly but could see some red text while plugin was getting installed + at the time of restart i notice it says unknow plugin installed
installing google drive files plugin.txt
here i've copy and pasted the text while installing plugin from which you can see if it faced any error
after restarting you can see google drive files is not coming in plugin area
i've been using google drive files on my other octopi/octoprint instance, which are working just fine
also i tried to backup and restore from old instances which didnt work again
im not that good of a programmer, a big fan of your work and opensource community and will love to contribute full time in near future
thanks
Feature Request: support short-cuts to other folders
Firstly, thanks very much for your work on OctoPrint plug-ins. Now to the problem...
I have an entire folder structure in my Google Drive with all of my 3D prints (including GCODE files) neatly organised into folders within folders. I have other folders in my Google Drive with 3D prints that I have obtained from elsewhere (not my own designs).
The GoogleDriveFiles plugin has created a folder in my Google Drive, called "OctoPrint GCode". In this folder, I've created a shortcut to my "3D Printing" folder and another my "3D Printing Other" folder.
In my web browser, when I browse to "OctoPrint GCode" in my Google Drive, I can see the two folder shortcuts I created, and I can browse into them to see the files within.
Within my OctoPrint file manager, I can't see the shortcuts to the other folders, so I cannot access my GCODE files in that way. I'd like to be able to do this.
Large gcode files
I have a 64MB gcode file in my google drive folder. Octoprint recognizes the file name but the size is listed as "-" and states "Model contains no extrusion." The file works fine when loaded onto the sd card. I have double-checked the upload and the file is not corrupted.
I have the same problem with a 20MB file, but a smaller 9MB file works great. What could be causing this? Is there a file size limit?
After updating to 0.0.2, OctoPrint still prompts that update is available
Just like the title says, I updated to 0.0.2 but after OctoPi reboots, it still says update available.
google drive files not getting installed from plugin manager
Get Auth Code button
When i click the get auth code button, it reloads my octoprint session/refreshes back to the homepage
Possible to set a Google Drive folder that's not at the base directory?
I wanted to try using a folder like "Documents/OctoPrint Gcode", but neither "Documents/OctoPrint Gcode" nor "/Documents/OctoPrint Gcode" seemed to work.
Syncing Octoprint and Google Drive
After uploading a file to Octoprint, when should that file be synced with Google Drive?
Trouble Installing
Based on previous issues, I updated PIP and then tried to install pydrive2 but it still failed. This is the error that I got:
Building wheel for cryptography (pyproject.toml) ... error
error: subprocess-exited-with-error
× Building wheel for cryptography (pyproject.toml) did not run successfully.
│ exit code: 1
╰─> [193 lines of output]
running bdist_wheel
running build
running build_py
creating build
creating build/lib.linux-armv7l-cpython-37
creating build/lib.linux-armv7l-cpython-37/cryptography
copying src/cryptography/__init__.py -> build/lib.linux-armv7l-cpython-37/cryptography
copying src/cryptography/fernet.py -> build/lib.linux-armv7l-cpython-37/cryptography
copying src/cryptography/utils.py -> build/lib.linux-armv7l-cpython-37/cryptography
copying src/cryptography/__about__.py -> build/lib.linux-armv7l-cpython-37/cryptography
copying src/cryptography/exceptions.py -> build/lib.linux-armv7l-cpython-37/cryptography
creating build/lib.linux-armv7l-cpython-37/cryptography/hazmat
copying src/cryptography/hazmat/__init__.py -> build/lib.linux-armv7l-cpython-37/cryptography/hazmat
copying src/cryptography/hazmat/_oid.py -> build/lib.linux-armv7l-cpython-37/cryptography/hazmat
creating build/lib.linux-armv7l-cpython-37/cryptography/x509
copying src/cryptography/x509/__init__.py -> build/lib.linux-armv7l-cpython-37/cryptography/x509
copying src/cryptography/x509/certificate_transparency.py -> build/lib.linux-armv7l-cpython-37/cryptography/x509
copying src/cryptography/x509/name.py -> build/lib.linux-armv7l-cpython-37/cryptography/x509
copying src/cryptography/x509/general_name.py -> build/lib.linux-armv7l-cpython-37/cryptography/x509
copying src/cryptography/x509/base.py -> build/lib.linux-armv7l-cpython-37/cryptography/x509
copying src/cryptography/x509/oid.py -> build/lib.linux-armv7l-cpython-37/cryptography/x509
copying src/cryptography/x509/extensions.py -> build/lib.linux-armv7l-cpython-37/cryptography/x509
copying src/cryptography/x509/ocsp.py -> build/lib.linux-armv7l-cpython-37/cryptography/x509
creating build/lib.linux-armv7l-cpython-37/cryptography/hazmat/primitives
copying src/cryptography/hazmat/primitives/__init__.py -> build/lib.linux-armv7l-cpython-37/cryptography/hazmat/primitives
copying src/cryptography/hazmat/primitives/poly1305.py -> build/lib.linux-armv7l-cpython-37/cryptography/hazmat/primitives
copying src/cryptography/hazmat/primitives/_asymmetric.py -> build/lib.linux-armv7l-cpython-37/cryptography/hazmat/primitives
copying src/cryptography/hazmat/primitives/keywrap.py -> build/lib.linux-armv7l-cpython-37/cryptography/hazmat/primitives
copying src/cryptography/hazmat/primitives/_cipheralgorithm.py -> build/lib.linux-armv7l-cpython-37/cryptography/hazmat/primitives
copying src/cryptography/hazmat/primitives/hashes.py -> build/lib.linux-armv7l-cpython-37/cryptography/hazmat/primitives
copying src/cryptography/hazmat/primitives/constant_time.py -> build/lib.linux-armv7l-cpython-37/cryptography/hazmat/primitives
copying src/cryptography/hazmat/primitives/cmac.py -> build/lib.linux-armv7l-cpython-37/cryptography/hazmat/primitives
copying src/cryptography/hazmat/primitives/hmac.py -> build/lib.linux-armv7l-cpython-37/cryptography/hazmat/primitives
copying src/cryptography/hazmat/primitives/padding.py -> build/lib.linux-armv7l-cpython-37/cryptography/hazmat/primitives
copying src/cryptography/hazmat/primitives/_serialization.py -> build/lib.linux-armv7l-cpython-37/cryptography/hazmat/primitives
creating build/lib.linux-armv7l-cpython-37/cryptography/hazmat/backends
copying src/cryptography/hazmat/backends/__init__.py -> build/lib.linux-armv7l-cpython-37/cryptography/hazmat/backends
creating build/lib.linux-armv7l-cpython-37/cryptography/hazmat/bindings
copying src/cryptography/hazmat/bindings/__init__.py -> build/lib.linux-armv7l-cpython-37/cryptography/hazmat/bindings
creating build/lib.linux-armv7l-cpython-37/cryptography/hazmat/primitives/ciphers
copying src/cryptography/hazmat/primitives/ciphers/__init__.py -> build/lib.linux-armv7l-cpython-37/cryptography/hazmat/primitives/ciphers
copying src/cryptography/hazmat/primitives/ciphers/algorithms.py -> build/lib.linux-armv7l-cpython-37/cryptography/hazmat/primitives/ciphers
copying src/cryptography/hazmat/primitives/ciphers/modes.py -> build/lib.linux-armv7l-cpython-37/cryptography/hazmat/primitives/ciphers
copying src/cryptography/hazmat/primitives/ciphers/aead.py -> build/lib.linux-armv7l-cpython-37/cryptography/hazmat/primitives/ciphers
copying src/cryptography/hazmat/primitives/ciphers/base.py -> build/lib.linux-armv7l-cpython-37/cryptography/hazmat/primitives/ciphers
creating build/lib.linux-armv7l-cpython-37/cryptography/hazmat/primitives/kdf
copying src/cryptography/hazmat/primitives/kdf/__init__.py -> build/lib.linux-armv7l-cpython-37/cryptography/hazmat/primitives/kdf
copying src/cryptography/hazmat/primitives/kdf/hkdf.py -> build/lib.linux-armv7l-cpython-37/cryptography/hazmat/primitives/kdf
copying src/cryptography/hazmat/primitives/kdf/x963kdf.py -> build/lib.linux-armv7l-cpython-37/cryptography/hazmat/primitives/kdf
copying src/cryptography/hazmat/primitives/kdf/concatkdf.py -> build/lib.linux-armv7l-cpython-37/cryptography/hazmat/primitives/kdf
copying src/cryptography/hazmat/primitives/kdf/scrypt.py -> build/lib.linux-armv7l-cpython-37/cryptography/hazmat/primitives/kdf
copying src/cryptography/hazmat/primitives/kdf/kbkdf.py -> build/lib.linux-armv7l-cpython-37/cryptography/hazmat/primitives/kdf
copying src/cryptography/hazmat/primitives/kdf/pbkdf2.py -> build/lib.linux-armv7l-cpython-37/cryptography/hazmat/primitives/kdf
creating build/lib.linux-armv7l-cpython-37/cryptography/hazmat/primitives/twofactor
copying src/cryptography/hazmat/primitives/twofactor/hotp.py -> build/lib.linux-armv7l-cpython-37/cryptography/hazmat/primitives/twofactor
copying src/cryptography/hazmat/primitives/twofactor/__init__.py -> build/lib.linux-armv7l-cpython-37/cryptography/hazmat/primitives/twofactor
copying src/cryptography/hazmat/primitives/twofactor/totp.py -> build/lib.linux-armv7l-cpython-37/cryptography/hazmat/primitives/twofactor
creating build/lib.linux-armv7l-cpython-37/cryptography/hazmat/primitives/asymmetric
copying src/cryptography/hazmat/primitives/asymmetric/__init__.py -> build/lib.linux-armv7l-cpython-37/cryptography/hazmat/primitives/asymmetric
copying src/cryptography/hazmat/primitives/asymmetric/x448.py -> build/lib.linux-armv7l-cpython-37/cryptography/hazmat/primitives/asymmetric
copying src/cryptography/hazmat/primitives/asymmetric/dsa.py -> build/lib.linux-armv7l-cpython-37/cryptography/hazmat/primitives/asymmetric
copying src/cryptography/hazmat/primitives/asymmetric/rsa.py -> build/lib.linux-armv7l-cpython-37/cryptography/hazmat/primitives/asymmetric
copying src/cryptography/hazmat/primitives/asymmetric/utils.py -> build/lib.linux-armv7l-cpython-37/cryptography/hazmat/primitives/asymmetric
copying src/cryptography/hazmat/primitives/asymmetric/ed25519.py -> build/lib.linux-armv7l-cpython-37/cryptography/hazmat/primitives/asymmetric
copying src/cryptography/hazmat/primitives/asymmetric/x25519.py -> build/lib.linux-armv7l-cpython-37/cryptography/hazmat/primitives/asymmetric
copying src/cryptography/hazmat/primitives/asymmetric/ec.py -> build/lib.linux-armv7l-cpython-37/cryptography/hazmat/primitives/asymmetric
copying src/cryptography/hazmat/primitives/asymmetric/types.py -> build/lib.linux-armv7l-cpython-37/cryptography/hazmat/primitives/asymmetric
copying src/cryptography/hazmat/primitives/asymmetric/padding.py -> build/lib.linux-armv7l-cpython-37/cryptography/hazmat/primitives/asymmetric
copying src/cryptography/hazmat/primitives/asymmetric/ed448.py -> build/lib.linux-armv7l-cpython-37/cryptography/hazmat/primitives/asymmetric
copying src/cryptography/hazmat/primitives/asymmetric/dh.py -> build/lib.linux-armv7l-cpython-37/cryptography/hazmat/primitives/asymmetric
creating build/lib.linux-armv7l-cpython-37/cryptography/hazmat/primitives/serialization
copying src/cryptography/hazmat/primitives/serialization/__init__.py -> build/lib.linux-armv7l-cpython-37/cryptography/hazmat/primitives/serialization
copying src/cryptography/hazmat/primitives/serialization/pkcs12.py -> build/lib.linux-armv7l-cpython-37/cryptography/hazmat/primitives/serialization
copying src/cryptography/hazmat/primitives/serialization/ssh.py -> build/lib.linux-armv7l-cpython-37/cryptography/hazmat/primitives/serialization
copying src/cryptography/hazmat/primitives/serialization/pkcs7.py -> build/lib.linux-armv7l-cpython-37/cryptography/hazmat/primitives/serialization
copying src/cryptography/hazmat/primitives/serialization/base.py -> build/lib.linux-armv7l-cpython-37/cryptography/hazmat/primitives/serialization
creating build/lib.linux-armv7l-cpython-37/cryptography/hazmat/backends/openssl
copying src/cryptography/hazmat/backends/openssl/__init__.py -> build/lib.linux-armv7l-cpython-37/cryptography/hazmat/backends/openssl
copying src/cryptography/hazmat/backends/openssl/x448.py -> build/lib.linux-armv7l-cpython-37/cryptography/hazmat/backends/openssl
copying src/cryptography/hazmat/backends/openssl/poly1305.py -> build/lib.linux-armv7l-cpython-37/cryptography/hazmat/backends/openssl
copying src/cryptography/hazmat/backends/openssl/x509.py -> build/lib.linux-armv7l-cpython-37/cryptography/hazmat/backends/openssl
copying src/cryptography/hazmat/backends/openssl/dsa.py -> build/lib.linux-armv7l-cpython-37/cryptography/hazmat/backends/openssl
copying src/cryptography/hazmat/backends/openssl/decode_asn1.py -> build/lib.linux-armv7l-cpython-37/cryptography/hazmat/backends/openssl
copying src/cryptography/hazmat/backends/openssl/rsa.py -> build/lib.linux-armv7l-cpython-37/cryptography/hazmat/backends/openssl
copying src/cryptography/hazmat/backends/openssl/utils.py -> build/lib.linux-armv7l-cpython-37/cryptography/hazmat/backends/openssl
copying src/cryptography/hazmat/backends/openssl/ed25519.py -> build/lib.linux-armv7l-cpython-37/cryptography/hazmat/backends/openssl
copying src/cryptography/hazmat/backends/openssl/x25519.py -> build/lib.linux-armv7l-cpython-37/cryptography/hazmat/backends/openssl
copying src/cryptography/hazmat/backends/openssl/hashes.py -> build/lib.linux-armv7l-cpython-37/cryptography/hazmat/backends/openssl
copying src/cryptography/hazmat/backends/openssl/backend.py -> build/lib.linux-armv7l-cpython-37/cryptography/hazmat/backends/openssl
copying src/cryptography/hazmat/backends/openssl/cmac.py -> build/lib.linux-armv7l-cpython-37/cryptography/hazmat/backends/openssl
copying src/cryptography/hazmat/backends/openssl/ec.py -> build/lib.linux-armv7l-cpython-37/cryptography/hazmat/backends/openssl
copying src/cryptography/hazmat/backends/openssl/aead.py -> build/lib.linux-armv7l-cpython-37/cryptography/hazmat/backends/openssl
copying src/cryptography/hazmat/backends/openssl/hmac.py -> build/lib.linux-armv7l-cpython-37/cryptography/hazmat/backends/openssl
copying src/cryptography/hazmat/backends/openssl/ciphers.py -> build/lib.linux-armv7l-cpython-37/cryptography/hazmat/backends/openssl
copying src/cryptography/hazmat/backends/openssl/ed448.py -> build/lib.linux-armv7l-cpython-37/cryptography/hazmat/backends/openssl
copying src/cryptography/hazmat/backends/openssl/dh.py -> build/lib.linux-armv7l-cpython-37/cryptography/hazmat/backends/openssl
creating build/lib.linux-armv7l-cpython-37/cryptography/hazmat/bindings/openssl
copying src/cryptography/hazmat/bindings/openssl/_conditional.py -> build/lib.linux-armv7l-cpython-37/cryptography/hazmat/bindings/openssl
copying src/cryptography/hazmat/bindings/openssl/__init__.py -> build/lib.linux-armv7l-cpython-37/cryptography/hazmat/bindings/openssl
copying src/cryptography/hazmat/bindings/openssl/binding.py -> build/lib.linux-armv7l-cpython-37/cryptography/hazmat/bindings/openssl
running egg_info
writing src/cryptography.egg-info/PKG-INFO
writing dependency_links to src/cryptography.egg-info/dependency_links.txt
writing requirements to src/cryptography.egg-info/requires.txt
writing top-level names to src/cryptography.egg-info/top_level.txt
reading manifest file 'src/cryptography.egg-info/SOURCES.txt'
reading manifest template 'MANIFEST.in'
no previously-included directories found matching 'docs/_build'
warning: no previously-included files found matching 'vectors'
warning: no previously-included files matching '*' found under directory 'vectors'
warning: no previously-included files matching '*' found under directory '.github'
warning: no previously-included files found matching 'release.py'
warning: no previously-included files found matching '.readthedocs.yml'
warning: no previously-included files found matching 'dev-requirements.txt'
warning: no previously-included files found matching 'tox.ini'
warning: no previously-included files found matching 'mypy.ini'
warning: no previously-included files matching '*' found under directory '.circleci'
adding license file 'LICENSE'
adding license file 'LICENSE.APACHE'
adding license file 'LICENSE.BSD'
adding license file 'LICENSE.PSF'
writing manifest file 'src/cryptography.egg-info/SOURCES.txt'
copying src/cryptography/py.typed -> build/lib.linux-armv7l-cpython-37/cryptography
copying src/cryptography/hazmat/bindings/_openssl.pyi -> build/lib.linux-armv7l-cpython-37/cryptography/hazmat/bindings
creating build/lib.linux-armv7l-cpython-37/cryptography/hazmat/bindings/_rust
copying src/cryptography/hazmat/bindings/_rust/__init__.pyi -> build/lib.linux-armv7l-cpython-37/cryptography/hazmat/bindings/_rust
copying src/cryptography/hazmat/bindings/_rust/asn1.pyi -> build/lib.linux-armv7l-cpython-37/cryptography/hazmat/bindings/_rust
copying src/cryptography/hazmat/bindings/_rust/ocsp.pyi -> build/lib.linux-armv7l-cpython-37/cryptography/hazmat/bindings/_rust
copying src/cryptography/hazmat/bindings/_rust/x509.pyi -> build/lib.linux-armv7l-cpython-37/cryptography/hazmat/bindings/_rust
running build_ext
generating cffi module 'build/temp.linux-armv7l-cpython-37/cryptography.hazmat.bindings._openssl.c'
creating build/temp.linux-armv7l-cpython-37
running build_rust
/tmp/pip-build-env-kggjbweh/overlay/lib/python3.7/site-packages/setuptools/command/build_py.py:202: SetuptoolsDeprecationWarning: Installing 'cryptography.hazmat.bindings._rust' as data is deprecated, please list it in `packages`.
!!
############################
# Package would be ignored #
############################
Python recognizes 'cryptography.hazmat.bindings._rust' as an importable package,
but it is not listed in the `packages` configuration of setuptools.
'cryptography.hazmat.bindings._rust' has been automatically added to the distribution only
because it may contain data files, but this behavior is likely to change
in future versions of setuptools (and therefore is considered deprecated).
Please make sure that 'cryptography.hazmat.bindings._rust' is included as a package by using
the `packages` configuration field or the proper discovery methods
(for example by using `find_namespace_packages(...)`/`find_namespace:`
instead of `find_packages(...)`/`find:`).
You can read more about "package discovery" and "data files" on setuptools
documentation page.
!!
check.warn(importable)
=============================DEBUG ASSISTANCE=============================
If you are seeing a compilation error please try the following steps to
successfully install cryptography:
1) Upgrade to the latest pip and try again. This will fix errors for most
users. See: https://pip.pypa.io/en/stable/installing/#upgrading-pip
2) Read https://cryptography.io/en/latest/installation/ for specific
instructions for your platform.
3) Check our frequently asked questions for more information:
https://cryptography.io/en/latest/faq/
4) Ensure you have a recent Rust toolchain installed:
https://cryptography.io/en/latest/installation/#rust
Python: 3.7.3
platform: Linux-5.10.103-v7+-armv7l-with-debian-10.13
pip: n/a
setuptools: 65.6.3
setuptools_rust: 1.5.2
rustc: n/a
=============================DEBUG ASSISTANCE=============================
error: can't find Rust compiler
If you are using an outdated pip version, it is possible a prebuilt wheel is available for this package but pip is not able to install from it. Installing from the wheel would avoid the need for a Rust compiler.
To update pip, run:
pip install --upgrade pip
and then retry package installation.
If you did intend to build this package from source, try installing a Rust compiler from your system package manager and ensure it is on the PATH during installation. Alternatively, rustup (available at https://rustup.rs) is the recommended way to download and update the Rust compiler toolchain.
This package requires Rust >=1.48.0.
[end of output]
note: This error originates from a subprocess, and is likely not a problem with pip.
ERROR: Failed building wheel for cryptography
Failed to build cryptography
ERROR: Could not build wheels for cryptography, which is required to install pyproject.toml-based projects
So, I installed rust, as instructed on this page:
https://www.rust-lang.org/tools/install
Then tried again, still no luck. So I rebooted.
Now, if I try to run pip install pydrive2 or pip install cryptography --no-binary cryptography, it gets down to the line where it says "Building wheel for cryptography (pyproject.toml)" and just freezes forever. I have to kill it in order to get out of it. I am all out of ideas at this point. Any advice?
Subfolder Support
Good afternoon
Has there been any progression on the subfolder support
The original feature does not seem to be available any more:
https://github.com/jneilliii/OctoPrint-GoogleDriveFiles/archive/refs/heads/feature/subfolder_support.zip
Thanks for the upload!
Hiya!
Saw this in the plugin feed and wanted to thank you for your efforts. Not only a good idea that was brought to life, a detailed list of instructions that includes screenshots! Efforts from people like yourself really bring Octoprint to life. Thanks for the time and effort.
Please close me.
Two way sync
Hi,
Maybe I'm missing something but is the plugin supposed to let the file locally in the sync folder? Right now, my file is being uploaded and deleted right after.
Maybe it's the purpose but I was sure that it was a two ways sync
Thanks!
Is there a way to force a sync to google drive. sometimes it takes a minute sometimes 5,10 oir somethimes after 30 minutes i restart octoprint.
Is there a way to force a sync to google drive. sometimes it takes a minute sometimes 5,10 or sometimes after 30 minutes i restart octoprint. even restarting octoprint doesn't always help.
90% of the time within 5 minutes it will refresh though.
Ongoing sync for multiple printers
Hey there - thanks for the awesome plug in.
Had two questions (could be I'm doing something dumb here, apologies if that's so): can several printers/octoprints be hooked up using the same clients.json file?
Also, are the files supposed to update automatically? I've added a few new ones to my drive but I'm not seeing them appear in my file lists. Refreshing the list doesn't seem to do anything.
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.