Saturday, September 10, 2011 at 12:46PM My Experience authoring an open source project on github
AR,
github,
open source |
Niels Hansen
If you are an active reader of the blog here, you know that I have participated in an open source project on Github. It was way back in late 2009 that I found an Augmented Reality project there. At the time this was the up and up and AR was just starting to take off on the iPhone. However there was one same problem; the author who begun the project, started developing and then abandoned the code.
Github has a great feature (and bad, that I'll discuss here) to fork a project. So the fun began, I forked the project, cleaned up a ton of code, made the project more of a tool kit and finally got the code working the way I thought it should. All was good. However, the toolkit was far from done. I had big dreams of really making this in into the toolkit thousands of developers would use. I even created it as a static library that could be linked easily into other developers projects.
Right about at this time, as human as we all are, I was going thru a life changing event (a divorce). Needless to say I was not able to work on the project as much as I would have liked (none at all actually). During this time, a few people had forked the project and began making their own changes. That's the beauty of github. If you don't like what you see, you can fork it and begin making your own changes. Hopefully the changes made are good enough the project that it's forked from will pull this code into their branch. It's a win win for everyone.
Since I no longer had the time to make all the changes on my own, I was able to merge the code that others had made, which in turn made the toolkit even better! This is the the beauty and the beast of Open Source.
Let's go over what I've learned.
The Good
While I was not able to work on the code, others had stepped up. A couple found some memory leaks and fixed them. That was awesome.
Another developer decided that maybe using a static library was not the best idea, since many people found it confusing. So he moved it out of the library and back into the main project. Great! The toolkit still had life.
Github can merge other people's code back into a branch as long as the changes are not too drastic. At this point pretty much all the changes other's had made could be merged with no effort on my end. So why not include the changes? We had my fork of the project going still strong and in many ways I was still in control. (Even when I was not really working on it.) However, I still had the final say that would be merged into my code base. All was good! Or least I thought it was...
The Bad
At this point, the project was stale. I was not checking on the updates, nor even responding to the emails from people who needed help or had suggestions to make it beter. (Sorry guys). There were still forks of the project going on. However it was not from my project, but from others whom had forked my toolkit. By the time I gotten back into having some free time to review the changes again, the project was a complete mess. We had way too many forked versions and some really bad versions began to popup.
To make matters worse, I had developed the toolkit for the iPhone 3 and now iOS4 was out with major changes to the framework. The project was in a deep pile of crap as I'd like to say.
The Ugly
This is where it really gets bad. One of the forks was created from someone who had the best intentions but I seriously judge the changes they were making. I don't think they really knew what they were doing.
Since I was not maintaining my project, this fork now became the fork that people were using because it seemed to be the most active. (I would have done the same) With this version, many bugs were introduced and people were making changes to the code base that made life very difficult to merge back to mine.
I began getting emails from people asking if I could fix my version of the project (code did break with iOS 4) because the other forked projects were so unstable. I became to feel their pain. It's time to get back into the game again...
A New Hope
Yesterday I finally got some free time and went thru all my issues and began to fix the problems that others had found. I fixed the code so that it would run in xCode 4.2 and run on the iPhone 4. I also reviewed some changes that were made by other forks that I thought were good and added them to the toolkit. Someone even created the app Icon, so I grab that and added it too. Thank you by the way!
Now I have the project updated and I hope people can grab this version and begin using the AR toolkit again. I'm so excited about the project again that I plan on making some new code updates to make the toolkit even better!
As you can see, this seems to be the typical problem that happens with an open source project. If there's no one core owner to keep the dream alive, or the wrong people take over, a project can go sideways pretty quickly. I'm glad to be back, I'm grateful for the people who were able to contribute the changes to what I believe to be a good learning tool in the world of Augmented Reality!
Thanks to all the people who kept it going!



