My First Open Source Project

Back in early 2010, when I was fresh out of university, and was still looking for my first programming job, I started working on my very first open source project. It was inspired by the last year group project at the university, I thought I had a few ideas that could take it further, so I decided to start from scratch.

It's more a decade ago at this point, so I have forgotten most of the things about it, but I still remember spending most of my free time, day and night, half lying on the couch (not recommended) with my Dell Studio 15 laptop at the time, designing features, class diagrams, writing code, unit tests, UI tests, reading about good coding practices and applying them on the project, purely for fun, I loved it, and I had learned so much in the process.

It was called Rabbit (I couldn't think of better names at the time), a plugin for the Eclipse IDE, hosted on Google Code with SVN, later moved to Git, it tracks statistics on what functionalities you use and how you spent your time in the IDE. For example, how often you use each command, how much time you spent editing each file, it even tracks how much time you spent writing each Java function (I was quite proud of that feature). The user interface was also pretty awesome, it lets you specify a date range for the data to view, allows you to aggregate the data in a few different ways, and draws a bar graph on the side for visualization.

Here are some historical screenshots (all stats shown are actual stats of me spent working on the project):

Rabbit Sessions

Rabbit Java

Rabbit Commands

Rabbit Files

And according to the GitHub stats, I've added ~270K lines and removed ~225K lines of code cross a period of about a year and half between 2010 and 2011, and the project contains roughly ~45K lines of code.

Being an open source project, it has received a few feature requests and bug reports. And I have had some interesting email exchanges with others as well:

Now skimming through the project code, it's actually somewhat clean, well organized, and comes with a lot of unit/integration tests. But of course, being a young programmer at the time, I have also made quite a few beginner mistakes, like having useless comments that are pretty much repeats of the function names, or the lack of proper error handling, in some places I just catch the error, print it and continue execution.

Eventually, due to other interests and life commitments, I stopped working on it, but the things I've learned from it has stayed me throughout my career: