Giter Site home page Giter Site logo

wavetermdev / waveterm Goto Github PK

View Code? Open in Web Editor NEW
2.7K 2.7K 63.0 21.42 MB

An open-source, cross-platform terminal for seamless workflows

Home Page: https://www.waveterm.dev

License: Apache License 2.0

TypeScript 40.71% Less 6.44% HTML 0.08% JavaScript 0.97% Go 50.92% Shell 0.26% Smarty 0.02% CSS 0.60%
command-line developer-tools linux macos

waveterm's People

Contributors

adred avatar ahanafy avatar anandamarsh avatar dependabot[bot] avatar esimkowitz avatar gonzolively avatar ianjennings avatar june23hy avatar lukasaristide avatar mrstashley avatar oneirocosm avatar sawka avatar tracymiranda 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  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  avatar  avatar  avatar  avatar  avatar  avatar  avatar

waveterm's Issues

Hope to add feature: set default shell

Is your feature request related to a problem? Please describe.
When my system's shell is bash, but I want to use fish as my terminal shell, I find that currently I can't do that.

Describe the solution you'd like
I want to add a setting that allows users to set the default shell for the terminal.

image

Ignore spurious SSH output that precedes init packet

from discord. a user reported a broken remote connection because their SSH implementation outputs a special string at the beginning of the SSH session. the init packet follows the extra output.

maybe it is possible to ignore spurious output on the connection until we see the "\n##" start of the init packet (and not throw an error)?

adding this bug as a placeholder to investigate whether adding this fix will be easy or not.

Up/Don arrow keys navigate history [Feature Request]

I am used to pressing up and down arrow key to navigate through the bash history. Would be nice if Wave could mimic the same. Or at least have an option to enable this, if you have other plans for the up/down arrow keys for something else.

Add bash history as ctrl-R option

When searching in history, there are multiple options to find the command you're looking for, for screen and remote. But I'm missing the option to search in the "normal" bash history. Since there already are 3 options for ctrl-S, perhaps an option to add this as (default?) option to ctrl-R?

#bash> history

While trying: history does not give any results. Then I tried bash and history from there, and the result was showing the history, but unexpectedly, the shell was opened within the command result screen. That might be an undesired result?
image
image

Unable to display filename with Chinese Characters

I have a bunch of PDF file in with Chinese characters in the filename, and when I issue "ls" command, I see all Chinese characters becomes ????

So I wonder does Wave Terminal Supports Unicode and UTF-8 ?

Screenshot 2023-11-30 at 12 29 56 AM

Strange Formatting on TOS Screen

After the latest update, the formatting on the TOS screen is incorrect. In particular, the message for the TOS itself is left-justified instead of centered. It also appears that this screen is no longer being formatted as a modal.

tos-screen

Steps to Reproduce

If you have not downloaded waveterm, you can reproduce this by simply downloading, building, and launching the program.

If you have downloaded waveterm, you will need to take an extra step. The easiest way would be to either delete or move your ~/.waveterm-dev directory to a backup directory so it can be stored. WARNING: deleting the ~/.waveterm-dev will delete all of your history. Once this is done, simply start up the program as usual.

Desktop

All platforms

Flatpak support

Is your feature request related to a problem? Please describe.

I would like to be able to install the app without adding files to the root file system.

Describe the solution you'd like

Flatpak is the modern package format for Linux and is disto-agnostic. It provides a sandbox, so users are more protected installing your software. And for the developer it allows supporting dozens of different Linux distos with just a single package. It also comes with a wonderful "store" for users to discover your app and install it: https://flathub.org/

Please consider distributing the Wave Terminal on Flathub.

"Error, could not connect." for a reason I am not being able to identify.

I'm on openSUSE, as soon as I launch Wave, I get "Error, could not connect.", following by this output messages:

prompt> error connecting to remote: invalid packet received from mshell client: raw[[error] aliases:5:402: - must be followed by an expression]
prompt> error reading from controlling-pty: read /dev/ptmx: input/output error

This only happens on my openSUSE installation.
On the same computer on Fedora or Debian, I do not get this error.

I also built it from source to try, but the same error happens.

Nothing relevant is showing either in the wavesrv.log file.

Any idea?

Connect failed because remote server doesn't have GLIBC dependency

Describe the bug
prompt> error connecting to remote: invalid packet received from mshell client: raw[mshell-v0.3: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.34' not found (required by mshell-v0.3)]
prompt> error reading from controlling-pty: read /dev/ptmx: input/output error

To Reproduce
Steps to reproduce the behavior:

  1. Go to Connections
  2. Click on install
  3. Scroll down to prompt
  4. See error

Expected behavior
connect success.

Screenshots
图片

Desktop (please complete the following information):

  • OS: [Linux, x64]
  • Version [v0.5.0]

Additional context
The remote server indeed has not the regular glibc.

Loading content after changing renderer to "code" stucks

Describe the bug
Reformatting of pom.xml to code stucks. (waited > 15mins)

To Reproduce
Steps to reproduce the behavior:

  1. Go to a directory with a pom.xml (e.g. this one https://github.com/jeremylong/DependencyCheck/blob/main/pom.xml)
  2. Open file with "less pom.xml"
  3. Click on "line settings" icon
  4. Change Renderer from "terminal" to "code"

Expected behavior
The file content will be rendered in colors.

Screenshots

Bildschirmfoto 2023-11-25 um 13 46 51

Desktop (please complete the following information):

  • OS: MacOS x64
  • Version: v0.5.0

Wave installation on Ubuntu

Describe the bug
I tried to install Wave on Ubuntu 20.04 and I faced this error:

MESA-INTEL: warning: Performance support disabled, consider sysctl dev.i915.perf_stream_paranoid=0

[12713:1129/150921.385063:ERROR:gl_surface_presentation_helper.cc(260)] GetVSyncParametersIfAvailable() failed for 1 times!
[12713:1129/150921.392479:ERROR:gl_surface_presentation_helper.cc(260)] GetVSyncParametersIfAvailable() failed for 2 times!
[12713:1129/150924.816429:ERROR:gl_surface_presentation_helper.cc(260)] GetVSyncParametersIfAvailable() failed for 3 times!

To Reproduce
Steps to reproduce the behavior:

  1. Download Wave and extract the zip file
  2. Run ./Wave in terminal

Screenshots
Screenshot from 2023-11-29 15-12-01

Desktop:

  • OS: [Ubuntu/Linux, x64]
  • Version: 20.04

Unable to Add Orbstack Machine to Connections

Describe the bug
I use another piece of software called Orbstack. One really cool thing it allows you to do is create what is basically a VM that runs on your own machine. And by default, they are accessible by SSH to your machine only. However, after reading the release notes for 0.5.1, I assume the issue is that the REGEX for the connection only allows for one '@' symbol. Just like how it wouldn't allow for dots or underscores which was an issue for me as well.

To Reproduce
Steps to reproduce the behavior:

  1. Install Orbstack
  2. Configure Linux Machine
  3. Configure connection to Orbstack machine on Waveterm

Expected behavior
Creates an SSH connects to the specified host.
Screenshot 2023-12-06 at 12 30 02 PM

Screenshots
image

Desktop (please complete the following information):

  • OS: MacOS
  • Version 0.5.1

Additional context
Need to have Orbstack installed and configured.

Bug with ANSI escape sequence

Issue:

  • Erase screen sequence does not work
  • The second move cursor down sequence does not work
  • � is not rendered properly

How to reproduce:

  1. Make a file named index.ans and put the content below inside
�[2J�[H�[1m�[3B�[32m�[6CWave term is awesome!�[0m�[3B
  1. Explanation
�[2J = Erases entire screen
�[H = Moves cursor to home position (0, 0)
�[1m = Sets bold mode
�[3B = Moves cursor down 3 lines
�[32m = Sets color to green
�[6C = Moves cursor right 6 columns
Wave term is awesome! = The text
�[0m = Resets the color
�[3B = Moves cursor down 3 lines
� = \u001B which is a standard escape character
  1. cat the file: cat index.ans
  2. Output from wave term:
    image
  3. Output from system default terminal:
    image

Integrate codeedit with VISUAL/EDITOR

Would like to integrate codeedit with linux's "EDITOR" / "VISUAL" environment variables. So if I set $EDITOR=codeedit I can get Wave's codeedit to run in place of nano or vi.

Add explainshell integration

Is your feature request related to a problem? Please describe.
Wave terminal attempts to be a friendly terminal manager. Many new terminal users and also veterans struggle to remember command line arguments, and parsing through man pages is time consuming. It is often the case that commands are copied and run from online sources without the user understanding the full meaning of the command + options.

Describe the solution you'd like
Integrate https://github.com/idank/explainshell into the wave terminal so that I can see a breakdown of a command + options before and or after execution. Optionally also integrate tldr examples https://github.com/tldr-pages/tldr so a user can hover or click on a command and see common usage examples.

This may be possible by leveraging the bash language server: https://github.com/bash-lsp/bash-language-server

Note
I believe if you add this feature Wave could become very popular

Suggestions for making the UI more minimal

Is your feature request related to a problem? Please describe.
The Wave Terminal has great potential, and brings a fresh and innovative approach to terminal emulators. However, for an application used by developers on a daily basis a more minimal UI with less distracting elements would be beneficial. The more space that is available to terminal input and output the better.

Describe the solution you'd like
Here's a few proposal I believe could make the Wave Terminal even better than it is today.

Consider removing the left side-bar menu as this takes a fair bit of horizontal screen estate. Or, at least make it more minimal when hidden. As shown in the following image when minimized it is still taking quite a few pixels of the width:

image

Provide better integration with Gnome and remove the "Wave File Edit ..." bar. As an example compare Gnome Terminal to Wave:

image
image

Consider removing Documentation and Discord, or moving to the application menu. The majority of developers do not need to see these links on a daily basis

Workspaces are a great feature, but I wonder if it would be better to have these at the top above the tabs for each workspace. That could bring a more minimal view, and also make it more seamless to switch between workspaces and tabs.

Add support for using ssh config file for connections

While using wave terminal, you have to set up the details of each connection in the interface. If you've already defined the connections in your ~/.ssh/config file, they have to be reentered.
Would be a great feature to have it already fill out the connections(could be opt in too) with what is in the ssh config file.

Anyway to delete or re-edit connections?

Describe the bug
I found no way to delete or re-edit any one of existing connections. That's terrible but seems even no one mentioned, as I searched in the Internet.

To Reproduce
Steps to reproduce the behavior:

  1. Open Waveterm Terminal;
  2. Click on 'Connections';
  3. Select a connection;
  4. Failed to change user@host, and can't delete it.

Desktop:

  • OS: Linux, x64
  • Version: v0.5.0

No dots in ssh username supported

Describe the bug
When I want to create an SSH connection and use a username with dot (e.g. robert.porscha) I get an error message, that the argument has an invalid format.

To Reproduce
Steps to reproduce the behavior:

  1. Go to 'Connections'
  2. Click on 'Add SSH connection'
  3. Enter 'robert.porscha@sshhost' (hostname does not matter) in "user@host" field
  4. Click on "Create Remote"
  5. See error "Error: /remote:new invalid format of user@host argument"

Expected behavior
I would have expected that any kind of username is supported, as in native ssh command.

Screenshots
Bildschirmfoto 2023-11-25 um 14 10 05

Desktop (please complete the following information):

  • OS: MacOS, x64
  • Version: v0.5.0

Specify OpenAI API Base url

Is your feature request related to a problem? Please describe.
I would like to use self hosted model or to leverage Azure endpoint.

Describe the solution you'd like
Be able to specify the openAI base url.

Command blocks: setting for command's number of lines

IMHO, one of the awesome and so innovative features of Wave terminal is these command blocks.

The issue I'm facing is the number of lines displayed in past command blocks. Often I need to see more than the 4 lines currently displayed -- I know I can scroll, but this is not very handy. Picture below.

image

A setting could be great to let people adjust the number of lines, eg.: [1-99], [0 for infinity]. Personally, based on my usages, I guess I would choose 6 or 7.

impossible to connect to ubuntu with ssh setup to use password+totp

Describe the bug
tried with manual or password; either I am not requested to enter the validation key (manual mode keeps asking me for the password) either it hangs when I should type the validation key.

To Reproduce
Steps to reproduce the behavior:

  1. setup TOTP using google approach
  2. create new connection
  3. Edit connection doesn't work

Expected behavior
connection should start.

Desktop (please complete the following information):

  • OS: M1
  • Version v0.5.1 through brew

connections with auth type key+password can not connect

Describe the bug
Connections with auth type key+password doesn't enter passphrase to connect, then cursor is flashing when the step is "Enter passphrase for key", after that it shows "connect timeout".
My key passphrase just contains letters and numbers.

To Reproduce
Steps to reproduce the behavior:

  1. Go to 'Connections'
  2. Click on '+ New Connection'
  3. Config the server info and Click 'connect'
  4. See error

Expected behavior
Just connect to the server.

Screenshots
Xnip2023-12-07_14-15-06

Desktop (please complete the following information):

  • OS: MacOS 13.6
  • Version v0.5.1

Additional context

Support for arbitrary repl process

Hello, thanks for creating this utility. It looks quite nice. Being able to get a notebook style utility for shell is quite handy.

I am curious if it would be possible to use the nb interface for not just the linux shell but also other arbitrary repls like node, psql, aws-shell, nushell etc.

Currently, when I run node I get a repl within the notebook cell:

image

What I'd want is a way so that once I spawn node shell, the input/output for subsequent cells to be handled by the node process.

International Characters Appear as Question Marks

Describe the bug
When viewing files with the ls command, terms other than English are not displayed properly

Expected behavior
Korean must be displayed properly

Screenshots

스크린샷 2023-11-25 오후 10 47 45

Desktop (please complete the following information):

  • OS: MacOS Apple M1 Pro
  • Version: Sonoma 14.1.1

Additional context
I'd appreciate it if you could fix it.

Add ability to have a background image per tab

It would be great to be able to set a custom background image per tab. This is helpful e.g to visually quickly know which tab you are for remote sessions.

Describe the solution you'd like
Set a background image in tab settings or via /screen:set command. Support for older style terminal png images would work.

Some suggestions

  • Add icon to remove some item/prompt from history
  • Add icon to edit item/prompt from history
  • when we have two cat command in two prompt, the nice divider will be good then two windows.
  • tree command should show in left like nvim-tree.lua in neovim..., to easy see pwd in tree and easy to open/view or cd or inner path using tree

"clear" should not remove running commands

from discord. when there are commands that are running (active), running "clear" should not remove them.

same for when deleting/archiving a screen. it should warn about not being able to do that with running commands. maybe an option or flag that could be passed to force a "HUP" on all currently running commands in a screen to force clear.

(one other thing to worry about -- if the HUP doesn't end up killing the process, where should the commands go? is there a detached commands area to keep them in -- like how processes get reparented when the shell session dies?)

Waveterm should respect user's login shell (or at least $PATH) (Mac specific)

Describe the bug
Waveterm always start /bin/bash as its base shell (see electron/emain.ts). If there is a different bashon the system, e.g. in /opt/homebrew/bin/bash, it is ignored. Also, the $PATH is ignored.

To Reproduce
Steps to reproduce the behavior:

  1. Change user's login shell to /opt/homebrew/bin/bash
  2. Start Waveterm
  3. echo $BASH_VERSION
  4. Version 3 bash is used.

Expected behavior
Waveterm should either

  1. Use dscl . -read /Users/$USER UserShell to determine the user's login shell, and start that.
  2. Find bash by looking at $PATH

Screenshots

Desktop

  • MacOS
  • Version v0.5.1

Additional context

Wave client disconnected (glibc version issue)

Ubuntu 22.04 I've got the dialog window with logs:

[2023-11-25 16:50:17] try reconnect (1)
[2023-11-25 16:50:17] connection error/disconnected
[2023-11-25 16:50:17] sleeping 2s
[2023-11-25 16:50:19] try reconnect (2)
[2023-11-25 16:50:19] connection error/disconnected
[2023-11-25 16:50:19] sleeping 5s
[2023-11-25 16:50:24] try reconnect (3)
[2023-11-25 16:50:24] connection error/disconnected
[2023-11-25 16:50:24] sleeping 10s
[2023-11-25 16:50:34] try reconnect (4)
[2023-11-25 16:50:34] connection error/disconnected
[2023-11-25 16:50:34] sleeping 10s
[2023-11-25 16:50:44] try reconnect (5)
[2023-11-25 16:50:45] connection error/disconnected
[2023-11-25 16:50:45] sleeping 30s
[2023-11-25 16:51:15] try reconnect (6)
[2023-11-25 16:51:15] connection error/disconnected
[2023-11-25 16:51:15] sleeping 60s

Nothing helps with it.

Invalid cwd for command

Describe the bug
When attempting to execute any command, it returns an error: invalid cwd ' /home/margret ' for command: stat /home/margret : no such file or directory. Running stat /home/margret from a different terminal works. Version v0.5.0.

To Reproduce
Steps to reproduce the behavior:

  1. Download application
  2. Click on terminal box and type any command, press enter
  3. See error

Expected behavior
The command should execute and the results should be returned.

Screenshots

image

Desktop (please complete the following information):

  • OS: EndeavourOS (Arch Linux) X86_64 [e.g. MacOS/Linux, x64 or arm64]
  • Version: v0.5.0
$ neofetch 

                     ./o.                  margret@nobody-t14 
                   ./sssso-                ------------------ 
                 `:osssssss+-              OS: EndeavourOS Linux x86_64 
               `:+sssssssssso/.            Host: 20UES3GB00 ThinkPad T14 Gen 1 
             `-/ossssssssssssso/.          Kernel: 6.6.3-arch1-1 
           `-/+sssssssssssssssso+:`        Uptime: 35 mins 
         `-:/+sssssssssssssssssso+/.       Packages: 2085 (pacman) 
       `.://osssssssssssssssssssso++-      Shell: bash 5.2.21 
      .://+ssssssssssssssssssssssso++:     Resolution: 1920x1080 
    .:///ossssssssssssssssssssssssso++:    DE: Plasma 5.27.9 
  `:////ssssssssssssssssssssssssssso+++.   WM: KWin 
`-////+ssssssssssssssssssssssssssso++++-   Theme: [Plasma], Breeze [GTK2/3] 
 `..-+oosssssssssssssssssssssssso+++++/`   Icons: [Plasma], breeze-dark [GTK2/3] 
   ./++++++++++++++++++++++++++++++/:.     Terminal: yakuake 
  `:::::::::::::::::::::::::------``       CPU: AMD Ryzen 5 PRO 4650U with Radeon Graphics (12) @ 2.100GHz 
                                           GPU: AMD ATI 07:00.0 Renoir 
                                           Memory: 5564MiB / 15212MiB 

Customise font settings

Is your feature request related to a problem? Please describe.
Initial Request by Discord User eosdev

We cannot change the font of the terminal for now.

Describe the solution you'd like

The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in RFC 2119.

  • Being able to customise the font style [1]
    • MUST font-family
    • MUST font-size
    • MUST font-weight
    • SHOULD font-ligatures
    • MAY font-variant
    • MAY font-feature-settings
  • Being able to customise the font layout [1]
    • MUST line-height
    • SHOULD letter-spacing
    • SHOULD word-spacing

Please, reference this issue in your PR so I can update the check-list 🙏

Additional References
If you would like to implement this feature but are a novice with typography, take a look at:

[1] https://developer.mozilla.org/en-US/docs/Learn/CSS/Styling_text/Fundamentals#fonts

This should apply to wave as we are using Electron.

Add a word/line wrap setting for codeedit

codeedit currently doesn't have an auto wrap functionality so it makes it difficult to read/edit long running lines

Describe the solution you'd like
Have autowrap type functionality which can be toggled on/off. Or line wrap similar to vscode.

Reorganizing shells/tabs

I would like to ask for an improvement for the shell/tab handling.

"Allow adding shells/tabs to other workspaces"

In normal terminals, I sometimes stumble of directories or files that belong to a specific topic (e.g. Kafka prototyping) when searching for something or have commands for specific projects. Unfortunately, I lose this information after continue working on my current task.

From my perspective it would be great to have a way to move/copy those shells/tabs or bookmarks to a specific workspace that I can label then with "Kafka ideas" or "cloud commands" instead of using the actual shell history.

Missing important productivity features

I must commend wave for being an impressive new terminal tool, but it still lacks some important productivity features:

  1. Automatically reconnect all connections when opening the workspace.
  2. Implement a broadcast input feature for batch operations on all hosts within the workspace, similar to iTerm2's "Broadcast input."
  3. Currently not supporting the rz/sz commands for quick file uploads. Alternatively, provide a better file upload/download solution.
  4. Enable free-form session arrangement views within the workspace, similar to iTerm2's Panel [command + D / command + shift + D ...].
  5. Support dragging and detaching tabs into independent windows, with the option to recombine them. Behavior similar to Chrome / iTerm2.
  6. Currently only supporting bash, with an expectation to support other shells like zsh/fish.
  7. Support exporting workspace/config files or cloud synchronization to other hosts, while addressing security concerns such as private keys/passwords.
  8. Ensure that codeview/codeedit supports vim shortcuts.
  9. Some advanced ideas and features: 1) Code snippet manager for saving commonly used commands, supporting shorthand input. 2) Task scheduler for performing timed operations on hosts, with some flexibility. 3) Connection to proxy servers for accessing hosts within private networks.

"Error connecting to remote" only for centOS ssh server

Something went wrong when I'm trying to connect my three difference version CentOS servers, all of them are using the bash shell.
I got these errors.


Server 1

error

error connecting to remote: invalid packet received from mshell client: raw[which: no mshell-v0.3 in (/usr/lib64/qt-3.3/bin:/home/rexdu/perl5/bin:/usr/local/bin:/usr/bin:/home/rexdu/.mshell)]

Server 2
error:

error connecting to remote: invalid packet received from mshell client: raw[/usr/bin/python: Error while finding module specification for 'virtualenvwrapper.hook_loader' (ModuleNotFoundError: No module named 'virtualenvwrapper')]

Server3
error

 Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password).
prompt> error connecting to remote: no init packet received from mshell client

For server1, I want to know:

  • Can I install mshell for this server to help wave terminal solve this problem?
  • If there is a binary file for me to easier install?Case you know, it's really hard to compile the file, especially on the server.

For server2, I wan to know:

  • Can I solve this problem by install virtualenvwrapper? If it will work, which kind of pip should I use, pip or pip3?

I didn't get any problem on Ubuntu.
Please help me to solve these problems.

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.