Giter Club home page Giter Club logo

yarnclassic's Introduction

๐Ÿšจ This project is going through planned refactoring and re-evaluation of goals.

This project's playtesting and syntax highlighting is not fully compatible with Yarn Spinner 2. Please use the Yarn Spinner Extension for Visual Studio Code if you need those features and have vscode instead.

To learn more about Yarn Spinner 2, please see the Yarn Spinner documentation. Yarn Spinner 2 is free and open source, and contains fantastic improvements over Yarn Spinner 1! To learn more, please join the friendly Yarn Spinner Discord community!

This project's future goals are changing!

  • While the vscode extension is going to be used by professional developers, this version will remain to target the casual user. It has a much smaller footprint and can run on anything from the browser or as an installed PWA. We will take steps to continue that trend and slim it down
  • Ability to save your work in the cloud will remain and be improved, so you can edit your work from a smartphone or a tablet on the go, without having to move files manually.
  • Electron version is going to be deprecated in favor of the PWA version. You can still install the PWA version on your computer or mobile device by clicking on the "Add to home screen" button on the bottom. The PWA version will be on par feature wise with electron and have a smaller footprint on the user's computer. This will also make the project easier to maintain. The pwa api of chromium now supports all that it needs
  • Extensibility will be improved by introducing a new extension api. The code needs to be simplified and organised a bit.

Build

Yarn Classic ๐Ÿฑ ๐Ÿงบ

Dialogue editor created for "Night in the Woods" (and other projects) by @blurymind, @NoelFB and @infinite_ammo with contributions from @seiyria and @beeglebug. It is heavily inspired by and based on the amazing Twine software: http://twinery.org/ It supports editing, syntax highlighting and testing for Yarn and InkleStudio Ink files syntax files. It can also export from Yarn to twine and use github gistfor cloud backup!

๐Ÿงถ Live Web APP (Use it in the browser)

https://blurymind.github.io/YarnClassic/
Yarn web app

๐Ÿ“ฒ Install the App on your compuer or mobile device

  1. Visit https://blurymind.github.io/YarnClassic/
    with your web browser (chrome, chromium, opera, brave, or edge - any chromium based browser ideally)
  2. Open the web browser's menu and select "Add to home screen"
  3. When you run Yarn from the home screen, it will work in full screen mode, even when you are offline!

Yarn web app

๐Ÿ“ Supported formats:

  • yarn 1 format open/save (json and yarn) Example (playtesting supported)
  • ink format open/save Example (playtesting supported)
  • renpy format save Example
  • twine (twee/twee2) open/save Example
  • bbcode and html/xml tag styling support

Ability to save to the cloud (gist)

https://blurymind.github.io/YarnClassic/?gist=gistIdHere&fileName=yourFilename.ext

with gistId=1252aaa8f74a394b3ac5695107f16e51 and fileName=yarnExample.json in that gist, you do:

https://blurymind.github.io/YarnClassic/?gist=1252aaa8f74a394b3ac5695107f16e51&fileName=yarnExample.json

Just replace this with your private or public gist and the file in it you want to share - to create a link

๐Ÿ’ป Install it on your desktop

Please follow the steps for the PWA version of the app, as the electron one will be deprecated later this year

๐Ÿšง Roadmap

You can see planned features, vote for features or see how you can contribute at the roadmap here: https://trello.com/b/ZXhhOzDl/yarn-roadmap

๐ŸŽฎ Game engines that bundle Yarn Classic

There are a few game engines that have Yarn Classic bundled with their IDE. That means that you can use it straight in those engines, without need to save files and open files and so on. It's directly integratedin their workflow!

  • Gdevelop : A full-featured, open-source game development software, allowing to create HTML5 and native games without any knowledge in a specific programming language. All the game logic is built up using an intuitive and powerful event-based system. https://github.com/4ian/GDevelop

๐Ÿง  Yarn runtimes

The runtime is a library that allows your game engine to parse the files that yarn creates. There are a couple of popular ones that you can use. If you have created a runtime, you are working on one or want to get one included with your game engine, these can be of some use to you

Other implementations of Yarn Editor

๐Ÿฌ Features ๐Ÿฆ„

Portability

  • Yarn Classic has PWA version you can install and run when offline, which has a much smaller footprint than other editors using electron.
  • The pwa can run on mobile devices with smaller screens - you can use it on your phone and it's much easier to install.
  • There is of course also an electron version of the editor, which is slower on updates but more stable

BBcode and HTML-ish markup styling in editor, Spellchecking, Autocompletion, and more!

  • Optional syntax autocompletion (autoclose tags)
  • preview of bbcode/html tag effects and goto in trimmed nodes
  • optional word guessing and autocompletion
  • optional preview bbcode in editor mode
  • a color picker (using spectrum.js) to set font color in bbcode
  • emoji picker to insert emojis
  • nodelink suggestions as you type in the right places
  • Night mode - Toggling it will invert all the light colors which the editor currently uses
  • A context menu command to visit other nodes via their links in the editor and even create new ones
  • Button to go back to the previous edited node. If there is no previous - save and close the current one yarn-0 3 5-newfeatures

Language, writing and debugging tools built right into it (Yarn and Ink)

  • Ability to playtest Yarn and Ink stories you are working on - straight inside the editor Screenshot
  • Spellchecking of words (supported for different languages too)
  • misspelled word suggestions in the new context menu - if you have selected a misspelled word
  • Similar word suggestion for highlighted words (supported for english only)
  • Transcribe text - ability to "talk" to yarn without using hands :o (multi-language supported)
  • Yarn can also talk to you - tell you what is written (multi-language supported)
  • Support for compilation and debugging of ink files via the wasm port inklecate. It catches the error and opens the knot containing it when exporting or testing! Screenshot

Load and Save your yarns from your computer, github gists or anything you can send it to on your tablet/phone

  • A variety of export formats supported - yarn, json yarn, twee, twee2, xml
  • When used from a mobile device, yarn can send its data to any other app, including to google drive
  • Ability to store and load all your yarns using a github gist - private or public, doesn't matter ;)

Customization!

  • Support for different themes (you can make your own too)

โš™๏ธ Compile and run web app on localhost:

Make sure you have nodejs installed. Then from the root folder

npm install

npm start

You can access it on your smartphone too if it is on the same wifi network

To build web app:

npm run build

you will find it in the /dist folder

To compile and run electron app:

First of all you need to have compiled the web app (see previous steps)

cd electron

npm install

npm start

To build an electron yarn executable yourself:

cd electron

npm run build-windows

or

npm run build-linux

๐Ÿ˜ฎ Examples

Games built using Yarn.

A short hike: https://store.steampowered.com/app/1055540/A_Short_Hike/

Screenshot

Night in the woods: https://store.steampowered.com/app/481510/Night_in_the_Woods/

Screenshot

Lost Constellation: http://finji.itch.io/lost-constellation

Screenshot

Knights and Bikes: https://store.steampowered.com/app/592480/Knights_And_Bikes/

Screenshot

Far From Noise by George Batchelor (@georgebatch): https://store.steampowered.com/app/706130/Far_from_Noise/

Screenshot

YarnTest: http://hayley.zone/bondage.js/

Test drive your Yarn files here ^

How to Connect Nodes

Node connections work similar to Twine. [[ask question|question]] leads to "question" node. Screenshot

How to Import Twine Files

One way to import Twine files into Yarn is to export a "Twee" file from Twine. (txt format) Open this txt file in Yarn as you would any other file.

Note: This method of importing will not preserve node locations, just each node's title, body and tags.

How to Run Your Dialogue in Unity

You can find basic Yarn parsing and playback example code here:

https://github.com/InfiniteAmmoInc/yarn-test

You can find a more advanced Yarn interpreter here:

https://github.com/YarnSpinnerTool/YarnSpinner

Yarn Icon

Yarn logo/icon created by @Mr_Alistair.

Icon

yarnclassic's People

Contributors

actions-user avatar adamgryu avatar alecholowka avatar alistairwoodcock avatar blurymind avatar brainblasted avatar chetrippo avatar cvertee avatar daviddq avatar desplesda avatar faultyfunctions avatar grizeldi avatar infiniteammoinc avatar jamesandrewjackson13 avatar julsam avatar kaosumaru avatar nospoone avatar ohiogauze avatar parisba avatar prayagverma avatar qworg avatar rickdoesdev avatar seiyria avatar simianlogic avatar stefanjanssen95 avatar subliminalman avatar tekknobabblr avatar tranquilmarmot 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  avatar  avatar

yarnclassic's Issues

Support for Twee Setter Links?

Issue by konistehrad
Wednesday Mar 23, 2016 at 00:27 GMT
Originally opened as InfiniteAmmoInc/Yarn#26


Twine supports a more robust version of a link called a setter link, which assigns variables at the time a jump is made. Importing a twee file using these links, however, doesn't show the links, and YarnSpinner (for example) also cannot parse them. Is there planned support? If there is not, was this decision made explicitly, or would there be interest in this feature?

Thanks for all your hard work on this project!

[CLOSED] Documentation for file formats

Issue by edkek
Thursday Mar 02, 2017 at 15:59 GMT
Originally opened as InfiniteAmmoInc/Yarn#45


I can't seem to find any documentation for the different file formats that Yarn exports. I want to write a library for LibGDX that adds support for the files Yarn exports.

I can get a general idea in data.js but I think it'd be useful to have written documentation somewhere for future developers who want to use Yarn for other languages/frameworks other than Unity. (maybe the wiki?)

I can document them as I go, but I don't know where to put it..

Mouse-wheel actions for Zoom and Scroll aren't contextual, happen simultaneously

Issue by 3noneTwo
Monday Oct 17, 2016 at 14:07 GMT
Originally opened as InfiniteAmmoInc/Yarn#40


Simple little bug/quality-of-life feature. If a node has enough text in it, a scrollbar will appear while the mouse is hovering over the node. But if you use your mouse-wheel to scroll through the text field, it'll also zoom in/out.

yarnzoomscroll

It'd be nice if Yarn didn't zoom while the mouse is hovering over a scrollable text field.

[CLOSED] Copy/Paste/Undo on Mac don't use command key

Issue by InfiniteAmmoInc
Wednesday Apr 01, 2015 at 12:31 GMT
Originally opened as InfiniteAmmoInc/Yarn#2


For some reason it seems tricky to get the command key to work on Mac. Instead CTRL+C, CTRL+V, CTRL+X, CTRL+Z are being used for now.

An attempt was made to capture the command key into the self.appleCmdKey variable. This seems to be getting set properly, but using it to detect key combos doesn't seem to work yet.

[CLOSED] [Question] Is there a way to navigate to a node without a user choice button?

Issue by Barryrowe
Wednesday Mar 15, 2017 at 02:37 GMT
Originally opened as InfiniteAmmoInc/Yarn#46


I'm looking for a way to do the following:

<<if visited("SectionA") is false>>
Hi There
*Instead of a line of text, the "next" button takes you to | SectionA.Details*
<<else>>
Remember me?
[[What was your story again? | SectionA.Details]]
[[Yeah, gotta go though! | SectionA.Exit]]
<<endif>>

I can't find any documentation that shows how to make this happen. The best I can find is to present a button on the first pass through as the only user option. It would feel much more fluid if there was only the basic next button on the first visit. Is this possible?

Linux .desktop file

For those using Linux I created a .desktop file:

[Desktop Entry]
Encoding=UTF-8
Type=Application
Name=Yarn
Icon=/path/to/Yarn/package.nw/Yarn.png
Exec="/path/to/Yarn/nw"
Path=/path/to/Yarn/

I renamed the nw folder to Yarn. Don't forget to rename the path to your installation path.

[CLOSED] allow contextmenu in node edit

Issue by clexit
Monday Apr 11, 2016 at 11:54 GMT
Originally opened as InfiniteAmmoInc/Yarn#36


This is an improvement for firestack/Yarn@6be29fe

Instead of disabling the context menu completely, it's now disabled only for the main canvas, but still allowed for other elements, e.g. edit dialogs.


I also returned the zoom method--it now works with the new zooming implementation. The method is not used anywhere (well, only in a commented out code block), so I just pushed it directly to master.


clexit included the following code: https://github.com/InfiniteAmmoInc/Yarn/pull/36/commits

[CLOSED] Handling facial expressions

Issue by agustincordes
Wednesday Oct 07, 2015 at 14:35 GMT
Originally opened as InfiniteAmmoInc/Yarn#15


It would be nice to have some way to trigger facial expressions in our characters. I was thinking that maybe tags were the answer but this is not feasible; tags are useful for editing the dialogue but I don't see how we could reuse them in our respective implementations as they're specific to each node (which contain several lines of dialogue).

Rather, a system could be devised in which we insert certain string codes in each line. I'm thinking something like this:

Frank: [frown]Why not?

All that would be needed then is to pass this expression (if available) to Say() like this:

public IEnumerator Say(string characterName, string text, string expression)

It's trivial then in Unity to trigger the respective blendshape or whatever is being used to animate character faces.

I guess the developer could implement this system separately, but I believe this is useful enough that it could be added to the main app.

[CLOSED] Add support for twee2/twine2 position syntax

Issue by rcuddy
Saturday Apr 15, 2017 at 09:55 GMT
Originally opened as InfiniteAmmoInc/Yarn#47


Using twee2 coordinate syntax we can enable a text editor workflow of saving and loading while still preserving Yarn node position between saves.

Have made this work as a secondary file type just to make sure we don't clobber anyone who might be legitimately going from Yarn to Twee v1 where the twee2 syntax would break their project.

https://dan-q.github.io/twee2/documentation.html#twee2-syntax-passages


rcuddy included the following code: https://github.com/InfiniteAmmoInc/Yarn/pull/47/commits

[CLOSED] Word wrap in editor?

Issue by tekknobabblr
Sunday Feb 28, 2016 at 03:32 GMT
Originally opened as InfiniteAmmoInc/Yarn#24


I'm trying to implement word wrap in the editor window. Been researching for hours now and no luck lol. It seems like it should already be working, based on what I've seen, since Yarn uses "TextArea".

Here's what we're seeing now:

current

And a mock-up of what I'm thinking (how word wrap works in Notepad++, for example):

should

Anyone have any ideas?

Support for voice overs

Issue by agustincordes
Wednesday Oct 07, 2015 at 14:16 GMT
Originally opened as InfiniteAmmoInc/Yarn#14


Hi all! I'm very impressed about this project. I've been trying for some time to devise a flexible yet simple dialogue system for our adventure game Asylum which also integrates with Unity; it never occurred to me that Twine was the answer, but I can see how it makes much sense. After a few tests, I'm ready to adopt Yarn. It's really neat how you can go from simple conversations to very complex systems with the same editor and small base code.

Anyway, I'd like to contribute in any way I can. If you don't mind, I'm going to open a few suggestions/ideas to consider (maybe this is better suited for a wiki but I don't see one).

As I see it, the main drawback in the project right now is lack of support for voice overs. Currently, it would be cumbersome to build a custom system on top of Yarn. Ideally, I think the editor should have an option to collect all strings and automatically assign a string ID to them. Only problem is how these IDs could be retrieved by something like DialogueImplementation.cs. The only information pertaining to the line we can get is pure text, which can't be used to match a filename containing the corresponding audio.

That is, unless I'm missing something. Thoughts?

[CLOSED] fixed typo in font name

Issue by beeglebug
Thursday Apr 09, 2015 at 08:17 GMT
Originally opened as InfiniteAmmoInc/Yarn#8


I tried to run Yarn on linux (Centos 7), which has none of the specified fonts so tries to fall back to the base family which was set to "monospaces". This doesn't exist, so I got a non monospace font, which totally borks Ace editor. It looks like it was just a typo in the css, so I dropped the pluralisation and it fixed it.


beeglebug included the following code: https://github.com/InfiniteAmmoInc/Yarn/pull/8/commits

[CLOSED] version 0.2.0

Issue by clexit
Monday Apr 11, 2016 at 07:07 GMT
Originally opened as InfiniteAmmoInc/Yarn#35


I should have created a pull request for each feature, but a bit short on time, sorry. You can always revert parts you don't want.

Changelog:

  • Merged "remove rightclick context menu" from firestack's fork
  • Added navigation: WASD and arrow keys move the canvas in all directions and zoom now works as on Google Maps (zooming in/out according to the cursor position). I personally can't use Yarn without this feature
  • Fix encoding. Replaced readAsBinaryString with readAsText, because JSON files with "non-standard" letters (รถรครผรŸ) don't work at the moment. I checked only the "Open..." menu with a JSON file and haven't checked XML and Twee. I assume that this change is safe, but can be tested better.
  • Main menu doesn't use a shared container anymore. The gap between the search pane and the buttons drives me crazy, be cause it looks like zoom and select should work there, but they don't
  • Fixed the </bosy> typo (was it a typo?)

The version is bumped to 0.2.0 because of the readAsText change.


clexit included the following code: https://github.com/InfiniteAmmoInc/Yarn/pull/35/commits

auto complete node names

Issue by HawkenKing
Monday Mar 28, 2016 at 09:10 GMT
Originally opened as InfiniteAmmoInc/Yarn#34


would be nice if when typing [[ click here | NODENAME ]] that NODENAME would suggest-complete if NODENAME exists, or error underline if it didn't. Similar to using a code editor.

Having Trouble Saving Anything

Issue by RyokiRayn
Thursday Feb 16, 2017 at 01:35 GMT
Originally opened as InfiniteAmmoInc/Yarn#44


So if I open Yarn in either NW.js or my browser, I can write out the dialogue tree I'm working on just fine, but whenever I go to save I get the four file type options but none of them save anything. In NW.js, if I click save as _____ it opens a separate window with a word document of my tree in it and will not save the file type I request.

[CLOSED] Tweak keydown code to allow less jumpy movement

Issue by rcuddy
Tuesday Jun 27, 2017 at 09:30 GMT
Originally opened as InfiniteAmmoInc/Yarn#48


Moving around the canvas feels very twitchy due to the size of the jump on each arrow keydown. This adds a check for holding shift (so as not to change existing user experience) and drops the movement down by a 5th, allowing more precision alignment of elements within the window.


rcuddy included the following code: https://github.com/InfiniteAmmoInc/Yarn/pull/48/commits

[CLOSED] Question about running Yarn as a web page vs an app

Issue by desplesda
Wednesday Feb 17, 2016 at 11:05 GMT
Originally opened as InfiniteAmmoInc/Yarn#20


Currently, Yarn can be run as a web page, in the browser. This has its good points and bad points - running in a web view means you can link to it directly, and can run it in a browser tab if you like. Some people quite like that.

However, running in a web browser has its downsides: web pages can't access the filesystem, which means that 'saving' really means opening a new page containing the JSON. It also means that it can't use some especially fancy Node.js modules that could lead to some very nice features in the future.

If you run Yarn as an app, you get all the nice filesystem features, plus all of the feature possibilities that that unlocks, but it doesn't run in the browser.

There are some things that I'm poking at that would require running as an app, making running Yarn in the browser not possible.

So, I guess my questions (for both @InfiniteAmmoInc and anyone else who uses Yarn): How big of a deal would that be? Do people prefer to download the builds from the main page? Or do they download the source code and open the index.html?

[CLOSED] export to new window using data urls

Issue by beeglebug
Thursday Apr 09, 2015 at 10:48 GMT
Originally opened as InfiniteAmmoInc/Yarn#9


I was running in a browser (rather than nwjs), and the save options didn't work when I added conditionals (the << was making it try to render as html tags).

I changed the save function to pass the type through and use that to decide on a data url format.

I left the twee export as plain text because I wasn't sure what else to pick, seems to work. The xml comes through as invalid now though, which I think could be fixed by adding a valid xml opening tag to the content string.


beeglebug included the following code: https://github.com/InfiniteAmmoInc/Yarn/pull/9/commits

Node deselection behaviour

Issue by desplesda
Thursday Feb 18, 2016 at 10:43 GMT
Originally opened as InfiniteAmmoInc/Yarn#22


  • Clicking on a node once should select it, and deselect any other nodes.
  • Clicking on the background should deselect all nodes.

(Currently, if you drag a box around nodes, the only way to deselect them is to drag another box, and select either different nodes or no nodes. There's no other way to deselect nodes, I think?)

[CLOSED] Add CONTRIBUTING.md

Issue by desplesda
Wednesday Feb 17, 2016 at 10:03 GMT
Originally opened as InfiniteAmmoInc/Yarn#19


I've added a new file, called CONTRIBUTING.md. It contains info on how to contribute to the project; importantly, it notes that any new material contributed must be under the MIT license.

Because this file is called CONTRIBUTING.md, GitHub will automatically show a link to it when creating an issue.


desplesda included the following code: https://github.com/InfiniteAmmoInc/Yarn/pull/19/commits

[CLOSED] A very minor fix to enable Linux for NW.js v0.16.1

Issue by Qworg
Thursday Aug 25, 2016 at 03:08 GMT
Originally opened as InfiniteAmmoInc/Yarn#38


Without this fix, Linux functionality is totally broken on Ubuntu 16.04 and NW.js v0.16.1 - you cannot click off of a node once the node is created.

This simply sets the menu bar functionality for Linux to be the same as Windows, as per the NW.js documentation: http://docs.nwjs.io/en/latest/For%20Users/Advanced/Customize%20Menubar/


Qworg included the following code: https://github.com/InfiniteAmmoInc/Yarn/pull/38/commits

"Play" mode?

Issue by HawkenKing
Monday Mar 28, 2016 at 06:13 GMT
Originally opened as InfiniteAmmoInc/Yarn#29


Would be nice if there were a super simple way to just check out your stories like in Twine. (unless there already is?!)

[CLOSED] Undo and Redo for Nodes + How to use nwjs on windows

Issue by alistairwoodcock
Friday Jun 12, 2015 at 03:29 GMT
Originally opened as InfiniteAmmoInc/Yarn#13


It tracks when a node has been created or removed and pushes it to a stack which can then be undone using ctrl+z and redone with ctrl+y like you'd expect.

I thought I would try something small to add, I really like yarn and would like to keep working on it, so let me know if what I've done is okay / what I could improve.


alistairwoodcock included the following code: https://github.com/InfiniteAmmoInc/Yarn/pull/13/commits

[CLOSED] Marquee tool

Issue by alistairwoodcock
Tuesday Feb 16, 2016 at 22:06 GMT
Originally opened as InfiniteAmmoInc/Yarn#18


To create the marquee tool I first made it so you could select nodes by ctrl+clicking on them.
Deselecting them with ctrl+d.
Then the marquee tool is just used by ctrl+click and drag.
I did the change colour for all selected and moving multiple nodes, but I haven't yet done the deleting.

Let me know if you have any other ideas for things to add


alistairwoodcock included the following code: https://github.com/InfiniteAmmoInc/Yarn/pull/18/commits

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.