Git SCM Implemented as a set of JavaScript modules for use in any JS runtime.

JS-Git Round II

JS-Git is an open source project implementing git client and server in pure JavaScript. This fundraiser is the second round of funding. The first was over at kickstarter.

If you're already famaliar with JS-Git, feel free to skip down to "Why a Second FundRaiser".

Why Re-implement Git in JavaScript?

JavaScript has farther reach than any other programming language out there. It can run on tablets, phones, laptops, Chromebooks, and pretty much anything that has a browser. Also thanks to node.js, it can run in many headless server environments as well.

Git is an amazing tool for sharing code and data in a distributed manner. Adding this to everyone's tool-chain will enable many great tools and products.

Target Platforms

My goal is to target every platform that has enough primitives to make sense. This includes:

Feature Goals

I don't intent to make a 100% clone of all the features of the official git program. That would be insane and require a lot more money than I'm asking for. My main goal is to enable the 90% case of interesting stuff:

Potential Products

Some example products that would be enabled by this are:

For the Children

My main driving force is to build a programming environment to teach kids to program. It needs to run on the devices that the kids already have. There are a lot of youth who have access to tablets or Chromebooks, but have no way to program properly on them. I want to change this and give them the tools to eventually become professional programmers.

Current Status

I've been working on js-git for almost two months. I'm just now starting to make real progress on the feature sets.

I had spent the first few weeks analyzing the work that Chris Dickinson had already done. I designed a stream system that's both lightweight and works great in both node.js and browser environments. I spent a day creating a module loader for chrome apps so I could use common.js style modules. There were debates about how the project should be organized. Not to mention it's conference season and I've been traveling a bit.

All of this took a lot of time and caused me to have a slower start than I anticipated.

I am however, very optimistic about this next round of work. Things are moving very fast and I have a much better idea how I want to do things. In the last week alone I've created a node.js CLI tool complete with full cloning of any branch.

I'm confident that given a second round of time, some amazing things will be finished and we'll finally have this amazing tool.

JS-Git in a Chrome App

One sample application that I'm using to test my code is known as js-git-app.

JS-Git App

This app is still in the early stages, It's available in the Chrome app store to test on any device that has Chrome installed.

JS-Git as a Node.JS CLI Tool

Another sample usage is js-git-node.

JS-Git Node Clone

This is a CLI tool that can replace a subset of the git command-line tool. This is useful on platforms that have node.js, but it's still hard to install git. (windows, crosh shell, etc...)

Why a Second FundRaiser?

JS-Git is just now starting to make real progress and I don't want to kill it in it's prime. I have mouths to feed and want to continue the project. Also I've been told by many individuals and companies that they would love to support me but need an outlet to focus on. With this second round of fundraising I should be able to get js-git completed to a usable state where it can be used on real products.

You're Funding my Time and Attention

I want js-git to exist. I've wanted this for years, but never found time to do it because I had a day job and family to take care of.

By backing this project, you're funding my time and allowing me to work full time to make this a reality.

The more money this campaign raises, the longer I can work full-time on js-git implementing your favorite features and polishing the library till you can see your face in it.

Lessons Learned From KickStarter

Putting js-git on kickstarter was very exciting and nerve-racking. I didn't know what to do and open-source projects seemed like a new thing to do on kickstarter.

Choose Your Minimum Carefully

My first mistake was setting the minimum too low. I carefully calculated how much money I would need as a minimum to work full-time on js-git for a month. I factored in amazon and kickstarter fees, self-employment taxes, backer rewards, time to manage the kickstarter, etc.

After all that calculating I figured I needed at-least $12,000 to make this worth my time at all. So I set that as my absolute minimum.

Then something interesting happened. I reached the minimum in just over 24 hours!

Kistarter Progress

But as soon as the minimum was reached, people interpreted that to mean I could build the entire library in a single month and didn't need any more funding.

I explained the situation and even added stretch goals, but never hit them.

Timing is Tricky

Me second mistake was making the campaign too short. I wanted to start now because I was so excited to create js-git. I set the campaign length to just two weeks. What I failed to realize is that it was over before many people had a chance to back me. The only company that was able to back was Mozilla because they have more freedom in this kind of thing. Others said they would have backed me had there been more time.

It's not About the Rewards

Backer rewards are nice and really work for fundraisers for physical products. But this is an open source project. Everyone gets a copy of the final product for free with a liberal MIT style license. It took over a full week and a significant portion of the money to fulfill the backer rewards.

This time, the rewards will be much simpler so I can focus my time on finishing js-git. Also Bountysource will handle all stickers and t-shirts for me so I can focus on what I do best, coding.

Lets Make This Happen!

If you missed out on the first fund-raiser and wished you could contribute, now is your chance. If you funded the first round, don't feel obligated to fund again (unless you really want to). I expect a large portion of this round to come from companies who have product interest in a JavaScript implementation of Git.

Please help me make js-git a reality so we can then make some awesome tools!