Parrots is my first open-source project ever, for many reasons I never joined one before and it is the first I decided to start, but I've always been attracted by the idea of having a good idea and share it, eventually getting to form a good distributed team of developers collaborating on it.
Of course I'm still very far from getting anywhere, and I really don't know if I ever will, but I already feel happy about my decision for many reasons which I'm discovering day by day:
- it is challenging: I feel some sort of responsibility, I'm writing code that very good developers out there might see, inspect, dissect, criticize, demolish... I have to try my best in order to build something decent and useful.
- it is instructive: the more I add features or fix bugs in Parrots, the more I learn things, and the more I have to learn things, because Parrots belongs to a quite extensive area: code testing; it requires quite good knowledge about the .NET Framework, and being Parrots itself a small framework, it must be written following best practices and design guidelines. I really love to learn about programming and about .NET and C#, and this project is the best way to get in touch with lots of deep and interesting details.
- it is involving: I'm writing code that nobody asked me for and that nobody will ever pay me for... and it's great! So far I decide the features by myself, I work on it at my preferred pace, I play both the "customer" and the "developer" roles, trying to be very demanding towards myself concerning requirements and code quality... Exciting :)
- it is (or might be) useful: many times I felt that something was missing in "mocking area" (the last time I felt this way: today...), "mocks" and its variants are great tools which help us to isolate our "system under test" from other possibly failing components, but "mocks" are not always easy to do, because mocking libraries may have a steep learning curve, and most of all because doing "mocks" can be a quite long and tedious job. If you have to add features over a quite big existing code base, it is quite common that your components have to interact with existing and complex ones in many different ways, and this implies mocking lots of components, lots of calls towards them, and many permutations of parameters and results on those calls. Even if mocking libraries allow us to setup calls with "don't care" rules, it is still very likely that you have to setup dozens of mocks, and for each one of them dozens of calls. If Parrots would ever get to the point I hope it will, a lot of this plumbing code will disappear or will be automatically generated.
- all this is vitalizing: I have had a couple of difficult years about my job, when it was very hard to keep up the interest in programming... since a few months it's over, and Parrots is one more piece of this new phase of my developer life :)
It would be great to discover day by day that the idea is worth going on, that people likes it and that developers want to join me on it... :)