This
Also an important issue that I will be discussing are the three prime directives of open source software, for a refresher of what those are please have a look at:
This
For this blog post I wanted to discuss an exercise which my development team and I participated in, in which we took on the challenge of enhancing an existing system that was identical, Only in functionality, to the WattDepot Halealoha-Cli-Hash system that we had implemented. This other system that we had to enhance was non other than the infamous HaleAloha-Cli-Chair, of which I did a technical review of here:
Chair Review
In the review I made the claim that a external can understand and enhance the system aka prime directive number 3, but I had not actually tried to enhance it. so in order to fully test the systems ability to be enhanced our development team each added one additional command to the HaleAloha-Cli-Chair system. As it turns out, the system was EXTREMELY well organized and easy to understand. After looking at the code for literally less than five minutes I had a very clear understanding of what was needed to add additional functionality to the system. Aside from the class which I created in addition to the existing system, the only actual modification to the existing system that had to be made was the insertion of ONLY 2 lines of code. very easy! almost too easy...... so to original team Hash developer/s I would like to say great job! you made my life easy.
So lets take a look:
Here is the System
This is the additional functionality that I added to the system:
monitor-power [tower | lounge] [interval]
This command prints out a timestamp and the current power for [tower | lounge] every [interval] seconds. [interval] is an optional argument and defaults to 10 seconds. Entering any character (such as a carriage return) stops this monitoring process and returns the user to the command loop.
And just for fun here is the two line modification I had to make to the system:
MonitorPower monitorPower = new MonitorPower(); |
commandMap.put(monitorPower.getName(), monitorPower); |
As you can probably tell by now I was thrilled at how easy it was to understand and enhance this system. Without a doubt this system satisfies the third prime directive. Taking on the challenge of enhancing another development teams code base can be difficult, if not properly documented and implemented in a confusing way it can be a nightmare to sort through it all. This was obviously not the case with HaleAloha-Cli-Chair.