Share this project

Done

Share this project

Done
Photo 1024x768

A JavaScript library that allows browsers and other restricted JS environments to have working git clones for real offline development. Read more

Texarkana, TX Software
Share this project
405
backers
$19,587
pledged of $12,000 goal
0
seconds to go

Funded!

This project was successfully funded on March 30, 2013.

A JavaScript library that allows browsers and other restricted JS environments to have working git clones for real offline development.

Texarkana, TX Software
Share this project

Progress and Round 2

It's been a while since I've posted a update here on the kickstarter site.  I assume most of you have been following the daily status updates on twitter, github, and irc (#jsgit on freenode).

Progress

Thanks to your generous donations, I was able to quit my job and work on JS-Git full-time for a few months.  At this point there is a lot of the hard code done and several proof-of concept modules written.

The first while I spent most my time working with Chris Dickinson and seeing how I could reuse his code.  I designed the min-stream interface so that node code and browser code could have a common interface that worked well everywhere. (Also it's pretty awesome in it's own right).  Chris has his own modules scattered across his github account and gave a talk at nodepdx showing off a JS powered git client and server proof of concept.

I worked on my own proof-of-concept and ended up with two programs.  One is a chrome app you can install from the chrome app store that clones a repo over TCP and logs the output to the screen.  The other is a node CLI tool that makes a real clone to your hard-drive.  Both of these have a mix of stable modules and hacked up monolithic code.  The goal was to get them out fast and get a good feel for what is really needed.  This was a great success.  The bulk of the unorganized code (like the clone protocol logic) is in progress of being extracted into it's own module as clean, stable, reusable code.

Once I figured out how I wanted to organize everything and finalized the min-stream stuff, I wrote up interface specs for the core parts of js-git and put them in the main js-git repo on github.  There are interfaces for how custom back-ends can be implemented for both bare and full repos (bare repos don't have a working/staging area).  Back-ends can be written using anything from some K/V persistence engine to a real file system over node or HTML5 APIs.  The idea is that all other js-git code will adhere to this standard interface and make back-ends pluggable.

I then implemented a nodejs + native fs implementation of these specs and was able to create new repos complete with history all using a clean JavaScript API.

The next steps include cleaning up the clone logic to use this new repo interface.  Progress is really picking up speed and things are starting to get very exciting.

Round II

I have a problem though.  As generous as your donations were, I've already gone past my budgeted time and am completely out of money. (I even sent my new lawnmower back to the store and didn't buy a replacement).

I would love to finish js-git!  It's so close to being useful.  Now that I understand a little more about how the pieces fit together, I've partnered up with bountysource to run a second fundraiser so that I can finish the project and still feed my family.

Several companies told me they would have donated to this kickstarter, but it was too fast.  You all hit the minimum in just over 24 hours and the entire thing ended in just two weeks.

If you still believe in this project, I would love if you did your part to help me.  I've worked very long hours the last few months trying to make this idea a reality and I'd hate to have to give up now.  Spread the word, contribute again if you're able, talk to your employer.

Thanks again for all you've done to help me through this journey so far.  It's been amazing to be able to work on a project that is 100% owned by the open community while still providing for my family.  I hope we can make this into a sustainable model for myself and others in the future.

Comments

    1. Creator Tim Caswell on June 24, 2013

      Runako,

      So the main thing that caused my estimate to be so far off was an unexpected shift in order or work. By the time I had quit my job and received the kickstarter money, Chris had already made good progress on his js-git project. There were several people urging me to work with his code so there was no duplicated efforts.

      The main problem I had with his code was that it used browserify to enable cross-platform node.js and browser code. I don't like using browserify for this because it basically emulates node.js APIs in the browser. I'd much rather use browser APIs directly or if a new common API must be invented, it needs to be minimal. The stream interface particularly in node.js is not something I want to propagate to other platforms. It's rather complicated and even Isaac says he would design it very different if he had a chance to break backwards compatibility.

      So I had a choice, I could ignore all his work and just do what I had planned to do initially, or I could find a middle ground between what I wanted and what was already there. Since I eventually needed a cross-platform story so that js-git could run in node.js, I figured it wouldn't be a waste of time to shift priorities and solve the cross-platform issues first.

      These issues are now solved in the form of bops, min-streams, and continuables. It's a really wonderful system and works equally well in both node.js and browser style environments. I even spent a day writing a chrome app module loader that allowed me to write common.js style modules and use them in chrome apps without a build step.

      After I was done with this and Chris converted some of his most useful modules to min-stream format, progress accelerated rapidly. But as I stated before, it was too late, the time had been spent.

      On the bright side, we now have this solid platform of primitive APIs. The code is much more stable and portable. I believe it's a win in the long-run, but it did have a negative effect on how much I was able to complete with the initial fundraiser.

      The $30k minimum I'm asking for should be enough to get the basics done (pull, push, merge, diff, branch, tag, etc...) And assuming thing go smoothly I'll have time left for some more interesting advanced bits. If things don't go smoothly again, it should still be enough to finish the initial version of js-git. I didn't want to be stuck running a third fundraiser so if I don't reach the 30k mark, its not worth my time to continue.

      I hope this clears some things up.

    2. Creator Runako Godfrey on June 23, 2013

      Hi Tim,

      Thanks for the update & notes on your progress! It would be helpful for first-time backers considering re-upping to learn:

      - your candid thoughts on the deviation from your projected timeline (i.e. why the initial estimate was so far off -- what did you not consider?)
      - why you're confident you can finish given another $30k, as opposed to another $45k or $60k or whatever (i.e. what's different this time & why there will not be a third round required).

      We're software people, so we know stuff happens. But the introspection process about planning & scheduling is still usually really helpful in decision-making.

      Thanks & good luck!

    3. Creator Frank Gerhardt on June 23, 2013

      This is the first project I backed and I think asking for second fundraiser is ok. It's not the ideal way but Tim explained openly what he did.

      Everybody knows the situation when you're asked for estimations and then these get turned into deadlines. From the beginning js-git seemed to have very optimistic estimates. I would rather expect 6-12 months to complete a first solid version.

      The communication was really mis, Tim admitted that. But hey, we are all nerds if we are interested in such things as js-git. Who would want a marketing agency polishing every word Tim writes!?

      What I like is that Tim communicated openly and honestly - sometimes too much, never mind.

      I want to have this js-git. I want it! I don't share the vision of a programming environmen for kids, but I want it for offline data in business apps. I want it on mobile phones! Today I use CouchDB/PouchDB but I would prefer js-git. I don't want Tim to quit and call it a mistake.

      There are for sure companies that have an interest in js-git. All those cloud-based IDEs like Cloud 9 and others. Just imagine Tim would finish it on a small frugal budget and then the Microsofts, IBMs and Oracles integrate js-git for free into their offerings. Then I would be pissed off as a backer and feel really sorry for Tim.

      Free riders can not be avoided in open-source software, but I would like to see some companies taking part in the second fundraiser. Hey, stand up!

      Asking for a competitive compensation is absolutely ok. Looking at the current situation it is rather an entry-level Java programmer salary outside the U.S. That's not ok. Tim deserves a lot more and there are companies benefiting from js-git later that should invest in js-git and Tim.

      Tim also has a choice. He could simply work from some customer on some proprietary software and get a fat pay check every month without worries. He already took a pay cut to work on js-git full time. He exposed himslef as the guy with the idea and the capacity to do it and I'm sure he wants to prove it. I like his motivation, I trust his technical compentence and would like to see him continue in a healthy way, for him, his family and his lawn. That's why I think the second fundraiser is ok.

    4. Creator Frank Gerhardt on June 23, 2013

      This is the first project I backed and I think asking for second fundraiser is ok. It's not the ideal way but Tim explained openly what he did.

      Everybody knows the situation when you're asked for estimations and then these get turned into deadlines. From the beginning js-git seemed to have very optimistic estimates. I would rather expect 6-12 months to complete a first solid version.

      The communication was really mis, Tim admitted that. But hey, we are all nerds if we are interested in such things as js-git. Who would want a marketing agency polishing every word Tim writes!?

      What I like is that Tim communicated openly and honestly - sometimes too much, never mind.

      I want to have this js-git. I want it! I don't share the vision of a programming environmen for kids, but I want it for offline data in business apps. I want it on mobile phones! Today I use CouchDB/PouchDB but I would prefer js-git. I don't want Tim to quit and call it a mistake.

      There are for sure companies that have an interest in js-git. All those cloud-based IDEs like Cloud 9 and others. Just imagine Tim would finish it on a small frugal budget and then the Microsofts, IBMs and Oracles integrate js-git for free into their offerings. Then I would be pissed off as a backer and feel really sorry for Tim.

      Free riders can not be avoided in open-source software, but I would like to see some companies taking part in the second fundraiser. Hey, stand up!

      Asking for a competitive compensation is absolutely ok. Looking at the current situation it is rather an entry-level Java programmer salary outside the U.S. That's not ok. Tim deserves a lot more and there are companies benefiting from js-git later that should invest in js-git and Tim.

      Tim also has a choice. He could simply work from some customer on some proprietary software and get a fat pay check every month without worries. He already took a pay cut to work on js-git full time. He exposed himslef as the guy with the idea and the capacity to do it and I'm sure he wants to prove it. I like his motivation, I trust his technical compentence and would like to see him continue in a healthy way, for him, his family and his lawn. That's why I think the second fundraiser is ok.

    5. Creator Tim Caswell on June 23, 2013

      Craig, thanks for taking the time to comment and explain your concerns.

      The Amazon and kickstarter fees were around 10% of of what I raised. Then I had to pay self-employment taxes. I ended up with around $13,000 before rewards. The stickers were high-quality stickers and cost $406.92 to get them to my house and then around $200 to mail them all out (remember many of the backers got full sheets of stickers that don't fit in a normal envelope.) I also offered rewards of many hours of assistance and a personal visit to Mozilla's office since they backed at the $4000 level. Plane tickets to Canada aren't free. As far as time processing the rewards, it took over a week's work of time full-time. Thankfully my wife helped a lot so I wouldn't spend 40+ hours of my programming time on them.

      As far as the conferences, those were paid by money I had earned at past jobs as well as some help by the conference organizers since I was speaking at some of them. The kickstarter did *not* pay for me to travel the world or pay for my lawnmower. It paid my bills so I had time to focus on js-git exactly as I put forth in the original proposal.

      I'm sorry if there was any mis-communication. I thought I stated pretty clearly that my goal was to quit my day job and work on js-git full-time so that I could give it the attention it needed. I had been trying to find time around my paid work to work on it for many months and was making near zero progress. Since the crowdfunding was to replace my full-time work, I don't think it's lavish to ask for competitive income. In fact, I took a rather large pay cut when all was said and done. It's the end of June now. The kickstarter ended over two months ago. I've stretched the money beyond what I had agreed to provide (1 month full-time) and lived frugally to do so.

      This is not a sob story or excuses. I'm simply being transparent. I didn't provide more details precisely because I don't want to focus on the money. I want to focus on js-git and getting it complete and to the point that people can use it for real projects.

      Again, I'm sorry if there was any miscommunication. I feel very heavily the weight of responsibility and trust you all have in me. I feel terrible that I didn't get as far as I wanted with the initial kickstarter funding. That is why I'm doing a second fundraiser so that you will get what you expected to get. Also there were many people who came up to me after the fact wishing they had seen the kickstarter and wanted me to create a way to allow them to donate to the project. This second round is for them.

    6. Creator Craig Dunn on June 23, 2013

      Not to be offensive, but this doesn't seem right to me....and I've backed well over 300 projects here....

      First, even after KS/Amazon, you should have landed around the $18,000 mark in proceeds. You mention that the rewards took a week and a "significant" portion of the funding to fulfill. The only tangible rewards I see are stickers....and they just really aren't that expensive to have made and sent in a standard stamped envelope. I've had some made myself and they were far more complex than the simple js-git design. Can you please provide some clarification on why this turned into a "significant" percentage of the funding?

      You talk about paying yourself and feeding your family. I don't begrudge you those things...but, this IS an open source effort and the point of that is to feed off communal knowledge and effort...not to get paid off of communal funding and live in luxury. Knowing what I personally make and bring home as a Software Architect and given that you managed to blow the entire funding amount in the course of a month (two at most) of "analysis," working with "Chris Dickinson" (whatever that entailed) so you could reuse HIS code, and (by your own admission) attending who knows how many expensive conferences due to it being "conference season" (again, your words)....you seem to have treated yourself handsomely.

      Now, you are coming back to us in order to allow you to continue this lavish lifestyle? I'm not sure anybody expected you to give up your job - that decision is certainly not on our shoulders. The numbers and reasoning provided simple so not add up IMO. It feels like you got flush with cash and went on a spending spree. I am pretty sure most of us backers didn't pledge for you to have a new lawnmower or pay your travel, registration, and expenses for conference attendance.

      I'm sorry if this seems harsh, but coming at us with an "update" such as this really feels like a slap in the face and insults our intelligence. If you feel you are unable to bring an OPEN SOURCE software project to a stable conclusion that the community can move forward on its own without paying yourself a six-figure salary plus perks, perhaps you should tender all the existing work you HAVE done over TO the open source community for completion. I backed this effort 1) because I saw value in the concept and 2) I like to support projects from my fellow Texans. I certainly did not expect to get sucker punched with sob stories and excuses as a result of my support.