openfaas / faas-swarm Goto Github PK
View Code? Open in Web Editor NEWOpenFaaS provider for Docker Swarm
Home Page: https://github.com/openfaas/faas
License: MIT License
OpenFaaS provider for Docker Swarm
Home Page: https://github.com/openfaas/faas
License: MIT License
we should move all our repos to Github Actions because of it's generous free-tier as we're not able to get enough builds out of the free credits that Travis provides.
Build and publish pipelines should work without any issue
We're running all our CI builds using Travis CI
Move to Github Actions
Hi,
I have written a few functions in openfaas. Some of those are not used very frequently. This morning I tried to send a request to a function that was not touched (HTTP request/build/deploy) for a few weeks.
The function never brought up.
Some facts that came from my investigation:
The docker service ps
command returns a shutdown state.
docker service inspect
returns a MaxAttempts of 5 in the RestartPolicy, which might be related or not.
In the meantime, as we are speaking about local environments, I have shut down my machine every night, which I suppose is affecting the issue one way or another.
Are any of those related? What about the read_timeout/write_timeout settings?
The function to recover as a reaction to the invoke/http request, of course with some expected delay.
Of course, it is all going back to normal if I do a build-deploy again from the faas-cli (new function with the same contents like the old one). But of course I would like this to happen without any manual intervention.
The function is not recovering from down state.
return {"hello": "world"}
would suffice.I understand this is a common concern, so I don't think this is a bug, rather a lack of my understanding or documentation.
So my questions are:
faas-cli version
): ___ _____ ____
/ _ \ _ __ ___ _ __ | ___|_ _ __ _/ ___|
| | | | '_ \ / _ \ '_ \| |_ / _` |/ _` \___ \
| |_| | |_) | __/ | | | _| (_| | (_| |___) |
\___/| .__/ \___|_| |_|_| \__,_|\__,_|____/
|_|
CLI:
commit: 73004c23e5a4d3fdb7352f953247473477477a64
version: 0.11.3
Gateway
uri: http://127.0.0.1:8080
version: 0.18.10
sha: 80b6976c106370a7081b2f8e9099a6ea9638e1f3
commit: Update Golang versions to 1.12
Provider
name: faas-swarm
orchestration: swarm
version: 0.8.2
sha: 47988f8ba284678f3eb86eb62f75f72bafeec4d9
Your faas-cli version (0.11.3) may be out of date. Version: 0.12.2 is now available on GitHub.
docker version
(e.g. Docker 17.0.05 ):Client: Docker Engine - Community
Version: 19.03.1
API version: 1.40
Go version: go1.12.5
Git commit: 74b1e89
Built: Thu Jul 25 21:21:05 2019
OS/Arch: linux/amd64
Experimental: false
Server: Docker Engine - Community
Engine:
Version: 19.03.1
API version: 1.40 (minimum version 1.12)
Go version: go1.12.5
Git commit: 74b1e89
Built: Thu Jul 25 21:19:41 2019
OS/Arch: linux/amd64
Experimental: false
containerd:
Version: 1.2.6
GitCommit: 894b81a4b802e4eb2a91d1ce216b8817763c29fb
runc:
Version: 1.0.0-rc8
GitCommit: 425e105d5a03fabd737a126ad93d62a9eeede87f
docker-init:
Version: 0.18.0
GitCommit: fec3683
Are you using Docker Swarm or Kubernetes (FaaS-netes)?
Docker Swarm
Operating System and version (e.g. Linux, Windows, MacOS):
Linux
Code example or link to GitHub repo or gist to reproduce problem:
N/A
Other diagnostic information / logs from troubleshooting guide
The service shows no logs.
Thanks,
P.
Per the security announcement https://groups.google.com/forum/#!topic/golang-announce/65QixT3tcmg we should update the docker build layers to at least Go 1.11.13
Because the docker build layers already use golang:1.11
we should only need to rebuild and tag a new release to ensure that it is using the latest 1.11.13 base image
openfaas/faas#1291
openfaas/templates#170
openfaas/faas-netes#494
openfaas/nats-queue-worker#66
openfaas/of-watchdog#78
https://github.com/openfaas-incubator/faas-idler/issues/32
openfaas/golang-http-template#28
openfaas-incubator/faas-federation#4
openfaas-incubator/vcenter-connector#27
openfaas-incubator/faas-memory#3
openfaas-incubator/faas-rancher#8
#56
openfaas/ingress-operator#10
https://github.com/openfaas-incubator/openfaas-operator/issues/87
This is the function configuration:
provider:
name: faas
gateway: http://127.0.0.1:8080
functions:
kafka-test:
lang: python
handler: ./kafka-test
image: kafka-test
annotations:
topic: faas-request
basic_auth: false
curl -X GET http://127.0.0.1:8080/system/function/kafka-test
should return
{
"name":"kafka-test",
"image":"kafka-test:latest",
"invocationCount":0,
"replicas":1,
"envProcess":"python index.py",
"availableReplicas":1,
"labels":{
"com.openfaas.function":"kafka-test",
"com.openfaas.uid":"92309200",
"function":"true"
},
"annotations":{
"topic":"faas-request"
}
}
but instead the annotations are prefixed:
"annotations":{
"com.openfaas.annotations.topic":"faas-request"
}
The bug is on reader.go#L95.
The prefix is not removed.
Found while testing pull #6
Follows #28
Some integration tests are good to have.
@ewilde Could you please have a look?
Should indicate readiness of function/container via availableReplicas
in the /system/function/ endpoint.
This should use techniques from #3 via @ericstoekl
This is set to 0
by default.
Take inspiration from #3 and either create a new piece of code targeted at querying a single service/function or update the existing code to query the additional information optionally and only for a single function.
All functions in the secrets handler for Docker Swarm should work as intended if they are in the code base.
The function updateSecret() in the secrets.go handler does not update secrests; it can't because Docker secrets are immutable. An unhelpful status 500 error is thrown when attempting to update a secret via the API gateway using curl -d '{"name":"secret-name","value":"test-edit-i"}' -X POST http://127.0.0.1:8080/system/secrets
.
./deploy_stack.sh -n
, which installs with basic auth disabledcurl -d '{"name":"secret-name","value":"test"}' -X POST http://127.0.0.0.1:8080/system/secrets
curl -d '{"name":"secret-name","value":"test-edit-i"}' -X POST -v http://127.0.0.1:8080/system/secrets
HTTP/1.1 500 Internal Server Error
is returned.I'm new to Docker and I had no idea that Docker secrets were immutable. Given that, I spent a day trying to figure out why the update part of my test in openfaas/certifier#22 was failing for Docker Swarm installation, but not for faas-netes. The error returned was a 500 error, which made me think it was some logic error on our side.
The code base in faas-swarm wasn't helpful, because the presence of updateSecret() makes it seem like updating was possible.
FaaS-CLI version ( Full output from: faas-cli version
):
N/A - I didn't use faas-cli for the secrets CRUD testing.
Docker version docker version
(e.g. Docker 17.0.05 ):
Docker engine version is 19.03.5.
Are you using Docker Swarm or Kubernetes (FaaS-netes)?
Docker Swarm
Operating System and version (e.g. Linux, Windows, MacOS):
MacOS Catalina
Link to your project or a code example to reproduce issue:
openfaas/certifier#22
With the merge of openfaas/faas-provider#11 we can replace the current FunctionProxy
implementation with the standardized proxy implementation from faas-provider
. This will ensure consistent proxy behavior among the official providers.
This requires updating the faas-provider
version that is vendored and then separating the function lookup into the BaseURLResolver
interface defined in the faas-provider
The CPU limit/reservation feature described in the docs does not work in the swarm cluster.
the test yml file as following:
python.yml
version: 1.0
provider:
name: openfaas
gateway: http://harbor.my-domain.com:8080
functions:
python:
lang: python3-flask
handler: ./python
image: harbor.my-domain.com/openfaas-custom/python:latest
limits:
cpu: 1000m
memory: 1024m
requests:
cpu: 100m
memory: 256m
when using faas-cli deploy -f ./python.yml
deploy this function, the faas-swarm
service shows some error logs as following:
2019/10/18 02:21:08 Error parsing cpu limit: *strconv.NumError
2019/10/18 02:21:08 Error parsing cpu reservations: *strconv.NumError
using docker service inspcet python
to check:
...
"Resources": {
"Limits": {
"MemoryBytes": 1073741824
},
"Reservations": {
"MemoryBytes": 268435456
}
},
...
It shows that CPU limit/reservation does not work.
using faas-cli up
or faas-cli deploy
deploy the function should set the CPU limit/reservation correctly.
faas-cli version
):CLI:
commit: 5ff1504047756f9ff2e0a10ae64803ab63df470a
version: 0.9.3
Gateway
uri: http://127.0.0.1:8080
version: 0.17.3
sha: d322f109a8379d19b639c003846e721a24ce9dc0
commit: Fix logo location
Provider
name: faas-swarm
orchestration: swarm
version: 0.7.2
sha: ef7d913
docker version
(e.g. Docker 17.0.05 ):docker-ce 18.09
Swarm
Ubuntu Server 16.04.6
Unable to deploy a function with an image that is in a private repository (either Docker Hub, or private) when using a tag on the image. private-registry.com/burtonr/test-fn:0.1
Deploy function successful
The CLI returns
Unexpected status: 400, message: Invalid registry auth
The log message in faas-swarm
:
Error building registry auth configuration: invalid reference format
This is the line that throws the error: https://github.com/openfaas/faas-swarm/blob/master/handlers/deploy.go#L194
We'd need to parse the dockerImage
input to see if there is a tag being used. If so, call the WithTag()
, otherwise call the current WithName()
Or, possibly update it to always call the WithTag()
function, by setting the tag to latest
if it's not supplied. That way there wouldn't be 2 different code paths to follow...
function.yml
image
to use a tag: burtonr/test-fn:0.1
faas-swarm
logsUnable to use versions of functions from my private registry
docker version
(e.g. Docker 17.0.05 ):dep
is officially being deprecated , the repo is already archived https://github.com/golang/dep
I have already tried the initial update but ran into several issues. It seems like we need to wait for this containerd/containerd#3031 to be resolved, which is currently blocked on this PR containerd/cri#1377 (comment) So progress is being made upstream.
We need to support the /system/info endpoint which has been updated in the latest release of faas-provider
After releasing 0.2.6 a Docker image wasn't pushed by CI - I've done this manually - but we need to look into it. cc @iyovcheva
http://localhost:8080/ui/ return: Get : unsupported protocol scheme ""
faas_gateway log
2019/11/01 02:02:29 HTTP Read Timeout: 5m5s,
2019/11/01 02:02:29 HTTP Write Timeout: 5m5s,
2019/11/01 02:02:29 Binding to external function provider: http://faas-swarm:8080/,
2019/11/01 02:02:29 Async enabled: Using NATS Streaming.,
2019/11/01 02:02:29 Opening connection to nats://nats:4222,
2019/11/01 02:02:29 Connect: nats://nats:4222,
2019/11/01 02:02:30 ExternalAuthHandler: Get : unsupported protocol scheme "",
2019/11/01 02:02:31 ExternalAuthHandler: Get : unsupported protocol scheme "",
2019/11/01 02:02:32 ExternalAuthHandler: Get : unsupported protocol scheme "",
2019/11/01 02:02:32 ExternalAuthHandler: Get : unsupported protocol scheme "",
2019/11/01 02:02:32 ExternalAuthHandler: Get : unsupported protocol scheme "",
2019/11/01 02:02:32 ExternalAuthHandler: Get : unsupported protocol scheme "",
2019/11/01 02:02:32 ExternalAuthHandler: Get : unsupported protocol scheme "",
2019/11/01 02:02:32 ExternalAuthHandler: Get : unsupported protocol scheme "",
2019/11/01 02:02:33 ExternalAuthHandler: Get : unsupported protocol scheme "",
No error
Getting error
Fresh installation return error
FaaS-CLI version ( Full output from: faas-cli version
):
commit: b7a67fe8d6a02aef35caae615ba56333e7337bfe
version: 0.9.5
Docker version docker version
(e.g. Docker 17.0.05 ): Docker version 19.03.4, build 9013bf5
Are you using Docker Swarm or Kubernetes (FaaS-netes)? Docker Swarm
Operating System and version (e.g. Linux, Windows, MacOS): Docker on Windows, faas-cli on linux
Code example or link to GitHub repo or gist to reproduce problem:
Other diagnostic information / logs from troubleshooting guide
You may join Slack for community support.
Faas-swarm works fine.
Faas-swarm crashed soon after starting.
No solution has been found yet (not familiar with golang).
2020/06/18 03:07:20 Docker API version: 1.39, 18.09.4
2020/06/18 03:07:20 HTTP Read Timeout: 5m5s
2020/06/18 03:07:20 HTTP Write Timeout: 5m5s
2020/06/18 03:07:20 Basic authentication: true
2020/06/18 03:07:21 ReplicaReader - reading function: 1230-1229-debug
panic: runtime error: slice bounds out of range
goroutine 11 [running]:
github.com/openfaas/faas-swarm/handlers.parseLogStream(0x91f280, 0xc0000be300, 0xc00042e2b6, 0xd, 0xc0003ac2a0, 0x91d100, 0xc0003609c0)
/go/src/github.com/openfaas/faas-swarm/handlers/logs.go:86 +0x780
created by github.com/openfaas/faas-swarm/handlers.LogRequester.Query
/go/src/github.com/openfaas/faas-swarm/handlers/logs.go:65 +0x226
faas-cli version
): ___ _____ ____
/ _ \ _ __ ___ _ __ | ___|_ _ __ _/ ___|
| | | | '_ \ / _ \ '_ \| |_ / _` |/ _` \___ \
| |_| | |_) | __/ | | | _| (_| | (_| |___) |
\___/| .__/ \___|_| |_|_| \__,_|\__,_|____/
|_|
CLI:
commit: b7a67fe8d6a02aef35caae615ba56333e7337bfe
version: 0.9.5
faas-swarm version: 0.8.5
docker version
(e.g. Docker 17.0.05 ):Client:
Version: 18.09.9
API version: 1.39
Go version: go1.11.13
Git commit: 039a7df9ba
Built: Wed Sep 4 16:57:28 2019
OS/Arch: linux/amd64
Experimental: false
Server: Docker Engine - Community
Engine:
Version: 18.09.9
API version: 1.39 (minimum version 1.12)
Go version: go1.11.13
Git commit: 039a7df
Built: Wed Sep 4 16:19:38 2019
OS/Arch: linux/amd64
Experimental: false
Docker Swarm
Ubuntu 16.04.6 LTS (GNU/Linux 4.4.0-142-generic x86_64)
The faas-swarm provider should expose the required secrets management APIs as specified in openfaas/faas#807
Upgrade the faas-provider version to include the changes from openfaas/faas-provider#12 and implement the required secrets handlers
This will help simplify end user deployment of secure functions and simplify documentation such as
No calls should be possible to the /system/*
routes for the providers unless decorated with basic auth. Note that the gateway has more endpoints than the provider and not all endpoints are proxied.
The gateway is protected, but not faas-swarm.
This is not a problem for external access since only the gateway is exposed, but internal functions could invoke the endpoints since Swarm gives no way of providing NetworkPolicy.
This change must only become active when basic auth is enabled.
Docker version docker version
(e.g. Docker 17.0.05 ):
Are you using Docker Swarm or Kubernetes (FaaS-netes)?
Operating System and version (e.g. Linux, Windows, MacOS):
Link to your project or a code example to reproduce issue:
The secrets handler for faas-swarm should have tests. Use the httptest
package to achieve this.
Unavailable.
You may need to use an interface instead of the Docker client in the handler's make function so that it can be stubbed out with a test double to return the data you need in the test.
See the tests in faas-netes / openfaas-operator for an example of how this was done for other platforms.
Multistage builds should leave as little junk as possible.
Golang alpine 1.11 image fails on cgo dependent tasks.
Multistage Docker builds leave the "build" parts in disk as untagged images, ans and using the Fat Golang image in this step produces more than 500Mb.
Use alpine images.
To use the 11.1 Go Alpine image, it is necessary to add gcc
and libc-dev
apks to the Dockerfile.
This issue prevent unecessary disk and network usage when deploying on Docker Swarm.
FaaS-CLI version ( Full output from: faas-cli version
):
Docker version docker version
(e.g. Docker 17.0.05 ):
Docker 18.06.1-ce
Are you using Docker Swarm or Kubernetes (FaaS-netes)?
Docker Swarm
Operating System and version (e.g. Linux, Windows, MacOS):
Linux 4.18-amd64 (Arch)
Link to your project or a code example to reproduce issue:
fass-swarm
Bump up Golang to 1.11 in the Dockerfiles, then test that the build works.
Update to latest faas-provider
Release is a little older and lacks /system/namespaces
endpoint
This fails to push a new Docker image upon Releasing a new release of the code. Please investigate via the travis logs / .travis.yml file.
Hello, folks,
I'm sorry, but I have to reopen the post.
I use the current version of OpenFaas together with Docker Swarm (multi Node) and a private Docker Registry.
I've read all contributions to this bug, but I still get this message:
> faas-cli deploy -f stack.yml --gateway https://DOMAIN --network proxy --readonly --send-registry-auth
Deploying: SERVICENAME.
Unexpected status: 400, message: Invalid registry auth
Function 'SERVICENAME' failed to deploy with status code: 400
I am successfully logged into my registry and OpenFaas
Originally posted by @JohnOllhorn in #19 (comment)
I have two gateways in two separate docker stacks in the same swarm, each gateway is in its own network. When I deploy functions into the first gateway using faas-cli, they get attached to the network of that gateway. But when I deploy functions into the other gateway, the resulting function services get attached to the network of the first gateway.
Workaround: define a network explicitly using the --network option of faas-cli.
Functions deployed into the second gateway should be attached to the network of the second gateway, and vice versa.
Networks:
$ docker network ls
NETWORK ID NAME DRIVER SCOPE
kv2zpddui95l bem-infra overlay swarm
v7hygd71jlcy bemk_bem overlay swarm
mjr1cepesm7y bemp_bem overlay swarm
The bem-infra network is an external network which contains traefik.
The other two networks belong to the two docker stacks, each of which contains a faas gateway.
Faas Deployment: (slightly simplified, there are some more stage-specific env vars)
$ STAGE=p docker stack deploy bemp --compose-file bem/docker-compose.yml
$ STAGE=k docker stack deploy bemk --compose-file bem/docker-compose.yml
Function Deployment:
$ faas deploy -g http://bemp.kvnurs.intra -f bemp-stack.yml
$ faas deploy -g http://bemk.kvnurs.intra -f bemk-stack.yml
Gateway description
The gateway is in network bemk_bem
= v7hygd71jlcy:
Service description
The service is in network bemp_bem
=mjr1cepesm7y, while it should be in bemk_bem
=v7hygd71jlcy:
The manual deployment function in the faas portal has an option to enter a network during function deployment. Maybe have a network option in stack.yml?
I have no live example, unfortunately.
I try to create two stages in the same docker swarm.
FaaS-CLI version ( Full output from: faas-cli version
):
CLI:
commit: 87ca614cfe27c4cf2975f7629992c1351b18c2bc
version: 0.8.8
Docker version docker version
(e.g. Docker 17.0.05 ):
Client:
Version: 18.06.1-ce
API version: 1.38
Go version: go1.10.7
Git commit: e68fc7a215d7
Built: Wed Dec 19 10:23:04 2018
OS/Arch: linux/amd64
Experimental: false
Server:
Engine:
Version: 18.06.1-ce
API version: 1.38 (minimum version 1.12)
Go version: go1.10.7
Git commit: e68fc7a215d7
Built: Tue Aug 21 17:16:31 2018
OS/Arch: linux/amd64
Experimental: false
Are you using Docker Swarm or Kubernetes (FaaS-netes)?
Swarm
Operating System and version (e.g. Linux, Windows, MacOS):
SuSE SLE12 SP4
Link to your project or a code example to reproduce issue:
https://gitlab.la-bw.de/dimag/bestandserhaltungmodul/tree/master/bem_openfaas
Since Swarm is effectively declarative CRUD operations should return 202 Accepted rather than 200 OK since we do not know if things are actually OK that that point. The R of CRUD (retrieve) can return 200 OK.
Context - Issue raised on FaaS repo by Simon @Templum openfaas/faas#693
It should be possible to deploy functions independently into two separate openfaas stacks in the same swarm while avoiding name collisions.
I have two openfaas gateways in two different docker swarm openfaas stacks in the same swarm. When I deploy a function into the gateway of the first stack, a function service gets created for that gateway and works fine. But when I deploy the same function (same name) into the other gateway, then the first gateway loses the connection to that function. Redeploying the function into the first gateway does not help. In the gateway logs I see:
2019/04/16 09:20:10 error with upstream request to: , Post http://my-function:8080: dial tcp: lookup my-function on 127.0.0.11:53: no such host
bemk_gateway.1.2jy84fkyzxz9@m1rrzsbem01t | 2019/04/16 09:20:10 Forwarded [POST] to /function/my-function - [502] - 0.004523 seconds
Ultimately I had to remove all functions and all openfaas stacks and recreate everything from scratch to get it working again.
My understanding is that function services do not become part of a stack. The gateway finds its function services by means of a label. Here is my function in faas-cli describe:
Name: my-function
Status: Ready
Replicas: 1
Available replicas: 1
Invocations: 0
Image: bem-docker-registry.kvnurs.intra:443/my-function:latest
Function process:
URL: http://bemk.kvnurs.intra/function/my-function
Async URL: http://bemk.kvnurs.intra/async-function/my-function
Labels: function : true
com.openfaas.function : my-function
I assume the gateway finds its functions using the com.openfaas.function
label. On deployment the gateway apparently attaches the function to its own network.
Now, when the gateway in the second stack deploys the same function, it seems to disconnect the function from its current network and attaches it to its own network (and probably does other things which cause more confusion).
A solution must allow the function to be a separate entity for docker if it is deployed into a different stack. The function must become a separate service for each stack, which scales independently etc. The only way to achieve that is a different service name, I am not aware that service labeling alone can help us here.
As long as the service has the same name in both stacks, it is probably not possible to achieve that.
Suggestion:
The openfaas yml format could introduce a name
field below each function key whose value supports env variable substitution. The gateway uses the service key to build the service url and the name
field to create the service name in docker.
Docker has done similar things with name fields for configs and volumes, so maybe that is not so far-fetched after all.
Workaround:
Create separate stack.yml files with separate service names prefixed for each stack and let callers use the appropriate url for each stack, i.e. http://localhost:8080/functions/develop_my-function.
Result:
In my scenario we have used swarm stacks for staging. Each swarm stack is a different stage (stages as in development - acceptance test etc. where placement constraints are used to distribute the containers to separate nodes depending on the stage).
faas-cli version
): commit: 87ca614cfe27c4cf2975f7629992c1351b18c2bc
version: 0.8.8
docker version
(e.g. Docker 17.0.05 ):Client:
Version: 18.06.1-ce
API version: 1.38
Go version: go1.10.7
Git commit: e68fc7a215d7
Built: Wed Dec 19 10:23:04 2018
OS/Arch: linux/amd64
Experimental: false
Server:
Engine:
Version: 18.06.1-ce
API version: 1.38 (minimum version 1.12)
Go version: go1.10.7
Git commit: e68fc7a215d7
Built: Tue Aug 21 17:16:31 2018
OS/Arch: linux/amd64
Experimental: false
Are you using Docker Swarm or Kubernetes (FaaS-netes)?
Swarm
Operating System and version (e.g. Linux, Windows, MacOS):
Linux Suse SLE12 sp 4
Link to your project or a code example to reproduce issue:
n/a yet
Be able to connect to a Docker API endpoint with TLS enabled.
I have a openfaas/faas-swarm service with the following environment variables set.
DOCKER_API_VERSION: 1.39
DOCKER_HOST: tcp://10.57.21.68:2376
DOCKER_TLS: 1
I'm expecting faas-swarm to connect to the Docker API endpoint with TLS enabled. But, the logs show it's not.
2019/06/26 17:35:46 Error with Docker server: Get http://10.57.21.68:2376/v1.39/version: net/http: HTTP/1.x transport connection broken: malformed HTTP response "\x15\x03\x01\x00\x02\x02".
* Are you trying to connect to a TLS-enabled daemon without TLS?
Unknown.
Here's a snippet of my service definition for faas-swarm.
faas-swarm:
image: openfaas/faas-swarm:0.6.2
environment:
read_timeout: 5m
write_timeout: 5m
basic_auth: "true"
secret_mount_path: /run/secrets
DOCKER_API_VERSION: 1.39
DOCKER_HOST: tcp://10.57.21.68:2376
DOCKER_TLS: 1
I want to be able to connect to a remote Docker swarm manager endpoint that has TLS enabled.
FaaS-CLI version ( Full output from: faas-cli version
): N/A
Docker version docker version
(e.g. Docker 17.0.05 ): 18.09.6
Are you using Docker Swarm or Kubernetes (FaaS-netes)? Swarm
Operating System and version (e.g. Linux, Windows, MacOS): Linux
Link to your project or a code example to reproduce issue: N/A
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.