rackerlabs / docs-cloud-files Goto Github PK
View Code? Open in Web Editor NEWDeveloper documentation source for Rackspace Cloud Files API
Home Page: https://developer.rackspace.com/docs/cloud-files/v1/developer-guide/
Developer documentation source for Rackspace Cloud Files API
Home Page: https://developer.rackspace.com/docs/cloud-files/v1/developer-guide/
Update per checklist.
Looking at output on both Chrome and Firefox, there's a spacing problem with the table cells that have headers that have to be wrapped within a cell.
Output:
http://staging.developer.rackspace.com/docs-cloud-files/#cors-headers-for-objects
shows Access-Control-Allo w-Origin
.
If a user tries to copy/paste that header the space will come with it. Let's try to remove that space if possible. For example:
+-----------------------+----------------------------------------------------+
| ``Access-Control-Allo | Specifies the origins that are allowed to make |
| w-Origin`` | cross-origin requests, separated by a space when |
| | there are multiple values. |
+-----------------------+----------------------------------------------------+
should be revised to:
+-------------------------+---------------------------------------------------+
| ``Access-Control-Allow- | Specifies the origins that are allowed to make |
| Origin`` | cross-origin requests, separated by a space when |
| | there are multiple values. |
+--------------------------+--------------------------------------------------+
Kelly edited the contributor collateral, and we added a CONTRIBUTING.md so that users get the link to contributor instructions when working in the repo.
Using [Cloud Identity](https://github.com/rackerlabs/docs-cloud-identity] as a model, update the info for contributors:
Update all links and naming to match product.
The auth link in the service endpoints topic should link up to the GSG auth section; this topic currently links to the Dev guide auth section.
Currently the heading says "Send requests to the API" should say "Send API requests"
Hi Catherine,
Apologies if you are not the go-to for these issues currently, let me know where to send this if I'm mistaken.
The following section of the Cloud Files API docs contains a defunct link - the content is under another subdirectory:
specifically this box:
For information about adding metadata for the following purposes, see Get object content and metadata:
Container quotas
Access log delivery
"Access log delivery" is not in the section this "get object content and metadata" link jumps you to. It's here under the use cases:
I only know because I just had a minor panic attack trying to locate it just now to prove that the log explanation ever existed. It's very late in my day. :)
Let me know if I can help with anything else. Thanks!
-Regan Murley
While reading the documentation, I noticed that although Cloud Files supports RBAC as documented here, this is not mentioned or linked to from the overview page for Permissions. This seems like an important oversight, because in reading just the overview page, the reader might mistakenly believe that RBAC is not supported.
In reviewing the migration, I noticed a few links to api.rackspace.com. Now's a good time to find an alternative link since that site will be removed/redirected.
Hey Racker,
I've noticed that recently the API docs format has been updated. Now the sections are condensed into expandable menu's, it's much harder to get an overview, when looking for something specific, without an expand all button.
I noticed there is no expand all button, I believe this affects all docs , not just cloud files. From a usability perspective it would be really neat to have this feature to make it easier for rackers and non rackers searching the API docs.
Cheers &
Best wishes,
Adam
The side navigation bar stays static at the top of the page so if you're scrolling on a long page, there's no easy way to navigate elsewhere without scrolling back up to the top.
(Not sure if this was intentional, hence the question mark in the issue title)
Use the following checklist to verify that API guide refactoring for each service. If you have questions, open a docs-common issue.
Do the QE check against the PR submitted to the master repo. Ask the person who did the refactoring to make you a collaborator on their fork in case you want to submit a PR to correct something.
When you build the refactored Sphinx project, use the make clean html
command to build chunked content.
conf.py
to make sure it has the updates from theUse the following checklist to guide and track the refactoring work for
each Developer Guide. If you have questions, open a docs-common issue.
When you build the refactored Sphinx project, use the make clean html
command to build chunked content. Before you begin refactoring, review the restructured text fixes.
Important: If the project contains additional source files or content significantly
different than the template, add a link to the source in Issue #62 in the docs-common repo.
Refactoring the API guides gives us a chance to make our RST source files comply with coding best practices. You can make the following changes when you are refactoring, or make the updates in a separate effort.
====
Test
====
=
~
-
^
In the same file, the header levels must be in sequential order. If they aren't, you get the following error when you run the Sphinx build: SEVERE/4) Title level inconsistent
.
Tip: If you are using the Atom editor, you can configure the soft wrap feature to reflow text
to 79 characters with a keybinding:
Note: Don't worry about the line length in code samples or tables for now.
conf.py
)## -- General configuration
line with the first 32 lines fromconf.py
in the API Guide template.deconst-serial
to build chunked html.builder = 'deconst-serial'
#builder = 'deconst-single
extlinks
library matches the one in conf.py
template.sphinx-rtd-template
to improve template for local builds.conf.py
template.Tip: To catch errors inline, configure Atom for Python.
After you complete the conf.py
updates, run the Sphinx build (make clean html
) to test that the build still works: make clean html
. Resolve any errors.
Note: If the Sphinx build doesn't run, follow the build from source instructions to install the required dependencies.
When you refactor the content in the overview
source files, you relocate the content and delete the overview
folder and files.
additional-resources.rst
,service-updates.rst
overview/index.rst
to the beginning of the main index.rst
file so that the API description is the first information in the API Guide.overview
folder to the root directory, and either integrate the content into another topic, or add the file in the index.rst
toctree where it makes sense.overview
folder.index.rst
toctree directive:
overview/index.rst
.additional-resources
and service-updates
after the release-notes
fileAfter you complete the overview
updates, run the local Sphinx build. Resolve any errors. Then, run the following command to review the local build output to verify that the API description, Additional resources and Service updates content renders correctly: open _build/html/index.html
For the Getting Started section, use the following instructions to refactor the common content and the product-specific Getting Started content.
Copy the common-gs
folder with the [API Guide template files].(https://github.com/rackerlabs/docs-common/tree/master/api-guide-template/common-gs)
View the diff of the new content against your existing content.
If you have any content that's not included in the common content, determine whether it
needs to be added to the template. If not, then put the content in a different location so
that the common content is the same across all API Guides. If necessary, open a
docs-common issue issue
to update the template or determine how to handle the custom content. All common-gs
content must be the same.
The changes made to the common-gs content include the following:
auth-using-curl.rst
to move everything up one level.get-credentials.rst
topic at the H2 level.concepts.rst
file from the root directory to the getting-started
folder.authentication.rst
to append Identity endpoint information at end of last paragraph. See authentication template.send-request-ovw.rst
to change intro sentence to refer to section andindex.rst
(See template.)
getting-started.rst
to thegetting-started/index.rst
.toctree
specification:get-credentials-include
file at the top of the list.prerequisites
topic.concepts.rst
after authentication.rst
topic.After you complete the Getting Started updates, rebuild the Sphinx project. Resolve any errors. Then, review the local build output to verify that the content renders correcctly and that it matches the Getting started template.
The Developer Guide refactoring moves the content from the Developer Guide introduction to the main index.rst
file.
index.rst
updates:index.rst
intro before the paragraph with links to the sections of the API documentation. See root index.rst template.developer-guide
developer-guide.rst
file from the root directoryAfter you complete the Developer Guide updates, rebuild the Sphinx project. Resolve any errors. Then, preview the local build output to verify that the Developer Guide section was removed.
When you refactor the General API section, the main changes are removing the authentication
topic and adjusting the heading levels. You'll also need to change some common file names and content to match the common content in the API Guide template. Some of these changes are included in the instructions, but there are too many to document in detail. Be careful when you make these changes, some projects have custom information that differs from other projects.
Important: If you have common files in your source that are not in the template directory or significantly deviate from the template source file, add a link to the Github source for that file to the General API info source file issue. This list will help us review and improve the General API Info content and determine whether it needs to be included in the API template.
index.rst
heading level to=======================
General API information
=======================
general-api-info/index.rst
to append a reference to the Getting Started authentication section. (See General API info index.rst #template.)general-api-info
directory.service-access-endpoints.rst
to service-access.rst
and match content to template version.After you complete the Getting Started updates, rebuild the Sphinx project. Resolve any errors, Then, review the local build output to verify that the content renders correctly and that it matches the General API information template.
When you refactor the API reference section, the main changes are relocating the api-reference heading to api-reference/index.rst
topic and adjusting the heading levels in the methods section.
api-operations
folder to api-reference
exclude_pattern
configuration in conf.py
with the new name.api-reference/index.rst
to follow templateapi-reference.rst
in the root directory to make sure it doesn't have any additionalapi-reference/index.rst
file. If no extra content, delete the file. If additional content is included and still needed, move it to the index.rst
file.index.rst
with new path to api-reference/index.rst
.After you complete these updates, rebuild the Sphinx project. Resolve any errors. Then, review the local build output to verify that the content renders correctly and that it matches the API Reference API reference template.
When you refactor the Release notes section, the main change is relocating the Release notes heading and introduction to release-notes/index.rst
, moving the release note topics to a sub-folder, and including all release notes topic in index.rst. You also need to add the new release-notes
folder to the exclude_patterns
specification in the Sphinx configuration file, conf.py
.
release-notes.rst
to release-notes
folder and rename to index.rst
.releases
sub-folder in the release-notes
directory.releases
folder.release-notes/index.rst
to include all release files... include::
directive.._release-notes-collection:
.release-notes/index.rst
to include all release files.. include::
directive. See template.index.rst
updates
refid
= release-notes-collection
.release-notes/index
exclude_patterns
specification in the Sphinx configuration file conf.py
torelease-notes/releases
pathr.After you complete the updates, rebuild the Sphinx project. Resolve any errors. Then, review the local build output to verify that the content renders correctly and that it matches the API Guide Release notes template.
Many of the refactoring changes in the root index.rst
file were completed when you refactored earlier section. These instructions provide a summary of the changes so you can verify them.
release-notes-collection
toctree
directive to follow this pattern: Product name v# <https://developer.rackspace.com/docs/cloud-load-balancers/v1/>
getting-started/index
general-api-info/index
api-reference/index
release-notes/index
service-updates
additional-resources
copyright
Changes include:
additional-resources.rst
service-updates.rst
Note: If your project contains additional source files not included in this list, add them to Issue #62 in the docs-common repo. Include them in the content architecture where it makes sense. IA team can review.
After you complete the refactoring work, complete the following steps to submit the changes for review:
docs-singlepage.html
to user-guide.html
.See the markup and comments in the attached Word doc for my suggested edits for the release notes. Please let me know if you have any questions. Thanks!
The documentation for Create or Update Object Metadata mentions the prefix X-Remove-Object-Meta-
. The description of this prefix is misleading.
The POST command to set metadata clears all metadata which is not explicitly set in the request. Headers with the prefix X-Remove-Object-Meta-
do not change this behavior, whether or not a value is assigned for the header. The description of X-Remove-Object-Meta-
could be completely removed from the document, leading the user to the more accurate alert which appears later on the page.
the current standard doc structure has top level dir with your product name. within that is (at least) a dir api-docs. Under that live all the RST files and dirs like conf.py, developerguide.rst and so on. Cloud Files has the old structure with rst/dev-guide.
Also the methods are not in one methods dir and there are two separate index files for operations, rather than one in the api-operations directory.
developer-guide
from the route configured for the content.
Update the nexus-control configuration file as shown in the following example:
Original: "/docs/cloud-load-balancers/v1/": "https://github.com/rackerlabs/docs-cloud-load-balancers/v1/developer-guide",
Updated:``"/docs/cloud-load-balancers/v1/": "https://github.com/rackerlabs/docs-cloud-load-balancers/v1/",
Notes:
The value on the left is the path to deploy content. The value to the right of the :
is the unique
content ID for the Sphinx project. The content ID must match the "contentIDBase"
value in the
_deconst.json
file in the documentation source directory. See Configure development and production builds for Sphinx projects.
Edit the rewrites file to add a redirect rule for the original URL as shown in the following example:
{
"description": "Redirect load balancers developer-guide URL",
"from": "^\\/docs\\/cloud-load-balancers\\/v1\\/developer-guide\\/(.*?)",
"to": "/docs/cloud-load-balancers/v1/$1",
"rewrite": false,
"status": 301
},
Use a json linter to verify that the JSON syntax is correct.
https:\\developer.rackspace.com\docs\<updated-path>
Note: Nexus-control changes take longer to deploy than content changes. You can check the nexus-control version information to determine whether the commit has been deployed.
Update the menu so that it matches the Load Balancers v1 example shown in the following figure:
Important: Don't commit the landing page updates until you have verified that the content has been deployed to the new URL.
Some menus might be slightly different if the product doesn't have an SDK Quickstart, or if it has additional documentation. If you have questions about the menu content or order, open an issue.
From storageops slack channel on 7/13:
David Goetz
5:06 PM rich0261: i think you can delete them now (as of like 2 years ago π ) to get them out of the listings
Sean Embry
5:08 PM I tried that but I get a 405
David Goetz
5:09 PM you have to send some header. one sec
5:09 sean4747: try sending a DELETE with a "x-remove-cdn-container: tβ header
Sean Embry
5:10 PM OK
5:10 You sir, simply rock and roll. That did it.
@david.goetz: I will also document DELETE with a "x-remove-cdn-container: β header unless you think I shouldn't (in the API docs at developer.rackspace.com).
David Goetz
10:41 AM catherine: that would be cool. just remember its just a DELETE to the cdn management API
I am working on creating a temporary URL to access our files using the API. I have read through this section numerous time: https://developer.rackspace.com/docs/cloud-files/quickstart/#get-object
I am hung up on the the line: bin/swift-temp-url GET 3600 $ENDPOINT/{containerName}/{objectName} {arbitraryKey}
Above it the comments say: "Create the temp_url_sig and temp_url query parameter values. OpenStack Object Storage provides the swift-temp-url script that auto-generates
the temp_url_sig and temp_url_expires query parameters. For example, you might run this command:"
What is the bin/swift-temp-url
bit? I am assuming the last part starting with $ENDPOINT is the URL we hit with the GET request. And is the 3600 the port we are supposed to be using?
Not sure if this is the intent, but the text says PUT command but the example has a POST:
http://staging.developer.rackspace.com/docs-cloud-files/#account-to-account-copy
Then based on the formatting I'm not sure if the numbered list is a continuation of the copy above or if it's meant to be its own list and should start over at 1? Here's a screenshot in case it helps to see in context.
Hi,
Could you please add license for this project.
Thanks
Submitted by Regan Murley:
We were reviewing some of the CF docs and found what looks like a typo or I feel this is at least rather ambiguous if someone is skipping around to different sections using the anchors rather than reading every paragraph:
Has the following text:
Before a container can be CDN-enabled, it must exist in the storage system. To CDN-enable the container, perform a PUT request against it using the publicURL noted in the service catalog for Cloud Files during authentication, and set the X-CDN-Enabled header to True.
Which should probably read:
Before a container can be CDN-enabled, it must exist in the storage system. To CDN-enable the container, perform a PUT request against it using the publicURL noted in the service catalog for cloudFilesCDN during authentication, and set the X-CDN-Enabled header to True.
Both cloud files and cloud files CDN endpoints have a "publicURL" value and it's easy to confuse the two. The other sections have it listed more like how we would expect it to read:
https://developer.rackspace.com/docs/cloud-files/v1/developer-guide/#list-cdn-enabled-containers
From: Rackspace Hosting [email protected]
Date: Thursday, April 28, 2016 at 1:05 PM
To: Andrew Hale [email protected]
Cc: "[email protected]" [email protected]
Subject: Re: Cloudfiles docs curl examples
Thanks Andrew. I can certainly add a note that they don't work. Do you know if it applies to all curl examples in the cf API docs or a specific set of them?
Do you have any idea if we can get them to work with Windows?
Can you point me to the note that you saw?
I will open an issue in the repo and will send you a link to it.
Thank you! ( I think :-) )
Catherine
Sent from my iPhone - typos may not be my own
On Apr 28, 2016, at 12:51 PM, Andrew Hale [email protected] wrote:
Hi Catherine,
Just seen a report that the example auth curl commands in the docs donβt work under Windows. Iβm not sure if this is something we want to note somewhere orβ¦
Cheers,
Andrew
[18:33:31] can anyone confirm that the cURL call to the Rackspace Identity API is correct on this page. https://developer.rackspace.com/docs/cloud-files/v1/developer-guide/
[18:39:02] yeah that works for me geggleto , substituting the username and apikey values for eal ones
[18:39:14] hmmm
[18:39:22] I am getting a bade request body
[18:39:27] but the JSON body is valid
[18:39:42] {"badRequest":{"code":400,"message":"Invalid json request body"}}
[18:39:59] curl https://identity.api.rackspacecloud.com/v2.0/tokens -X POST -d '{"auth":{"RAX-KSKEY:apiKeyCredentials":{"username":"aaa","apiKey":"aaa"}}}' -H "Content-type: application/json"
[18:40:45] yeah im just doing
[18:40:46] curl https://identity.api.rackspacecloud.com/v2.0/tokens -X POST -d '{"auth":{"RAX-KSKEY:apiKeyCredentials":{"username":"ahale","apiKey":"blabla"}}}' -H "Content-type: application/json"
[18:41:53] idk, double check your " and ' are really those chars ?
[18:44:11] .... ok
[18:44:14] works on linux
[18:44:18] does not work on windows
[18:44:20] what the hell
[18:44:22] oO
[18:44:50] literally copied and pasted what i had in my terminal into putty
[18:44:51] lol
[18:46:53] windows isn't sending 10 bytes ;
[18:49:02] loading it from a file fixed it. thanks ahale
[18:49:26] ah cool - no worries, didn't really do much :)
[18:49:42] thanks for report and kindafix though - gonna let our docs team know
Hey folks,
I was going to initiate a pull request for this one, but I'm not sure of what the information should be reflected, since some I found to be missing from the github repo as well as in the live API docs.
If we look at the creating-large-objects.rst section of the Cloud Files API docs, we can see that in the section proceeding 'Example: Upload a segment of a large object: HTTP request'. Many of the output examples are showing single letter like 'w' , or 's', this strikes me as something that is not intended.
I believe that this may have been like this for a while. Please would you be so kind to help me revert a previous version of this that had the correct output for those sections?
Cheers &
Best wishes,
Adam
Form storageops slack channel on 7/13/2016:
Catherine Richardson
10:37 AM @hurricanerix: @ahale I see a doc change from yesterday for
https://developer.rackspace.com/docs/cloud-files/v1/developer-guide/#list-cdn-enabled-containers. I'll change it to say that it list any containers that are currently or have ever been CDN-enabled.
https://developer.rackspace.com/docs/cloud-files/v1/use-cases/public-access-to-your-cloud-files-account/#create-the-tempurl has a Python2 code example.
Since Python2 is EOL after 2020, we recommend a Python3 code example. Not perfect by any means, but as a start:
method = method.upper()
base_url, object_path = object_url.split('/v1/')
object_path = '/v1/' + object_path
# print object_url
hmac_body = '%s\n%s\n%s' % (method, expires, object_path)
temp_url_key_bytes = bytes(temp_url_key , 'latin-1')
hmac_body_bytes = bytes(hmac_body, 'latin-1')
temp_url_sig = hmac.new(temp_url_key_bytes, hmac_body_bytes, sha256).hexdigest()
s = '{object_url}?temp_url_sig={temp_url_sig}&temp_url_expires={expires}'
temp_url = s.format(object_url=object_url, temp_url_sig=temp_url_sig, expires=expires)
Missing link in http://staging.developer.rackspace.com/docs-cloud-files/#create-or-update-container-metadata
Also I'm not sure about the spacing going on there, so take a look. π :)
From email: 3/14/2017
Apologies if I reached the incorrect team. I had a customer that referenced one of our API documentation page that had the older version on where to find the API key:
https://developer.rackspace.com/docs/cloud-files/v1/getting-started/get-credentials-include/
Reference ticket:
https://encore.rackspace.com/ticketing/account/10040922/ticket/170313-dfw-0001270
Since then the API key is now under 'My Profile & Settings'. I've clicked through the first 4 API documentation page and all of the images are referencing the old location so I'm guessing all of the API doc pages will have to be updated.
Cheers,
Angela Boulineau
Consistent with swift#1354312, we don't document allowed_headers
, and the impact that has on API behavior.
get-get-object-content-and-metadata-v1-account-container-object.rst, for example, only describes headers that have semantic relevance to (rack)swift, but doesn't describe the relationship between request headers, allowed headers, and the headers that get returned in an object response.
What would be the best way to organize this?
Maybe just a copy/paste issue, but this page refers to "Cloud Block Storage" in the opening sentence, which refers to cinder (block storage), not swift (object storage).
I think you don't need the double back-tick in the "By using DELETE
in the API" heading here:
http://staging.developer.rackspace.com/docs-cloud-files/#delete-cdn-enabled-object
See #84.
go back and add in some decent examples.
#84 has a reference to this from @dpgoetz comment:
just scanning over it there is a problem here: https://github.com/rackerlabs/docs-cloud-files/blob/5451cce9e2c623015c701ac676153966608ef0ca/api-docs/use-cases/additional-storage/creating-large-objects.rst#deleting-a-large-object too. i don't have time to fix this right now so i guess we can make a Jira for this for one of the dev to look over? or just keep this issue open? or any pull requests will also be reviewed :)
RST has a "definition list" function that looks like this:
token ID
The token ID value is required to confirm your identity each
time you access the service. Include it in the ``X-Auth-Token`` header
for each API request.
The ``expires`` attribute indicates the date and time that the token will
expire, unless it is revoked before the expiration. To get a new token,
submit another authentication request. For more information, see
:rax-devdocs:`Manage authentication tokens
<cloud-identity/v2/getting-started/manage-auth-tokens>`.
tenant ID
The tenant ID provides your account number. For most Rackspace Cloud
service APIs, the tenant ID is appended to the API endpoint in the service
catalog automatically. For Rackspace Cloud services, the tenant ID has the
same value as the tenant name.
endpoint
The API endpoint provides the URL that you use to access the API service.
For guidance on choosing an endpoint, see
:ref:`Service access <service-access>`.
For Purge an object from a CDN-enabled container - the Purge an Object title for the command response is formatting like this: Purge an object from a CDN-enabled container response*
Should be bold and remove the *
We need to add a page that has know apps, plugins, extensions, etc.
A customer reported that this example does not work, could you test it? Perhaps they took it out of context but as it was reported, I want to make sure we test.
curl -i -X PUT $API_ENDPOINT/v1/$TENANT_ID/yourContainerName/yourObjectName
-H "X-Auth-Token: $AUTH_TOKEN"
-H "Content-Type: image/jpeg"
-H "Content-Length: 0"
Link: https://developer.rackspace.com/docs/cloud-files/v1/developer-guide/#uploading-an-object
The example has X-Account-Meta-Subject so watchout for the under bar instead of dash. π
SHA1 is considered cryptographically weak. Cloud Files TempURL supports SHA256 as well, but this isn't mentioned anywhere in the docs.
Looking at https://github.com/rackerlabs/docs-cloud-files/blob/6008034ccc9fa8d38d6477a431821c9e84a0c97d/rst/dev-guide/storage-api-operations/methods/get-show-container-details-and-list-objects-v1-account-container.rst
and
https://github.com/rackerlabs/docs-cloud-files/blob/7569ab3271866919fbfbce02d38ddb10c611b955/src/wadl/rax-cloudFiles-api-v1-rst.wadl
and http://staging.developer.rackspace.com/docs-cloud-files/#show-container-details-and-list-objects
I see that the WADL has for example reddelicious on a line by itself, but then the RST example does not have the correct hard return under "Controlling a Large List of Objects" so you'll probably need to figure out the formatting problem there (or fix it in the RST).
@rackerlabs/bureaucrats
Hello admins,
The Information Development Team is migrating all documentation repositories published using Deconst to a new publishing platform stack.
This change is to improve functionality, build times, and longevity of the platform.
Things that won't change:
Changes to expect:
The migration has already started and we are unable to provide the exact date that this repo is to be migrated.
If you have questions or concerns please reach out to myself or Robb Romans.
Thanks, William Loy
Does cloud files support .Net Core 2.0?
A declarative, efficient, and flexible JavaScript library for building user interfaces.
π Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. πππ
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google β€οΈ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.