kubesphere / community Goto Github PK
View Code? Open in Web Editor NEWKubeSphere Community
License: Apache License 2.0
KubeSphere Community
License: Apache License 2.0
We need to do a pre-release, which is used to test the process. At the same time, a pre-release will provide a checklist and guideline for the next release version 3.1.0.
Thanks for the kubesphere-kubevirt sharing in yesterday noon, it's wonderful and helpful.
We wonder to know wheather the kubesphere-kubevirt support windows vm,
or may you provide a sample of kubevirt windows vm pod ?
Thanks a lot.
As metering will be intergrated into KubeSphere as an independent module within toolbox. Metering is based on Prometheus API and provides user with consumption information about the cluster resource. So do we need setup a new SIG for metering or classify it into some other existing SIG?
centos 7.7
kubesphere 2.1.1
docker 19.03.8
`FROM golang:1.12 as controller-manager-builder
COPY / /go/src/kubesphere.io/kubesphere
WORKDIR /go/src/kubesphere.io/kubesphere
RUN CGO_ENABLED=0 GO111MODULE=on GOOS=linux GOARCH=amd64 GOFLAGS=-mod=vendor go build --ldflags "-extldflags -static" -o controller-manager ./cmd/controller-manager/
FROM alpine:3.7
_RUN echo -e "https://mirrors.ustc.edu.cn/alpine/latest-stable/main\nhttps://mirrors.ustc.edu.cn/alpine/latest-stable/community" > /etc/apk/repositories && _
apk add --update ca-certificates && update-ca-certificates
COPY --from=controller-manager-builder /go/src/kubesphere.io/kubesphere/controller-manager /usr/local/bin/
CMD controller-manager`
docker build -f build/ks-controller-manager/Dockerfile -t harbor.xx.net.cn:8443/ks-controller-manager:2.1.1 .
Sending build context to Docker daemon 141.6MB
Step 1/8 : FROM golang:1.12 as controller-manager-builder
---> ffcaee6f7d8b
Step 2/8 : COPY / /go/src/kubesphere.io/kubesphere
---> ce4ec5aec998
Step 3/8 : WORKDIR /go/src/kubesphere.io/kubesphere
---> Running in 653b62e681e8
Removing intermediate container 653b62e681e8
---> fd87a5dbab82
Step 4/8 : RUN CGO_ENABLED=0 GO111MODULE=on GOOS=linux GOARCH=amd64 GOFLAGS=-mod=vendor go build --ldflags "-extldflags -static" -o controller-manager ./cmd/controller-manager/
---> Running in a9dda2856eed
Removing intermediate container a9dda2856eed
---> 88b836d3e8e7
Step 5/8 : FROM alpine:3.7
---> 6d1ef012b567
Step 6/8 : RUN echo -e "https://mirrors.ustc.edu.cn/alpine/latest-stable/main\nhttps://mirrors.ustc.edu.cn/alpine/latest-stable/community" > /etc/apk/repositories && apk add --update ca-certificates && update-ca-certificates
---> Running in 4e038f46cf66
fetch https://mirrors.ustc.edu.cn/alpine/latest-stable/main/x86_64/APKINDEX.tar.gz
fetch https://mirrors.ustc.edu.cn/alpine/latest-stable/community/x86_64/APKINDEX.tar.gz
(1/2) Installing libcrypto1.1 (1.1.1g-r0)
**ERROR: libcrypto1.1-1.1.1g-r0: trying to overwrite etc/ssl/openssl.cnf owned by libressl2.6-libcrypto-2.6.5-r0.**
(2/2) Installing ca-certificates (20191127-r1)
Executing busybox-1.27.2-r11.trigger
Executing ca-certificates-20191127-r1.trigger
1 error; 8 MiB in 15 packages
**The command '/bin/sh -c echo -e "https://mirrors.ustc.edu.cn/alpine/latest-stable/main\nhttps://mirrors.ustc.edu.cn/alpine/latest-stable/community" > /etc/apk/repositories && apk add --update ca-certificates && update-ca-certificates' returned a non-zero code: 1**
Beijing Time: Thursday at 16:30-17:30 Nov. 5, 2020
Agenda:
devops-deploy.yaml , take the namespace kubesphere-sample-dev as an example.
---
apiVersion: v1
kind: ServiceAccount
metadata:
name: devops-deploy
namespace: kubesphere-sample-dev
---
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
name: devops-deploy-role
namespace: kubesphere-sample-dev
rules:
- apiGroups:
- "*"
resources:
- "*"
verbs:
- "*"
---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
name: devops-deploy-rolebinding
namespace: kubesphere-sample-dev
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: Role
name: devops-deploy-role
subjects:
- kind: ServiceAccount
name: devops-deploy
namespace: kubesphere-sample-dev
kubectl apply -f devops-deploy.yaml
export TOKEN_NAME=$(kubectl -n kubesphere-sample-dev get sa devops-deploy -o jsonpath='{.secrets[0].name}')
kubectl -n kubesphere-sample-dev get secret "${TOKEN_NAME}" -o jsonpath='{.data.token}' | base64 -d
xxxxxxxx...
This kubecofig is incorrect. You should replace
user:
client-certificate-data: LS0tLS1CRUdJTiBDRVJUSUZJQ0FUR...
client-key-data: LS0tLS1CRUdJTiBQUk...
by
user:
token: xxxxxxxx...
save to sig-devops/examples/how-to-add-s2i-php-container.md
/documentation
Here's comparison list among
https://github.com/nginxinc/kubernetes-ingress/blob/master/docs/nginx-ingress-controllers.md
here's the helm chart: https://github.com/nginxinc/helm-charts
and there's the related exporter: https://github.com/nginxinc/nginx-prometheus-exporter
we need to evaluate the possibility of integrating Nginx ingress solution and related effort.
As mentioned in the title. See also the details from here
/cc @kubesphere/toc
The step of set up KubeSphere core's configuration is too vague, the file kubesphere.yaml
and the directory /etc/kubesphere
are never mentioned in the context, how to set up the configuration?
There are some great community events and conferences that are open to CFP this month, we can call for our maintainers, partners, and users to submit the proposals to these events and conferences. Please help us to organize them in the community.
Welcome to the discussion, Current installation instructions for alerting module:
Host ks cannot enter the member ks.
导入了一个集群,但是鼠标指向集群,点击详细的时候,弹出"会话超时或此账户在其它地方登录,请重新登录"。
We need a list to tell everyone how many code repos in the org, what is the purpose of each code base, and then delete redundant code repos, and new code repo created need to be maintained.
maxPods: 110
rotateCertificates: true
kubeReserved:
cpu: 200m
memory: 250Mi
systemReserved:
cpu: 200m
memory: 250Mi
evictionHard:
memory.available: 5%
evictionSoft:
memory.available: 10%
evictionSoftGracePeriod:
memory.available: 2m
evictionMaxPodGracePeriod: 120
evictionPressureTransitionPeriod: 30s
DevOps consists of a pipeline and s2i, including many repositories. SIG-DevOps can't display the progress and status of work Intuitively.
SIG-DevOps
or DevOps Team
In progress
To do
Done
Refused
Delay
to show the different stages@kubesphere/sig-devops
Please refer to the sig-obervability doc
Artifact Hub is a web-based application that enables finding, installing, and publishing packages and configurations for CNCF projects. There is a KubeSphere Helm Chart in the ks-installer repository. It would be a good channel for people to find KubeSphere.
https://artifacthub.io/
arvin.he@vk ~/go/src/kubesphere.io/kubesphere (master●●)$ telepresence --namespace kubesphere-system --swap-deployment ks-apiserver --expose 9090:9090 --run go run ./cmd/ks-apiserver/apiserver.go
T: Starting proxy with method 'vpn-tcp', which has the following limitations: All processes are affected, only one telepresence can run per machine, and you
T: can't use other VPNs. You may need to add cloud hosts and headless services with --also-proxy. For a full list of method limitations see
T: https://telepresence.io/reference/methods.html
T: Volumes are rooted at $TELEPRESENCE_ROOT. See https://telepresence.io/howto/volumes.html for details.
T: Starting network proxy to cluster by swapping out Deployment ks-apiserver with a proxy
T: Forwarding remote port 9090 to local port 9090.
T: Connected. Flushing DNS cache.
T: Setup complete. Launching your command.
Error: factory is not able to fill the pool: LDAP Result Code 200 "Network Error": dial tcp 10.233.71.55:389: i/o timeout
Usage:
ks-apiserver [flags]
Flags:
--access-token-max-age duration AccessTokenMaxAgeSeconds control the lifetime of access tokens, 0 means no expiration. (default 24h0m0s)
--add-dir-header If true, adds the file directory to the header
--agent-image string This field is used when generating deployment yaml for agent. (default "kubesphere/tower:v1.0")
--alsologtostderr log to standard error as well as files
--auditing-elasticsearch-host string Elasticsearch service host. KubeSphere is using elastic as auditing store, if this filed left blank, KubeSphere will use kubernetes builtin event API instead, and the following elastic search options will be ignored.
--auditing-elasticsearch-version string Elasticsearch major version, e.g. 5/6/7, if left blank, will detect automatically.Currently, minimum supported version is 5.x
--auditing-enabled Enable auditing component or not.
--auditing-index-prefix string Index name prefix. KubeSphere will retrieve auditing against indices matching the prefix. (default "ks-logstash-auditing")
--auditing-webhook-url string Auditing wehook url
--authenticate-max-retries int
--authenticate-rate-limiter-duration duration (default 30m0s)
--authenticate-rate-limiter-max-retries int (default 5)
--authorization string Authorization setting, allowed values: AlwaysDeny, AlwaysAllow, RBAC. (default "RBAC")
--bind-address string server bind address (default "0.0.0.0")
--debug Don't enable this if you don't know what it means.
--elasticsearch-host string Elasticsearch logging service host. KubeSphere is using elastic as log store, if this filed left blank, KubeSphere will use kubernetes builtin log API instead, and the following elastic search options will be ignored. (default "http://elasticsearch-logging-data.kubesphere-logging-system.svc.cluster.local:9200")
--elasticsearch-version string Elasticsearch major version, e.g. 5/6/7, if left blank, will detect automatically.Currently, minimum supported version is 5.x
--enable-network-policy This field instructs KubeSphere to enable network policy or not.
-h, --help help for ks-apiserver
--index-prefix string Index name prefix. KubeSphere will retrieve logs against indices matching the prefix. (default "ks-logstash-log")
--insecure-port int insecure port number (default 9090)
--istio-pilot-host string istio pilot discovery service url
--jaeger-query-host string jaeger query service url
--jenkins-host string Jenkins service host address. If left blank, means Jenkins is unnecessary. (default "http://ks-jenkins.kubesphere-devops-system.svc/")
--jenkins-max-connections int Maximum allowed connections to Jenkins. (default 100)
--jenkins-password string Password for access to Jenkins service, used pair with username. (default "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJlbWFpbCI6ImFkbWluQGt1YmVzcGhlcmUuaW8iLCJleHAiOjE4MTYyMzkwMjIsInVzZXJuYW1lIjoiYWRtaW4ifQ.okmNepQvZkBRe1M8z2HAWRN0AVj9ooVu79IafHKCjZI")
--jenkins-username string Username for access to Jenkins service. Leave it blank if there isn't any. (default "admin")
--jwt-secret string Secret to sign jwt token, must not be empty.
--kubeconfig string Path for kubernetes kubeconfig file, if left blank, will use in cluster way. (default "/Users/arvin.he/.kube/config")
--ldap-group-search-base string Ldap group search base. (default "ou=Groups,dc=kubesphere,dc=io")
--ldap-host string Ldap service host, if left blank, all of the following ldap options will be ignored and ldap will be disabled. (default "openldap.kubesphere-system.svc:389")
--ldap-manager-dn string Ldap manager account domain name. (default "cn=admin,dc=kubesphere,dc=io")
--ldap-manager-password string Ldap manager account password. (default "P@88w0rd")
--ldap-user-search-base string Ldap user search base. (default "ou=Users,dc=kubesphere,dc=io")
--log-backtrace-at traceLocation when logging hits line file:N, emit a stack trace (default :0)
--log-dir string If non-empty, write log files in this directory
--log-file string If non-empty, use this log file
--log-file-max-size uint Defines the maximum size a log file can grow to. Unit is megabytes. If the value is 0, the maximum file size is unlimited. (default 1800)
--logtostderr log to standard error instead of files (default true)
--master string Used to generate kubeconfig for downloading, if not specified, will use host in kubeconfig. (default "https://172.16.98.150:6443")
--multiple-clusters This field instructs KubeSphere to enter multiple-cluster mode or not.
--multiple-login Allow multiple login with the same account, disable means only one user can login at the same time.
--openpitrix-app-manager-endpoint string OpenPitrix app manager endpoint (default "openpitrix-app-manager.openpitrix-system.svc:9102")
--openpitrix-attachment-manager-endpoint string OpenPitrix attachment manager endpoint (default "openpitrix-attachment-manager.openpitrix-system.svc:9122")
--openpitrix-category-manager-endpoint string OpenPitrix category manager endpoint (default "openpitrix-category-manager.openpitrix-system.svc:9113")
--openpitrix-cluster-manager-endpoint string OpenPitrix cluster manager endpoint (default "openpitrix-cluster-manager.openpitrix-system.svc:9104")
--openpitrix-repo-indexer-endpoint string OpenPitrix repo indexer endpoint (default "openpitrix-repo-indexer.openpitrix-system.svc:9108")
--openpitrix-repo-manager-endpoint string OpenPitrix repo manager endpoint (default "openpitrix-repo-manager.openpitrix-system.svc:9101")
--openpitrix-runtime-manager-endpoint string OpenPitrix runtime manager endpoint (default "openpitrix-runtime-manager.openpitrix-system.svc:9103")
--prometheus-endpoint string Prometheus service endpoint which stores KubeSphere monitoring data, if left blank, will use builtin metrics-server as data source. (default "http://prometheus-k8s.kubesphere-monitoring-system.svc:9090")
--proxy-publish-address string Public address of tower, APIServer will use this field as proxy publish address. This field takes precedence over field proxy-publish-service. For example, http://139.198.121.121:8080.
--proxy-publish-service string Service name of tower. APIServer will use its ingress address as proxy publish address.For example, tower.kubesphere-system.svc.
--redis-db int
--redis-host string Redis connection URL. If left blank, means redis is unnecessary, redis will be disabled. (default "redis.kubesphere-system.svc")
--redis-password string
--redis-port int (default 6379)
--s3-access-key-id string access key of s2i s3 (default "openpitrixminioaccesskey")
--s3-bucket string bucket name of s2i s3 (default "s2i-binaries")
--s3-disable-SSL disable ssl (default true)
--s3-endpoint string Endpoint to access to s3 object storage service, if left blank, the following options will be ignored. (default "http://minio.kubesphere-system.svc:9000")
--s3-force-path-style force path style (default true)
--s3-region string Region of s3 that will access to, like us-east-1. (default "us-east-1")
--s3-secret-access-key string secret access key of s2i s3 (default "openpitrixminiosecretkey")
--s3-session-token string session token of s2i s3
--secure-port int secure port number
--servicemesh-prometheus-host string prometheus service for servicemesh
--skip-headers If true, avoid header prefixes in the log messages
--skip-log-headers If true, avoid headers when opening log files
--sonarqube-host string Sonarqube service address, if left empty, following sonarqube options will be ignored. (default "http://172.16.98.150:32297")
--sonarqube-token string Sonarqube service access token. (default "4e51de276f1fd0eb3a20b58e523d43ce76347302")
--stderrthreshold severity logs at or above this threshold go to stderr (default 2)
--tls-cert-file string tls cert file
--tls-private-key string tls private key
-v, --v Level number for the log level verbosity
--vmodule moduleSpec comma-separated list of pattern=N settings for file-filtered logging
2020/06/24 22:33:51 factory is not able to fill the pool: LDAP Result Code 200 "Network Error": dial tcp 10.233.71.55:389: i/o timeout
exit status 1
T: Your process exited with return code 1.
T: Exit cleanup in progress
T: Swapping Deployment ks-apiserver back to its original state
arvin.he@vk ~/go/src/kubesphere.io/kubesphere (master●●)$
kubesphere.yaml
is located below:
arvin.he@vk ~/go/src/kubesphere.io/kubesphere (master●●)$ ls
CONTRIBUTING.md OWNERS README_zh.md build coverage.txt go.mod install telepresence.log vendor
LICENSE PROJECT api cmd doc.go go.sum kubesphere.yaml test
Makefile README.md bin config docs hack pkg tools
kubesphere.yaml
content as below:
kubernetes:
kubeconfig: "/Users/arvin.he/.kube/config"
master: https://172.16.98.150:6443
qps: 1e+06
burst: 1000000
ldap:
host: openldap.kubesphere-system.svc:389
managerDN: cn=admin,dc=kubesphere,dc=io
managerPassword: P@88w0rd
userSearchBase: ou=Users,dc=kubesphere,dc=io
groupSearchBase: ou=Groups,dc=kubesphere,dc=io
redis:
host: redis.kubesphere-system.svc
port: 6379
password: ""
db: 0
s3:
endpoint: http://minio.kubesphere-system.svc:9000
region: us-east-1
disableSSL: true
forcePathStyle: true
accessKeyID: openpitrixminioaccesskey
secretAccessKey: openpitrixminiosecretkey
bucket: s2i-binaries
mysql:
host: mysql.kubesphere-system.svc:3306
username: root
password: password
maxIdleConnections: 100
maxOpenConnections: 100
maxConnectionLifeTime: 10s
devops:
host: http://ks-jenkins.kubesphere-devops-system.svc/
username: admin
password: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJlbWFpbCI6ImFkbWluQGt1YmVzcGhlcmUuaW8iLCJleHAiOjE4MTYyMzkwMjIsInVzZXJuYW1lIjoiYWRtaW4ifQ.okmNepQvZkBRe1M8z2HAWRN0AVj9ooVu79IafHKCjZI
maxConnections: 100
sonarQube:
host: http://172.16.98.150:32297
token: 4e51de276f1fd0eb3a20b58e523d43ce76347302
openpitrix:
runtimeManagerEndpoint: "openpitrix-runtime-manager.openpitrix-system.svc:9103"
clusterManagerEndpoint: "openpitrix-cluster-manager.openpitrix-system.svc:9104"
repoManagerEndpoint: "openpitrix-repo-manager.openpitrix-system.svc:9101"
appManagerEndpoint: "openpitrix-app-manager.openpitrix-system.svc:9102"
categoryManagerEndpoint: "openpitrix-category-manager.openpitrix-system.svc:9113"
attachmentManagerEndpoint: "openpitrix-attachment-manager.openpitrix-system.svc:9122"
repoIndexerEndpoint: "openpitrix-repo-indexer.openpitrix-system.svc:9108"
monitoring:
endpoint: http://prometheus-k8s.kubesphere-monitoring-system.svc:9090
secondaryEndpoint: http://prometheus-k8s-system.kubesphere-monitoring-system.svc:9090
logging:
host: http://elasticsearch-logging-data.kubesphere-logging-system.svc.cluster.local:9200
indexPrefix: ks-logstash-log
alerting:
endpoint: http://alerting.kubesphere-alerting-system.svc
notification:
endpoint: http://notification.kubesphere-alerting-system.svc
Test Telepresence with KubeSphere apigateway:
arvin.he@vk ~/go/src/kubesphere.io/kubesphere (master●●)$ curl http://ks-apigateway.kubesphere-system
401 Unauthorized
We are looking for someone who is interested in helping us to test LitmusChaos on KubeSphere and prepare the guide. If you would like to take it up, leave your comments below : )
As there are a lot of open source projects in the cnf land scape using katacoda tutorials to make it easier for the community to get started with the tool and learn more about it, it will be great to have tutorials for kubesphere too to test different scenarios and get more familiar with it.
useful links :
cannot visit the docs website.
https://kubesphere.io/zh/docs/faq/observability/byop/
We are going to add a new document for LitmusChaos on KubeSphere on LitmusChaos website, please assist us to test this scenario and write the document accordingly (It can be a Chinese version first).
For someone who wants to contribute, he is confused.
Everyone who enters the community, know how to contribute.
let me fix it
to this issue./lgtm
and /approve
to merge your code@FeynmanZhou
@zryfish
@LinuxSuRen
@shaowenchen
Google Summer of Code will be started from 30, Jan. We need to apply for it and investigate the prerequisites we need to prepare.
some others, like project quota...etc
As we are participating in the OSPP and we are looking for more students come to join us, we need to design a poster to include all key points of KubeSphere projects and community for OSPP. Then we will send it to a student and make it public in the university.
Ref: https://github.com/kubesphere/community/tree/master/sig-advocacy-and-outreach/summer-ospp
During the discussion phase, issues and pull requests are directly linked to individuals. This is unreasonable. All members of the SIG are responsible for the SIG.
All members of SIG will be notified. This will reduce the burden on individuals and speed up the processing of work. It will also avoid the impact that occurs when someone leaves the community.
Add syslog output to Fluentbit-operator: fluent/fluent-operator#49
kubesphere/kubekey#542
kubesphere/kubekey#544
kubesphere/kubekey#547
kubesphere/image-sync-config#7
@duanjiong @zheng1 Please refer to this format and provide the corresponding topic and outline for Porter, as well as its scenario with KubeSphere. See this example for details. Please also give an available register date for the CNCF webinar, how about 4th, November?
There are many features and components in KubeSphere, each component has a high learning curve. A clear division of labor allows the technical writers to deep dive into the specific domains and be more efficient. From my point of view, I've summarized these directions (domains) for our technical writers to choose from. If there is anything been missed, please add your comment below.
Mindmap: https://www.processon.com/view/link/600f7abe079129045d37d571#map
Let's schedule a meeting to discuss the division.
As we have many KubeSphere-related images, logos, icons, and files that need to be stored, it will be easy to find them if there is an independent git repo for artwork.
Example: cncf/artwork.
Community growth is very important for any community. Advocacy and outreach can dramatically help with that. And the key point is that it should not be done by one person or privately.
As far as I can see, there's a couple of forks are interested in this area.
As an open-source community, we should discuss everything as possible as we can. Discuss advocacy and outreach in an open way is reasonable. Setup this kind of SIG can gather much more great ideas and innovation.
Basically, anyone who is interested in the discussion around advocacy and outreach. No matter you're a software engineer, technical writer, or marketing, community growth needs you.
I guess these people might be the potential initial members:
https://github.com/kubesphere/community/tree/master/developer-guide/development#for-kubesphere-core-local-development-building
What does the second part mean about Use command make to build binary?
How to build KubeSphere local?
There are lots of archived repos under KubeSphere, they are no longer actively maintained. It may confuse people, and also it will slow Prow during ORG scan. Move them to kubesphere-retired.
/kind cleanup
Setup a roadmap between kata container and KubeSphere
We are going to set up KubeSphere Community Users Committee of Shanghai and Hangzhou.
About this committee, you can read the md to learn more information.
Besides, if you have any good idea, you can edit this md and add your thoughts.
As we mentioned last week, we expect every one of the community to contribute an English blog to us. These blogs will be published on the official website and some other media channels. You can write them based on your skilled part.
We suggest you to start with a couple of pain points regarding the current technical state, then elaborate on the solutions or capabilities provided by KubeSphere. Why
and How to
should be included in your blog.
BTW, we are pretty flexible about the type of content, length and style. A contributed blog doesn’t have to be 5,000 words of heavy teaching. It can be around 1000 words outlining a KubeSphere-related technical story, an introduction or a tutorial. Code snippets are fine.
The content should be writing in markdown, and the images should be stored in QingStor object storage, just paste the image URL into the content. This is an example blog you can reference the content framework.
You can draft a topic or your thought in this issue firstly, thus we can avoid the duplicated content. Others can also evaluate your topic or give you some inspiration. You can submit a PR to this repository when you finish the blog. We hope you can finish it before Apr, 13.
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.