Open Source Weekends
Wednesday, August 26, 2009 at 7:15PM It's no secret that I'm an open source software enthusiast. I'm also an open source developer. I love open source software and writing libraries that people use because they solve specific problems worth solving. I also love my weekends. And apparently, the combination of rest, relaxation, open source programming, and getting things done on the weekend is a good combination to have. Two open source projects of mine got some love from me this past weekend and the product has been one open source project release (followed by another quick release) and another just getting more done as the time went by.
C++ Networking Library
I am one of three maintainers of The C++ Networking Library -- a project that aims to develop cross-platform easy to use network client libraries for different protocols. At the moment we are working on a URI/URL parsing library that aims to be standard compliant, and a refactoring of the HTTP client that we already have to support HTTPS URLs. This weekend I pushed some changes I've been working on implementing a generic URI/URL library parser and URI/URL object.
One of the challenges with this project is that the goal is to get a library out that is header-only and will work on both Linux and Windows (R). The good thing is that we're able to do that right now with the HTTP client implementation. The not so good part is that it takes a lot of patience to develop and debug a header-only library.
The great part about it is that we've got tests that will cover the basic features and every new feature that is basically supported by the client. We need more test code to be written, and I'm definitely looking forward to getting more help as soon as I open the project again for scrutiny in the coming days to a greater audience.
The C++ Networking library is hosted and developed at Sourceforge.
Memcache++ Client
Memcache++ is a memcached client library that I developed along with other people in my time at Friendter. It was released as open source software while I was still there, and I am currently one of two maintainers of the project on Sourceforge. Since the release it has been used by many others in different products and has been ported to Windows too with minimal changes. This weekend I released version 0.10 which updates the project to use newer Boost libraries and cleans up the implementation significantly.
Since the weekend I've also found time to release another version 0.11.1 which adds a few more supported memcached commands for newer versions of memcached. In this project I've moved from using Subversion as the software configuration management system (or my code repository) to using Git all the way. I used to do git-svn but I found the version that was packaged in Ubuntu to be quite old so I found myself working on git exclusively instead.
Because of my renewed enthusiasm in the project this past weekend, I've chosen then to continue development until I get it to a point where I can slap version number 1.0 and package a professional-quality library that I can offer support for. I am also contemplating on getting a Boost.Python wrapper to the library so that I (and others) can start using it as an alternative memcache client on Python.
Memcache++ is also hosted and developed at Sourceforge.
Conclusions
What I learned is that once you get into the groove by doing what you love and having a choice and feeling good by being able to deliver and accomplish things, you should keep going. I fell into a lull for a while not writing and working on my open source projects, and I saw that it wasn't good for me. Now I feel more enthusiastic about the projects I'm part of and I think I'm going to sustain this energy by continuing to work on and polish my implementations.
Release early and release often is a good mantra -- and once you get good enough at it, hopefully you'll get better and better code out faster and faster.
cool stuff,
thoughts in
Personal,
Technology 

Reader Comments