So What’s NHibernate Development Like?
As i mentioned recently, i’m now part of the NHibernate development team. Ever since i posted that i’ve gotten a lot of questions about what exactly it is i do for NHibernate. The short answer is: not much so far!
Allow me to elaborate. The way it usually works with Open Source projects is that contributors submit patches when they fix bugs, or add features, etc… After a while, the project lead(s) starts to trust the contributors if their patches are usually of good quality. In that case, it makes sense to invite those contributors to become a member of team. After all, they’ve already proven that they’re worth it. They are already familiar with the codebase and they’ve demonstrated their ability to modify/fix it without breaking other stuff.
For me, none of that was the case. I’ve submitted only 3 very small patches in about 18 months and i never spent a lot of time reading the NHibernate code. So when i got invited to join the project, i was very unfamiliar with the code and some of the guidelines that developers are required to follow (especially regarding Java’s Hibernate compliance). So for now, when i’m spending time on NHibernate it’s usually just trying to read the code, and figuring out how it works. I also try to fix issues that were created in our JIRA, although it takes me a long time to figure out what the real problem is, let alone actually fixing it. But trying to fix issues really does turn out to be the best way to become familiar with various ways of the codebase, and it’s actually very fulfilling as well, so that’s what i’m going to focus on for now.
The NHibernate code itself is pretty complex in certain areas, and very clean in others. It’s very clear that it’s been written by a lot of people over the years. You can spot a lot of different coding styles, and the difference in code quality is sometimes very striking. But i really have a lot of respect for the people who wrote the code, even the ‘bad’ parts. These guys wrote it in their spare time, without getting payed for it, and did they did it all for something they care about and believe in. I don’t know about you, but i find that to be very inspiring.
So code quality is one other thing i’d like to focus on in the next couple of weeks/months. As i become more familiar with the code, i’d love to increase the readability and comprehensibility as much as possible. I basically would like to make it easier for those who join the team after me. It might take a lot of time, but it’ll be worth it. Now, it’s not my intention to purely focus on fixing issues and cleaning up code. Although those are important tasks, i also plan to port new features from the Hibernate versions, as well as any new feature requests that are approved by the project lead.
So anyways, if you’re a NHibernate user, do me (and the rest of the team) a favor and log any issues you encounter in our JIRA 🙂