atlas-engineer / nyxt Goto Github PK
View Code? Open in Web Editor NEWNyxt - the hacker's browser.
Home Page: https://nyxt-browser.com/
Nyxt - the hacker's browser.
Home Page: https://nyxt-browser.com/
nEXT version: 0.05,
OS: MacOS sierra 10.12.6
In hangout chat windows links are not highlighted with M-g/C-g hence there is no way to open them.
look forward to gtk version.
it if match with stumpwm ,very perfect!!!
At least on Mac OS X (High Sierra), there's no default home page/start screen. This leaves a new user thinking startup failed, when in fact, hitting C-l URL RET works perfectly well.
Would you consider a default home page, either a local file or something online ? This could lead to a superior starting experience.
Thanks !
Hi John,
I was wondering if there's any way I can see the pop-up windows when using nEXT. Sometimes I need to view the pop-up windows and click on them in order to continue what I'm doing on certain sites. If this is not possible right now, will it available anytime soon?
Thanks,
Anh
There should be some sort of visual indicator when a page is loading
nEXT doesn't seem to know about proxies at all (I can't find the word in the source code). When you are in a network that doesn't allow Web access without a proxy, that's a show-stopper.
System:
Macbook Pro, 2017 model with touchbar
Steps to Reproduce
Crash report attached.
Crash_nEXT.txt
I am trying to compile nEXT from source on OSX 10.11.6 by following the directions in https://github.com/nEXT-Browser/nEXT/tree/master/next#macos-instructions. It seems that due to user error or a problem in the build config the "QL" package can't be found.
$ ccl --version
Version 1.11-r16635 (DarwinX8632)
$ ccl --no-init --load make.lisp
> Error: There is no package named "QL" .
> While executing: CCL::%PARSE-TOKEN, in process listener(1).
> Type :GO to continue, :POP to abort, :R for a list of available restarts.
> If continued: Retry finding package with name "QL".
> Type :? for other options.
I have (I believe) exactly followed the quicklisp installation instructions presented in https://github.com/nEXT-Browser/nEXT/tree/master/next#macos-instructions
I am not an experienced quicklisp user so it's possible and even likely that I am doing something insane.
I am happy to paste the content of files from my ~/quicklisp/ if that would be helpful.
First of all this is an awesome project and I love it!
I have the latest version 0.05 and whenever I switch back to gmail/gerrit I can't use the shortcuts which gmail/gerrit supports natively. I have to click somewhere on the page first and then everything works as expected.
Hi,
I have cl-strings installed via quicklisp. Doing ccl64 --no-init --load make.lisp results in a build error:
Read error between positions 250 and 940 in /Users/me/.ghq/github.com/analyticd/nEXT/next/source/completion.lisp.
Error: Reader error: No external symbol named "MATCH-RE" in package #<Package "CL-STRING-MATCH"> .
While executing: CCL::%PARSE-TOKEN, in process listener(1).
Type cmd-/ to continue, cmd-. to abort, cmd-\ for a list of available restarts.
If continued: Create and use the internal symbol CL-STRING-MATCH::MATCH-RE
Type :? for other options.
Is there a certain version from source of next or of cl-strings that needs to be used to build on OS X Sierra?
Thanks
Whenever I try to open the app, nothing shows.
I am emacs user, but big fun of vim-like bindings. So i use cVim and already cannot use other keys=(
I think something like spacemacs will be very popular
Attempting to load via Quicklisp on a GNU/Linux machine failed as follows:
[package sqlite]......................
> Error: Module cocoa was not provided by any function on *MODULE-PROVIDER-FUNCTIONS*.
> While executing: REQUIRE, in process listener(1).
Is nEXT an OSX only browser?
Hello. Are there plans on implementing per domain based settings to block stuff like ads, javascript, pictures, etc like umatrix?
https://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html
so instead of hardcoding ~/.next.d
you'd check for $XDG_CONFIG_HOME
and if set use $XDG_CONFIG_HOME/next
(or next.d
), otherwise default to ~/.config/next
(or next.d
)
This helps to prevent clutter in ~ for people and also gives a measure of control as to where config, data are kept.
Thanks
When use C-g to navigate, the input area will overlap the buttom screen.
Are there any plans/ is it possible to integrate the command line into nEXT? I’ve been using cli tools to supplement my use of nEXT, such as pass
as my password manager, buku
as my bookmark manager, and other various tools.
I kind of am just opening this issue as a feature request to be able to run commands from nEXT and to see if that would even be possible.
Appreciate all the work that has gone into nEXT — it is definitely my daily driver. 👍
Would it be possible for C-f and C-b to be bound to the usual forward character and back character behavior on MacOS when entering text in html forms? I use those keybindings all the time when I'm entering text and it is jarring when those commands navigate me away from the page I'm on.
I would love having nEXT inside a emacs-buffer, is it possible? If not, would it be possible in the future?
macdeployqt
to copy the core qt libraries tonext.app/Contents/Frameworks
otool -L next.app/Contents/MacOS/next
to find the linkednext.app/Contents/Frameworks
,next.app/Contents/Frameworks
next.app/Contents/Frameworks
I took a stab at implementing some vi keybindings, however encountered a problem while doing so. Unfortunately capital and lower case letters are recognized as the same keystroke. Consider the following simple init.lisp
as an example:
(in-package :next)
(define-key *global-map* (kbd "j") #'scroll-down)
(define-key *global-map* (kbd "J") #'scroll-to-top)
Regardless of whether "J" or "j" is pressed the window always scrolls to the top instead of differentiating its behavior as necessary. I think this is because the way key strokes are reported, "J" and "j" produce the same key code just with the shift modifier either set or unset. It would be ideal if we could allow using the different letters for defining keybindings, and differentiate them however necessary.
I can try to implement the ability to differentiate these in the next day or two.
Just download the latest version dmg file, but when press S-h v
or S-h s
nothing happens, if I try to custom the key follow guide page :
(define-key *global-map* (kbd "S-M-h v")
(:input-complete *minibuffer* variable-inspect variable-complete :setup #'load-package-globals))
the nEXT not start, some error message say, cannot find global-map
did I miss some thing ?
Hello, I'm pretty sure I followed the instructions in next/readme.org correctly to install ccl and quicklisp. However, when I try to start the next browser I get the following error:
bash-3.2$ ccl
Clozure Common Lisp Version 1.11.5/v1.11.5 (DarwinX8664)
For more information about CCL, please see http://ccl.clozure.com.
CCL is free software. It is distributed under the terms of the Apache
Licence, Version 2.0.
? (lo)
> Error: Undefined function LO called with arguments () .
> While executing: CCL::TOPLEVEL-EVAL, in process listener(1).
> Type :GO to continue, :POP to abort, :R for a list of available restarts.
> If continued: Retry applying LO to NIL.
> Type :? for other options.
1 > (require :asdf)
:ASDF
NIL
1 > (asdf:load-asd "next.asd")
#P"/Users/craig/.quicklisp/local-projects/next/next.asd"
1 > (ql:quickload :next)
To load "next":
Load 1 ASDF system:
next
; Loading "next"
..................................................
..................................................
..................................................
..................................................
4 > (next:start)
> Error: Unbound variable: GLOBAL-MAP
> While executing: CCL::CHEAP-EVAL-IN-ENVIRONMENT, in process listener(1).
> Type cmd-/ to continue, cmd-. to abort, cmd-\ for a list of available restarts.
> If continued: Retry getting the value of GLOBAL-MAP.
> Type :? for other options.
5 >
The same error appears when I follow the instructions for building the binary and start it from the command line. Can someone tell me what I'm doing wrong?
EDIT: I truncated the output after running (ql:quickload :next)
I can't say how popular this sort of browser would be with Windows users, but it's starting to see more Linux-type developers with the advent of the Linux subsystem for it. I think, however, I can speak for most of us trapped in a Windows ecosystem in that we would appreciate another choice for web browsers for a platform that has so few. This is essentially the modern take on something like Conkeror but not dependent on (now) unsupported technology, which is awesome.
Hi.
I've been encountering crashes using the init.lisp file provided as an example in the documentation.
To reproduce :
I use nEXT downloaded from the release section of this github repo.
This is my init.lisp file :
(in-package :next)
(defvar *shell-mode-map* (make-hash-table :test 'equalp))
(defclass shell-mode (mode) ())
(defun shell-mode ()
(make-instance 'application-mode
:name "shell-mode"
:keymap *shell-mode-map*))
(defparenstatic clear-shell-output
(setf (ps:chain document body inner-h-t-m-l) ""))
(defparen append-output (output)
(setf (ps:chain document body inner-h-t-m-l)
(ps:chain document body inner-h-t-m-l
(concat (ps:lisp
(concatenate 'string output "<br />"))))))
(defun run-shell-command (input)
(interface:web-view-execute
(view *active-buffer*)
(append-output
(uiop:run-program input :force-shell t :output :string))))
(defun open-new-shell ()
(set-visible-active-buffer
(generate-new-buffer "*shell*" (shell-mode))))
(define-key *shell-mode-map* (kbd "c")
(:input *minibuffer* run-shell-command))
(define-key *shell-mode-map* (kbd "k")
#'clear-shell-output)
(define-key *global-map* (kbd "C-x s")
#'open-new-shell)
(pure copy paste from the docs)
I launch nEXT.
I then use C-x s
Press c
enter "anything" press enter.
Crash
Log from slime-connect (screenshot, my bad)
When executing the nEXT browser via Finder on macOS 10.13.3, it simply fails to open.
When I execute the macOS binary from terminal, I get this error:
> Error: Permission denied : "/Users/jmercouris/"
> While executing: CREATE-DIRECTORY, in process Initial(0).
> Type :POP to abort, :R for a list of available restarts.
> Type :? for other options.
It seems like jmercouris
user is somehow pre-compiled into the binary which is very wrong.
When I attempt to run nEXT for the first time, I get an error:
…
[package sqlite]..
; Loading "next"
[package cl-strings]..............................
[package puri]....................................
[package next].
Condition of type: FILE-ERROR
Filesystem error with pathname "~/.next.d/bookmark.db".
Either
1) the file does not exist, or
2) we are not allowed to access the file, or
3) the pathname points to a broken symbolic link.
Available restarts:
1. (TRY-RECOMPILING) Recompile bookmark and try loading it again
2. (RETRY) Retry loading FASL for #<cl-source-file "next" "bookmark">.
3. (ACCEPT) Continue, treating loading FASL for #<cl-source-file "next" "bookmark"> as having been successful.
4. (ABORT) Give up on "next"
Top level in: #<process TOP-LEVEL>.
>
It's fixable by running mkdir ~/.next.d
Hi again,
When I access a link (call it B) that is listed on another web page (A), and use the command for bookmarking link B, the page that is bookmarked is actually page A, not B. I would have to find out the URL of link B, and directly go to that link (type in the URL blank) in order to correctly bookmark it.
Is there any way I can bookmark a page after I access it by clicking on a link listed on a previous page without doing the above? Thanks.
This is such a cool project! 🕶
Of course, it's immediately clear to anyone familiar with Lisp extensible platforms (like Emacs) that this is the real strength of nEXT.
I know it's early days, but I think it'd be great to put together a place that people can share, discuss, suggest their customisations and extensions.
I don't know if it would really warrant a new repository, or maybe it'd just be easier to have a markdown doc.
Thanks so much for sharing your work - I'm really looking forward to seeing where nEXT goes 🙂
Thanks for a great application, I love using it to surf the web.
It would be nice if scrolling positions were saved in history so when you go back in history you will get back to where you were on the page.
I'm just playing around, am i missing something?
My ~/.next.d/init.lisp
(in-package :next)
(define-key *global-map* (kbd "Escape") 'evil-mode)
(defvar *evil-mode-map* (make-hash-table :test 'equalp))
(defun evil-mode ()
(make-instance 'application-mode
:name "evil-mode"
:keymap *evil-mode-map*))
document-mode-map doesnt work either
cl-webkit/dom/init.lisp load libwebkit2gtk-3.0.so failed, it should is libwebkit2gtk-4.0.so
(define-foreign-library libwebkit2
(:unix (:or "libwebkit2gtk-3.0.so")))
----------------------------------------------
(define-foreign-library libwebkit2
(:unix (:or "libwebkit2gtk-4.0.so"
"libwebkit2gtk-3.0.so")))
arch:
gtk-critical **: gtk-tree-path-to-string: assertion 'result !=NULL' failed.
debian:
when execute (next:start) appear gui directly crash. ui death
terminal info :
glib-gobject-warning **: cannot register existing type 'webkitwebcontext'
glib-gobject-critical **: g_once_init_leave: assertion 'result !=0 ' failed.
glib-gobject-critical **: g_object_new: assertion 'g_type_is_object (object_tyhpe)' failed.
invalid directory :home, when execute (asdf:load-asd "full-path-name") don't use "~/../../.." , need to use full path name.
when I'm try run gtk version of nEXT it appear a error:
null-pointer in parse-g-param-spec
the error occur at cl-cffi-gtk/gobject/gobject.param-spec.lisp : line 229
wm: stumpwm
system: archlinux
library : libwebkit2gtk-4.0.so , libgobject-2.0.so
slime feedback info :
null-pointer in parse-g-param-spec
[Condition of type SIMPLE-ERROR]
Restarts:
0: [RETURN-FROM-CALLBACK] #<RESTART GTK::RETURN-FROM-CALLBACK #x7FD483BE356D>
1: [ABORT-BREAK] Reset this thread
2: [ABORT] Kill this thread
Backtrace:
0: (GOBJECT:PARSE-G-PARAM-SPEC #)
1: (GOBJECT::CLASS-PROPERTY-INFO #<GTYPE :name "WebKitWebView" :id 140551128687680> "view-mode")
2: (GOBJECT::CLASS-PROPERTY-TYPE #<GTYPE :name "WebKitWebView" :id 140551128687680> "view-mode" :ASSERT-READABLE T :ASSERT-WRITABLE NIL)
3: (#<STANDARD-METHOD SLOT-BOUNDP-USING-CLASS (GOBJECT:GOBJECT-CLASS T GOBJECT::GOBJECT-PROPERTY-EFFECTIVE-SLOT-DEFINITION)> #<GOBJECT:GOBJECT-CLASS CL-WEBKIT2:WEBKIT-WEB-VIEW> #<CL-WEBKIT2:WEBKIT-WEB-VI..
4: (CCL::%SHARED-INITIALIZE #<CL-WEBKIT2:WEBKIT-WEB-VIEW #x30200337F28D> T (:POINTER #<A Foreign Pointer #x7FD4A4204FC0> :CONTEXT #<CL-WEBKIT2:WEBKIT-WEB-CONTEXT #x302003341B0D>))
5: (#<CCL::STANDARD-KERNEL-METHOD SHARED-INITIALIZE (STANDARD-OBJECT T)> #<CL-WEBKIT2:WEBKIT-WEB-VIEW #x3020031FC4FD> T :POINTER #<A Foreign Pointer #x7FD4A4204FC0> :CONTEXT #<CL-WEBKIT2:WEBKIT-WEB-CONTE..
6: (#<CCL::STANDARD-KERNEL-METHOD INITIALIZE-INSTANCE (STANDARD-OBJECT)> #<CL-WEBKIT2:WEBKIT-WEB-VIEW #x3020031FC4FD> :POINTER #<A Foreign Pointer #x7FD4A4204FC0> :CONTEXT #<CL-WEBKIT2:WEBKIT-WEB-CONTEXT..
7: (CCL::%%CNM-WITH-ARGS-COMBINED-METHOD-DCODE #(#<STANDARD-GENERIC-FUNCTION INITIALIZE-INSTANCE #x30200002CA2F> (#<STANDARD-METHOD INITIALIZE-INSTANCE #> #<#> #<#> #<#>) ..)) (#<CL-WEBKIT2:WEBKIT-WEB-VI..
8: (CCL::%CALL-NEXT-METHOD-WITH-ARGS (#(#<STANDARD-GENERIC-FUNCTION INITIALIZE-INSTANCE #x30200002CA2F> (#<#> #<#> #<#> #<#>) (#<STANDARD-GENERIC-FUNCTION INITIALIZE-INSTANCE #x30200002CA2F> #) ..)))) #<..
9: (CCL::%%BEFORE-AND-AFTER-COMBINED-METHOD-DCODE (#(#<STANDARD-GENERIC-FUNCTION INITIALIZE-INSTANCE #x30200002CA2F> (#<#> #<#> #<#> #<#>) ..)))))
10: (CCL::%CALL-NEXT-METHOD (#(#<STANDARD-GENERIC-FUNCTION INITIALIZE-INSTANCE #x30200002CA2F> (#<#> #<#> #<#> #<#>) (#<STANDARD-GENERIC-FUNCTION INITIALIZE-INSTANCE #x30200002CA2F> #) ..)))))
11: (#<STANDARD-METHOD INITIALIZE-INSTANCE :AROUND (GOBJECT:G-OBJECT)> #<CL-WEBKIT2:WEBKIT-WEB-VIEW #x3020031FC4FD>)
12: (CCL::%%CNM-WITH-ARGS-COMBINED-METHOD-DCODE #(#<STANDARD-GENERIC-FUNCTION INITIALIZE-INSTANCE #x30200002CA2F> (#<STANDARD-METHOD INITIALIZE-INSTANCE #> #<#> #<#> #<#>) ..)) 17568840285491 NIL)
13: (NIL #)
14: (CCL::%MAKE-STD-INSTANCE #<GOBJECT:GOBJECT-CLASS CL-WEBKIT2:WEBKIT-WEB-VIEW> (:POINTER #<A Foreign Pointer #x7FD4A4204FC0> :CONTEXT #<CL-WEBKIT2:WEBKIT-WEB-CONTEXT #x3020031F4B5D>))
15: (#<CCL::STANDARD-KERNEL-METHOD MAKE-INSTANCE (STANDARD-CLASS)> #<GOBJECT:GOBJECT-CLASS CL-WEBKIT2:WEBKIT-WEB-VIEW> :POINTER #<A Foreign Pointer #x7FD4A4204FC0> :CONTEXT #<CL-WEBKIT2:WEBKIT-WEB-CONTEXT..
16: (CCL::%%CNM-WITH-ARGS-COMBINED-METHOD-DCODE #(#<STANDARD-GENERIC-FUNCTION MAKE-INSTANCE #x30200002C2AF> (#<STANDARD-METHOD MAKE-INSTANCE #> #<#> #<#>) NIL NIL ..) (#<GOBJECT:GOBJECT-CLASS CL-WEBKIT2:W..
17: (CCL::%CALL-NEXT-METHOD-WITH-ARGS (#(#<STANDARD-GENERIC-FUNCTION MAKE-INSTANCE #x30200002C2AF> (#<#> #<#> #<#>) NIL NIL (#<#> #<#>)) (#<CCL::STANDARD-KERNEL-METHOD MAKE-INSTANCE (STANDARD-CLASS)>) ..)..
18: (#<STANDARD-METHOD MAKE-INSTANCE (GOBJECT:GOBJECT-CLASS)> #<GOBJECT:GOBJECT-CLASS CL-WEBKIT2:WEBKIT-WEB-VIEW> :CONTEXT #<CL-WEBKIT2:WEBKIT-WEB-CONTEXT #x3020031F4B5D>)
19: (CCL::%%CNM-WITH-ARGS-COMBINED-METHOD-DCODE #(#<STANDARD-GENERIC-FUNCTION MAKE-INSTANCE #x30200002C2AF> (#<STANDARD-METHOD MAKE-INSTANCE #> #<#> #<#>) NIL NIL ..) 17568840285555 NIL)
20: (NIL #)
21: (CCL::%MAKE-INSTANCE #<CLASS-CELL for CL-WEBKIT2:WEBKIT-WEB-VIEW #x302002F8D63D> :CONTEXT #<CL-WEBKIT2:WEBKIT-WEB-CONTEXT #x3020031F4B5D>)
22: ((:INTERNAL INTERFACE:MAKE-WEB-VIEW))
23: (LPARALLEL.PROMISE::FULFILL-PROMISE #S(LPARALLEL.PROMISE::%PROMISE :RESULT LPARALLEL.PROMISE::NO-RESULT :LOCK #<RECURSIVE-LOCK "Anonymous lock" [ptr @ #x7FD49C197E00] #x3020031E848D> :CVAR ...) #<COMP..
24: (CFFI-CALLBACKS::|GTK::CALL-FROM-MAIN-LOOP-CALLBACK| 17568946061638)
25: (CCL::%PASCAL-FUNCTIONS% 75 17568946061638)
26: (NIL #)
27: (GTK::%GTK-MAIN)
28: ((:INTERNAL GTK:ENSURE-GTK-MAIN))
29: ((:INTERNAL BORDEAUX-THREADS::BINDING-DEFAULT-SPECIALS))
30: (CCL::RUN-PROCESS-INITIAL-FORM #<PROCESS cl-cffi-gtk main thread(13) [Active] #x3020031E966D> (#<COMPILED-LEXICAL-CLOSURE (:INTERNAL CCL::%PROCESS-RUN-FUNCTION) #x3020031E93FF>))
31: ((:INTERNAL (CCL::%PROCESS-PRESET-INTERNAL (PROCESS))) #<PROCESS cl-cffi-gtk main thread(13) [Active] #x3020031E966D> (#<COMPILED-LEXICAL-CLOSURE (:INTERNAL ..)))
32: ((:INTERNAL CCL::THREAD-MAKE-STARTUP-FUNCTION))
eql5 -qgui
works!
~/Downloads/nEXT/next$ eql5 make
EQL5 17.7.1 (ECL 16.1.3, Qt 5.7.1)
;;; Loading #P"/home/dead/.eclrc"
;;; Loading "/home/dead/quicklisp/setup.lisp"
;;; Loading #P"/usr/local/lib/ecl-16.1.3/asdf.fas"
To load "cl-strings":
Load 1 ASDF system:
cl-strings
; Loading "cl-strings"
And it's been like this for a day :-)
OS - Ubuntu 17
ECL - 16.1.3 built from tarballs
I can't see this feature in the manual, maybe it exists?
I think it would be emacsy to bind it to g
It's a bit unusual these days to start with http:// :-). Also, this is a perfect candidate for my first PR.
This project is awesome. Is there any way to contribute to this financially? Not like I can offer much but I would so love to support this and make sure it sticks around.
Is anyone else interested in splitting windows emacs style. I've implemented a super simple prototype in the cocoa version (splitting window in half horizonally and manually updating the window url from the repl) and it seems to work nicely.
Does anyone else like this idea. I've included a screenshot of the hack in action, just want to gather opinions on whether it's worth implementing this fully (horizonal and vertical splitting, resizing window switching etc.)
Hi, thanks for the browser, seems tons of fun.
I wanted to start hacking it but I can't seem to find the documentation on how to do what I want.
Basically I want to create a shortcut that when executed takes the url of the page I am currently looking at and paste it to the youtube-dl command line program. So following the example I created a init.lisp script in ~/.config/next/
and put in it :
(in-package :next)
(defun dl-video ()
(uiop:run-program '("youtube-dl" "http:url")))
(define-key *global-map* (kbd "C-d y")#'dl-video)
And i'd like to know if there is a global variable (or any other way for that matter) from which I could fetch the current url ( basically the youtube one) and put it at the place of "http:url".
I've never done any Lisp but since it looked quite straight forward I wanted to have a try at it.
For now this is all I want to do, maybe later add a callback to display the stdout of my program or even test if youtube-dl is installed in the first place and if the link pasted is a youtube url.
If you could help me or point me to the correct documentation it would be very appreciated.
S-s k: Delete Bookmark
S-s o: Open Bookmark
S-s s: Bookmark Current Page
Hi,
According to your user manual, the special key is the command key on macs, but when I try using the command key for the above commands, I cannot use the bookmark function at all. I have tried the other keys as well. Can you please let me know how to use this function as I really need it.
A .Deb would be very helpful ☺
I'm trying to load the system of nEXT and do some coding on Emacs.
I put the source code in the local project folder of quicklisp and did as below.
(ql:quickload :next)
(next:start)
After loading the system and calling the start function,
the browser comes up, but I cannot load URL in tab with C-l.
https://gyazo.com/b86cc7d9fb6d645808695ad6b9f79fdf
My environment is:
OS: macOS 10.13.1 High Sierra
CCL: Version 1.11-r16635 (DarwinX8664)
The project is currently building for High Sierra (10.13). Any chance we can get a release built for 10.12?
Platform: macOS 10.13.2
Steps to reproduce:
Hello,
I downloaded the MacOS binary hoping that it would be backwards compatible with my OS X 10.10.5 (Yosemite) but could not get the application to open/function. Are there any plans to make the nEXT browser backwards compatible with at least some of the OS X operating systems?
Thank you,
Bohdan
On Mac OS X High Sierra, C-g does not generate link hints on any page - just an audio error chime.
Maybe as a git submodules. The idea is to have reproducible/self-contained builds.
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.