A few weeks ago, without any particular reason, probably to satisfy my continuous research for new hobbies and interests, I decided to contribute to an open-source project, initially developing a small plugin
(module). The truth is that I did not take under consideration what I might encounter during this effort. Now, having completed the first version of the plugin, I feel that I finished a short journey in a different world of software development from that than I knew, and with this post I would like to share my experiences. Before that, however, I believe that it is appropriate to shortly describe what the plugin is about.
For over a year I am using the (in my humble opinion) ultimate tool for software quality which is Sonar
. What makes Sonar so perfect and amazing? The infinite possibilities that offers to a software team in order to monitor the quality of a project under development / maintenance in detail. it covers the 7 axes of code quality: Design and Architecture, Duplicate Code, Unit Tests , complexity, potential software defects, Comments, and finally code rules.Integration with other popular systems like Maven as build system, and Jenkins
for Continuous Integration practices, definetely increase its capabilities. Of course, to be honest, to benefit from Sonar, it is not enough just to keep track of code quality, but rather to act continuously towards improvement. The plugin, therefore, I developed for the Sonar, provides integration with Google Calendar, which is part of the suite of applications offered free by Google. Whenever Sonar completes the analysis a quality project, the plugin takes action and creates an event in Google Calendar set by the end user.
What did I encounter during my first opensource try?
Firstly I found a very structured and well-organized environment/community that provides tools for rapid development of plugins, control them, test their usage by other developers (SNAPSHOT release) and final publish them to thousands of Sonar users. The developers, are always willing to contribute their knowledge, ideas and comments whether positive or negative. There are rules and procedures, strictly followed by everyone, that define how the code is developed, how the documentation is written, about automated build processes and quality ( eat your Own Food
), even how much spaces should have the pom.xml file that describe the plugin. At almost every step there were a sonar core developer who was correcting me (thank you Evgeny!) and was giving extrelemely valuable feedback. I confess that after fifteen years of experience (?) In software development I felt like a student who developed my first Hello World example! Even how and when a plugin is ready for release is determined by a voting process among active developers/contributors of the project. All so different from what I was used or learned so far and so exciting for someone who wants to work within a standardized environment.
What have I learned – How have I expanded my technical knowledge?
I extended my knowledge around Maven. I learned new features in practice and how they serve specific purposes during the development of a (sub) system.
I studied a working example of a modular system without the cumbersome use of other technologies like OSGI. Besides, I used it to develope, test and release the plugin!!
I discovered the new google-api-client
and more specifically the part that needs to process data in google calendar. A completely different API, and an approach that only … Google could ever follow!
Finally I participated in a community of developers with different skills and knowledge, but they all respect each other and exchange ideas and comments without hesitation and intolerance.
Initially, enthusiasm, which was then replaced by deep speculation until I managed to understand both systems and their API (Sonar/Google Calendar). With the completion of a beta release I started receiving feedback. That was a grear disappointment but make me try even harder for the final result. New efforts for better quality , always attached to the prescribed rules and procedures.Finally the first version is ready. It is approved by developers community and to be honest I feel as proud as I felt when I was finishing some lab exercises back in the mid-90s ?
For one thing I am absolutely sure … The open source software community of Sonar won one more supporter and as my free time permits I will continue to contrinute to it!
P.S. More Info about the plugin can be found here