Giter Club home page Giter Club logo

binder's People

Contributors

amoeba avatar betatim avatar brooksambrose avatar cboettig avatar eitsupi avatar gvelasq avatar krlmlr avatar noamross avatar nuest avatar rokroskar avatar rossibarra avatar yuvipanda avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

binder's Issues

Base image: moving rocker/binder higher in the stack?

@yuvipanda @brooksambrose @choldgraf

How would you feel about bumping the base image FROM rocker/tidyverse to instead start with FROM rocker/geospatial? Obviously we cannot overcome everyone's system dependencies by pre-installing everything, but from our experience so far, an image like verse or geospatial (which builds on verse) and has a pretty common set of core system libraries to the point where most commonly used R packages at least in the data science space should install out of the box, while still maintaining a relatively small image.

As we discover / are discovered by more communities this may grow/bifurcate, obviously it isn't an easy problem to provide preconfigured environment and ultimately there's no substitute for users/communities being able to just install what they need when they need it. But from our experience in Rocker Project so far, I think our community-shaped stacks like verse or geospatial would make a good starting point

why based on geospatial?

Thank you for providing this (and all the other rocker) image(s)!

I wondered why the binder image is build on top of geospatial and not on tidyverse or verse as, from my perspective, adding the possibility to use Binder is a more fundamental feature that might be important to everybody interested in reproducibility, but not necessarily in geospatial analysis tools. Furthermore, the geospatial tools add quite a bit of image size.

One can obviously just copy the code from the binder Dockerfile and add it to a project's Dockerfile. It just adds a lot of code that might distract from the adjustments that are specific to the project at hand.

rstan or cmdstanr packages don't work

I used the template to create a binder repository

https://github.com/lsaravia/binder-rethinking

in the Install.R file

install.packages(c("StanHeaders","rstan"),type="source")

or

install.packages("rstan", repos = c("https://mc-stan.org/r-packages/", getOption("repos")))

in both cases the package seems to be well installed but when I test the installation using:

example(stan_model, package = "rstan", run.dontrun = TRUE)
Loading required package: StanHeaders

rstan version 2.26.13 (Stan version 2.26.1)

For execution on a local, multicore CPU with excess RAM we recommend calling
options(mc.cores = parallel::detectCores()).
To avoid recompilation of unchanged Stan programs, we recommend calling
rstan_options(auto_write = TRUE)
For within-chain threading using `reduce_sum()` or `map_rect()` Stan functions,
change `threads_per_chain` option:
rstan_options(threads_per_chain = 1)
make cmd is
  make -f '/usr/local/lib/R/etc/Makeconf' -f '/usr/local/lib/R/share/make/shlib.mk' CXX='$(CXX14) $(CXX14STD)' CXXFLAGS='$(CXX14FLAGS)' CXXPICFLAGS='$(CXX14PICFLAGS)' SHLIB_LDFLAGS='$(SHLIB_CXX14LDFLAGS)' SHLIB_LD='$(SHLIB_CXX14LD)' SHLIB='file273f221760.so' OBJECTS='file273f221760.o'

.
.  
.
make would use
g++ -std=gnu++14 -I"/usr/local/lib/R/include" -DNDEBUG   -I"/usr/local/lib/R/site-library/Rcpp/include/"  -I"/usr/local/lib/R/site-library/RcppEigen/include/"  -I"/usr/local/lib/R/site-library/RcppEigen/include/unsupported"  -I"/usr/local/lib/R/site-library/BH/include" -I"/usr/local/lib/R/site-library/StanHeaders/include/src/"  -I"/usr/local/lib/R/site-library/StanHeaders/include/"  -I"/usr/local/lib/R/site-library/RcppParallel/include/"  -I"/usr/local/lib/R/site-library/rstan/include" -DEIGEN_NO_DEBUG  -DBOOST_DISABLE_ASSERTS  -DBOOST_PENDING_INTEGER_LOG2_HPP  -DSTAN_THREADS  -DUSE_STANC3 -DSTRICT_R_HEADERS  -DBOOST_PHOENIX_NO_VARIADIC_EXPRESSION  -DBOOST_NO_AUTO_PTR  -include '/usr/local/lib/R/site-library/StanHeaders/include/stan/math/prim/fun/Eigen.hpp'  -D_REENTRANT -DRCPP_PARALLEL_USE_TBB=1   -I/usr/local/include   -fpic  -g -O2 -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -g  -c file273f221760.cpp -o file273f221760.o
if test  "zfile273f221760.o" != "z"; then \
  echo g++ -std=gnu++14 -shared -L"/usr/local/lib/R/lib" -L/usr/local/lib -o file273f221760.so file273f221760.o  '/usr/local/lib/R/site-library/rstan/lib//libStanServices.a' -L'/usr/local/lib/R/site-library/StanHeaders/lib/' -lStanHeaders -L'/usr/local/lib/R/site-library/RcppParallel/lib/' -ltbb   -L"/usr/local/lib/R/lib" -lR; \
  g++ -std=gnu++14 -shared -L"/usr/local/lib/R/lib" -L/usr/local/lib -o file273f221760.so file273f221760.o  '/usr/local/lib/R/site-library/rstan/lib//libStanServices.a' -L'/usr/local/lib/R/site-library/StanHeaders/lib/' -lStanHeaders -L'/usr/local/lib/R/site-library/RcppParallel/lib/' -ltbb   -L"/usr/local/lib/R/lib" -lR; \
fi

Here binder virtual machine hangs

A similar thing happens when I also install cmdstanr I think that could be the same problem.

R 3.4.3 not working

Using the Dockerfile in the binder-examples/dockerfile-rstudio repo and changing the R version from 3.4.2 to 3.4.3 does not work.

grafik

caret and rsample packages

Hello!

I am creating an environment for R with a Dockerfile like this one:

FROM rocker/binder:3.5.2

ARG NB_USER
ARG NB_UID

USER root
COPY . ${HOME}

RUN chown -R ${NB_USER} ${HOME}

USER ${NB_USER}

RUN if [ -f install.R ]; then R --quiet -f install.R; fi

Also, I have installed this packages with an install.R file:

install.packages("tidyverse")
install.packages("rsample")
install.packages("yardstick")
install.packages("randomForest")  
install.packages("caret")   
install.packages("rjson")  
install.packages("gbm")
install.packages("xgboost")
install.packages("e1071")

runtime.txt
r-2019-08-10

The packages seem to work fine, with the exception of rsamples and caret package. Both packages are not found when I run the code.

I tried several things to solve this but all without success. I suspect it is a problem with dependencies or package versions.

Have you any idea on why this happens and how to solve it?

support servr

Currently in RStudio on Binder the command servr::httd(), which should serve a webpage in the RStudio Server viewer pane, is giving:

/p/4321/?viewer_pane=1 not found

I think this it may have been possible to open an arbitrary port before #13 when nbserverproxy was removed.

images built on `rocker/binder` can't run RStudio on mybinder.org

I had problems running Docker containers that use FROM: rocker/binder:3.5.0 on mybinder.org. The interactive RStudio session wouldn't open and report "500 : Internal Server Error". Interestingly, the same images used to run at the end of last week.

With the help of @betatim (see jupyterhub/binderhub#753), I figured out that if I use another rocker image and add the code from the rocker/binder Dockerfile to my own Dockerfile, the container runs successfully on mybinder.org again. Apparently, when using FROM: rocker/binder, an older version of nbrsessionproxy is installed that still has a bug that leads to the aforementioned error.

As there has been one commit to the rocker/binder repo that falls in between the image working and not working, I assume that this commit is at the core of the issue.

I made two repos for you to check for yourself:

https://github.com/januz/binder-fails
https://github.com/januz/binder-works

500: Internal Server Error

With the latest build, after launching at:

localhost:8888 and clicking new Rstudio, this error appears, dated Nov. 28, 2020; with a pull directly from

docker pull rocker/binder:latest

500 : Internal Server Error
The error was:

could not start rstudio in time

Full error tracelog below:

docker inspect rocker/binder:latest
[
    {
        "Id": "sha256:b3091f942607e821796b38230cc6fead9afc33e1ffc3df0d75e005e584a383df",
        "RepoTags": [
            "rocker/binder:latest"
        ],
        "RepoDigests": [
            "rocker/binder@sha256:c2fcea20617a062c2a1db0de434d2f37190173f6378762533934fc3d3ff8b858"
        ],
        "Parent": "",
        "Comment": "",
        "Created": "2020-11-13T06:29:02.44101713Z",
        "Container": "da1be7643d29021b1c00ed276667f3976ab5f163e79944a77eb734590989d062",
        "ContainerConfig": {
            "Hostname": "da1be7643d29",
            "Domainname": "",
            "User": "rstudio",
            "AttachStdin": false,
            "AttachStdout": false,
            "AttachStderr": false,
            "ExposedPorts": {
                "8787/tcp": {}
            },
            "Tty": false,
            "OpenStdin": false,
            "StdinOnce": false,
            "Env": [
                "PATH=/usr/local/texlive/bin/x86_64-linux:/usr/lib/rstudio-server/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
                "R_VERSION=4.0.3",
                "TERM=xterm",
                "LC_ALL=en_US.UTF-8",
                "LANG=en_US.UTF-8",
                "R_HOME=/usr/local/lib/R",
                "CRAN=https://packagemanager.rstudio.com/all/__linux__/focal/latest",
                "TZ=Etc/UTC",
                "S6_VERSION=v2.1.0.2",
                "RSTUDIO_VERSION=latest",
                "CTAN_REPO=http://mirror.ctan.org/systems/texlive/tlnet",
                "NB_USER=rstudio"
            ],
            "Cmd": [
                "/bin/sh",
                "-c",
                "#(nop) WORKDIR /home/rstudio"
            ],
            "Image": "sha256:8fcaaa2a0f201e962f7958141edffdaa923849143ac8518d95fb274b7d25bbac",
            "Volumes": null,
            "WorkingDir": "/home/rstudio",
            "Entrypoint": null,
            "OnBuild": null,
            "Labels": {
                "maintainer": "Carl Boettiger <[email protected]>",
                "org.label-schema.license": "GPL-2.0",
                "org.label-schema.vcs-url": "https://github.com/rocker-org/rocker-versioned",
                "org.label-schema.vendor": "Rocker Project"
            }
        },
        "DockerVersion": "19.03.1",
        "Author": "",
        "Config": {
            "Hostname": "",
            "Domainname": "",
            "User": "rstudio",
            "AttachStdin": false,
            "AttachStdout": false,
            "AttachStderr": false,
            "ExposedPorts": {
                "8787/tcp": {}
            },
            "Tty": false,
            "OpenStdin": false,
            "StdinOnce": false,
            "Env": [
                "PATH=/usr/local/texlive/bin/x86_64-linux:/usr/lib/rstudio-server/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
                "R_VERSION=4.0.3",
                "TERM=xterm",
                "LC_ALL=en_US.UTF-8",
                "LANG=en_US.UTF-8",
                "R_HOME=/usr/local/lib/R",
                "CRAN=https://packagemanager.rstudio.com/all/__linux__/focal/latest",
                "TZ=Etc/UTC",
                "S6_VERSION=v2.1.0.2",
                "RSTUDIO_VERSION=latest",
                "CTAN_REPO=http://mirror.ctan.org/systems/texlive/tlnet",
                "NB_USER=rstudio"
            ],
            "Cmd": [
                "/bin/sh",
                "-c",
                "jupyter notebook --ip 0.0.0.0"
            ],
            "Image": "sha256:8fcaaa2a0f201e962f7958141edffdaa923849143ac8518d95fb274b7d25bbac",
            "Volumes": null,
            "WorkingDir": "/home/rstudio",
            "Entrypoint": null,
            "OnBuild": null,
            "Labels": {
                "maintainer": "Carl Boettiger <[email protected]>",
                "org.label-schema.license": "GPL-2.0",
                "org.label-schema.vcs-url": "https://github.com/rocker-org/rocker-versioned",
                "org.label-schema.vendor": "Rocker Project"
            }
        },
        "Architecture": "amd64",
        "Os": "linux",
        "Size": 5715688324,
        "VirtualSize": 5715688324,
        "GraphDriver": {
            "Data": {
                "LowerDir": "/var/lib/docker/overlay2/29d7c1781e7b6c9a960d4f82f3fcc85bada2d4f23f2cfd90c44cb0c89ef55699/diff:/var/lib/docker/overlay2/c5a6c14922b0d5aec4ff7b6d1f175a0f7c1e579cc9ac41cfab9e8095771b7136/diff:/var/lib/docker/overlay2/78617e6c4b83e5b22526eadaa74faee59ce66ea6fff4d0a1bb66c32cfc732918/diff:/var/lib/docker/overlay2/71afb1dbedcc59c4d0828e9ad56d5402145be448c0c021b912901a2e24ba51d9/diff:/var/lib/docker/overlay2/476c24571e5665e56163b82ff65a6d7565c727d5eedd9ba72446f8f8827b0007/diff:/var/lib/docker/overlay2/9da9b7fe3464448388d4b060b0974dd47ff5ab938306204c0319a850ed46f779/diff:/var/lib/docker/overlay2/6bc1498c02413ab12ec235cbd5336f9b8b7427f7294410d5c6fab370663a1f41/diff:/var/lib/docker/overlay2/c428715708d2f9f27ac5a798cd6ca385ca6ed87ad3155774b9868fbd46235ff6/diff:/var/lib/docker/overlay2/6c088db8e08632cc9b03087ec12b40b1d7f83c8372a528e3509a876134c94e5a/diff:/var/lib/docker/overlay2/8e9466e9d8a95751e8d710ade0b9e8ee34adad122b789a7e3c40df4322884b72/diff:/var/lib/docker/overlay2/689021e994a162cfe869516cafed69585ad333c5ccff5e4de36203f6ae5d27b8/diff:/var/lib/docker/overlay2/e31702f87d55196329a3617e8480172ba43a396e472c50946da577224ad58552/diff",
                "MergedDir": "/var/lib/docker/overlay2/8ad7b483bc37f523e0d612d0ae47289f720442a4bacf5e1bde63709102f398b7/merged",
                "UpperDir": "/var/lib/docker/overlay2/8ad7b483bc37f523e0d612d0ae47289f720442a4bacf5e1bde63709102f398b7/diff",
                "WorkDir": "/var/lib/docker/overlay2/8ad7b483bc37f523e0d612d0ae47289f720442a4bacf5e1bde63709102f398b7/work"
            },
            "Name": "overlay2"
        },
        "RootFS": {
            "Type": "layers",
            "Layers": [
                "sha256:e1c75a5e0bfa094c407e411eb6cc8a159ee8b060cbd0398f1693978b4af9af10",
                "sha256:9e97312b63ff63ad98bb1f3f688fdff0721ce5111e7475b02ab652f10a4ff97d",
                "sha256:ec1817c93e7c08d27bfee063f0f1349185a558b87b2d806768af0a8fbbf5bc11",
                "sha256:05f3b67ed530c5b55f6140dfcdfb9746cdae7b76600de13275197d009086bb3d",
                "sha256:eae5f69ee969bff0d5efe88f1ad959c70950e753047446bc7504b70610e95d95",
                "sha256:24eab26fd630a3793b8c355e49012640db0649ea6631d8275e7535476d5dea73",
                "sha256:c2d92965ff0cebee849714853668b78f0b39216841682edcc75216121719b727",
                "sha256:cf81c78d35f99d7be655682b3d045211400c093dd812a8f085c08f645e892078",
                "sha256:949275ddbb9ecbd1811ac3f5347df0efa3b44c257fda0c23762e2a8d641f215a",
                "sha256:7e6741743dfc977dfaf36b42c6c30c7d8701297bd94a5b918f9a97e6e7439c1b",
                "sha256:88e3d41cf349c67d4bb221df39c73ed6846877cb301c817eae6e7408c667fa2f",
                "sha256:7a983626f10842a95a2c03de35c940e3dc468d3616beb1d4f588efe8d253c4b5",
                "sha256:55350c47f9af28ce11ab06e514111622a1835bc3b8724fd39cad2bb94810014f"
            ]
        },
        "Metadata": {
            "LastTagTime": "0001-01-01T00:00:00Z"
        }
    }
]

Safari browser cannot open Terminal session in RStudio Server

On my own binderhub using an image based on rocker/binder:3.4.2, RStudio Server will not open a shell session in the new tabbed terminal window. system() still works. Terminal is working on my binder.org with the same repo though. When I check the pod log the last thing is a 403:

[W 00:22:06.159 NotebookApp] 403 POST /user/w201rdada-portfolio-4jbqvvxy/rstudio/rpc/start_terminal (10.32.0.25)

@yuvipanda any clue where to look to debug?

Run locally on docker failing

I'm pretty new to Binder, so I hope this isn't a false positive issue report (apologies in advance if so).

Per the documentation in the README, I'm trying to play round with this on my local machine Docker, but on rocker/binder:latest and rocker/binder:4.1.0 I get:

# docker run -p 8888:8888 rocker/binder:4.1.0
Traceback (most recent call last):
  File "/usr/local/bin/jupyter", line 8, in <module>
    sys.exit(main())
  File "/usr/local/lib/python3.8/dist-packages/jupyter_core/command.py", line 285, in main
    command = _jupyter_abspath(subcommand)
  File "/usr/local/lib/python3.8/dist-packages/jupyter_core/command.py", line 124, in _jupyter_abspath
    raise Exception(
Exception: Jupyter command `jupyter-notebook` not found.

However, if I go back far enough, it works just fine:

# docker run -p 8888:8888 rocker/binder:3.6.2
[I 10:57:42.022 NotebookApp] Writing notebook server cookie secret to /home/rstudio/.local/share/jupyter/runtime/notebook_cookie_secret
[I 10:57:42.535 NotebookApp] Serving notebooks from local directory: /home/rstudio
[I 10:57:42.535 NotebookApp] The Jupyter Notebook is running at:
[I 10:57:42.535 NotebookApp] http://b439f1838a83:8888/?token=fc2430c9b88a67d70183a44e61fd0c6d382c5d93abe46dab
[I 10:57:42.535 NotebookApp]  or http://127.0.0.1:8888/?token=fc2430c9b88a67d70183a44e61fd0c6d382c5d93abe46dab
[I 10:57:42.535 NotebookApp] Use Control-C to stop this server and shut down all kernels (twice to skip confirmation).
[W 10:57:42.539 NotebookApp] No web browser found: could not locate runnable browser.
[C 10:57:42.539 NotebookApp] 
    
    To access the notebook, open this file in a browser:
        file:///home/rstudio/.local/share/jupyter/runtime/nbserver-8-open.html
    Or copy and paste one of these URLs:
        http://b439f1838a83:8888/?token=fc2430c9b88a67d70183a44e61fd0c6d382c5d93abe46dab
     or http://127.0.0.1:8888/?token=fc2430c9b88a67d70183a44e61fd0c6d382c5d93abe46dab

I don't know if this is related to #44 or not, hence opening as a new issue, but these maybe need to be merged if they are different symptoms of the same issue.

Thanks,

Louis

config.yaml

Is there a way I could inspect the config.yaml that is presumably generated for use with helm and k8s to provision a particular binder pod? I assuming the process behind binder is similar to what's documented at z2jh. I'd like to get the rocker binder image working with my own cluster but am having trouble launching the container.

More elegant solutions to copying repo to container/image...?

@cboettig Thanks for your response at #15 and don't want to get that convo off track.

I wonder if there is a more elegant solution to using a Dockerfile with binder just to copy a user's repo to the image. Better would be to copy to the container or volume map, but sticking in the vein of the current "data in the image" solution:

Clone the repo as NB_USER in a RUN command during build using a --build-arg to pass in the repo url from the jupyter-repo2docker environment. @yuvipanda would this be more parsimonious than the current solution to get the repo into the container? Unfortunately the Dockerfile would come with, but that would lend some transparency to what the image is, which is currently lacking from the whole process anyway.

So, if:

ARG REPO
RUN git clone ${REPO} ${NB_USER}

Were added say to a rocker/binder base image, and jupyter-repo2docker were updated to take a --build-arg (which would I hope trigger a rebuild if the argument changes) then users could add the simplest Dockerfile without having to hand code copying the repo and changing permissions:

FROM rocker/binder:3.4.2

It would be great if something like that were enough to use a binder as the repo + curated images concept. This isn't hard, but it's also fairly complicated given the ease of use of the other jupyter-repo2docker conventions:

# Make sure the contents of our repo are in ${HOME}
COPY . ${HOME}
USER root
RUN chown -R ${NB_UID} ${HOME}
USER ${NB_USER}

I'm not onboard with Consider phasing out Dockerfile support, because Docker seems too important for general consumption to sweep under the rug.

What other features are missing still?

@yuvipanda Following up on your other question from #10 here.

Clearly this depends on what we mean by 'feature'.

  • On the port / networking side, it would be good to make sure that RStudio can open up other browser windows, e.g. when previewing an HTML document output by rmarkdown, or a website built by blogdown/bookdown, but I think that should work out of the box unless the proxy is doing something non-standard.

  • More complex are examples that require listening on an additional port: e.g. Doing the OAuth dance using the httr package, R listens for a callback on port 1410, see ?httr::oauth_listener for details. Usually this means just making sure that port is exposed.

  • Most other features can "probably" be addressed by user installation, though this isn't always trivial; particularly when requiring certain sometimes non-obvious dependencies. The current Dockerfile builds on tidyverse, we have two more images in the r-ver stack, verse which primarily adds common R LaTeX libraries (in an approach that is at least a little more subtle than the 4GB worth of texlive-full) and a geospatial stack which is particularly relevant on the debian:jessie based tags, since the relevant geospatial dependencies (GDAL, GEOS) need to be compiled from source with particular configuration to make sure sure you get a fully featured rather than minimal geospatial capability. (even on debian:stretch where sufficiently recent versions are available from apt these installations can be a stumbling point for users). TeX libraries and geospatial libraries are obviously just two common 'features' we see requested; clearly we could include these in a somewhat kitchen-sink binder just by bumping our FROM image to rocker:geospatial, but clearly other domain-specific configurations can create similar issues. Geospatial an TeX are pretty common dependencies in data-science stuff in general though; I don't know the python stack but I presume there's something on that side supporting bindings to the GDAL,GEOS, proj4, lwgeom libraries as well; so perhaps there's some synergy there. Anyway, lemme know what you think

Binder + Jupyter Lab + SSL?

Binder looks really interesting! Thanks for making this publicly available.

Question: Have you seen any docker files that use binder with Jupyter Lab?
Question: Have you seen any docker files that use binder with Jupyter Lab + SSL?

The README.md at https://github.com/binder-examples/jupyterlab make it sound simple enough but ...

Use of rstudio and joyvan home directories

It seems that RStudio starts by default in the RStudio directory but the user is joyan. I imagine this is just following Binder and RStudio Server conventions, but does it make sense and is it well documented?

A question that arose during my migration to rocker/binder:4.0.2 that finally seems to be working, with faster build times than before ๐ŸŽ‰

Check it out here: https://mybinder.org/v2/gh/robinlovelace/geocompr/master?urlpath=rstudio

I've simplified the Dockerfile compared with what it was previously but suspect it could be simpler still, do I really need to download the repo with wget? I don't fully understand how COPY works but imagine there's a neater way... Any feedback on this very gratefully received: https://github.com/Robinlovelace/geocompr/blob/master/.binder/Dockerfile

RStudio project support

First thanks for this meeting of the minds between jupyter and rocker!

I'm using a Dockerfile with this repo: https://github.com/w201rdada/portfolio

The image builds and launches great, and the RStudio Server session launches as well. However, when attempting to create a new Rstudio project (I want to use RStudio git integration) in the existing directory, the RStudio Server window reloads and displays a [Errno 111] Connection refused and any subsequent attempts to launch an RStudio Server session give the same error page.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.