Wednesday, November 19, 2008

Continuous Integration System Roundup

Continuous Integration Systems are one of the most important tools for agile software development. They automate the process of building and testing. A lot of people seem to have realized their importance and there are quite a few products in this arena. I already used Hudson and CruiseControl, but for OpenMRS we need to find one which is best suited to our needs. So I started out about 3 weeks back to create this roundup of continuous integration servers. This should be a useful roundup for any project with similar requirements.

Why does OpenMRS need a Continuous Integration System?

Any software development effort needs to take care that regression doesn’t happen with new code changes. Often a change in the API/module core results in breaking of modules dependent on an earlier method. A Continuous Integration System will rebuild OpenMRS after a change is committed and provide information on how that change is affecting related code.

OpenMRS would also benefit from an easy to understand UI that Continuous Integration Systems provide for number of failing tests. The number of passing or failing Unit Tests will indicate the quality of a build and help implementers/testers realize the stability of a build. We can also set some goals on how many test methods we need to write before an API method can be finalized or deprecated.

The work done in different branches and modules can be monitored and looked at easily by the community.

Building of OpenMRS Installer using NBI can be automated and new users can directly test with the latest build of OpenMRS using the cross-platform installer.

Thus to summarize, a continuous integration system will bring better release quality, more transparency, quicker bug finding and fixing, simplicity and TDD frame-of-mind.

Disadvantages for OpenMRS in using Continuous Integration System

  • Additional Load on Servers
  • Not every developer is motivated to write unit tests ;-)

Features that OpenMRS needs (Not exhaustive)

  1. Easy to monitor tests and easy to understand dashboard
  2. Support for SVN and Ant
  3. Dependency integration
  4. Email/RSS/IRC notifications when a build fails or bad code is committed
  5. Warning flags when a committed code doesn’t follow coding rules (naming, newline format,etc.)
  6. Allow code committers to modify build and test parameters from the GUI
  7. Optimal Performance
  8. Price & Open-source development

Comparison of Continuous Integration Systems:

  CruiseControl Continuum TeamCity Bamboo Hudson
Monitoring UI Dashboard introduced since v2.7 is not intuitive Dashboard only shows tests Advanced UI & dashboard. Advanced UI, Detailed reporting out-of-the-box, Intuitive Simple Dashboard, Plugins enhance reporting, Intuitive, somewhat detailed
SCM Support All Support SVN
Dependency Integration Scripts need to be written for each new dependency. Tracking different versions of dependency jars is very complex Easy for Maven2.0+ projects, but not so easy for other types of projects Dependency can be managed easily. Advanced UI for dependency management Dependency management is easy and intuitive. Different versions of same library not automated. Creating test/build plans allows dependency of different versions Dependency management is easy to configure. file fingerprinting simplifies identification of different versions. Automatically can detect and build project dependencies
Email/RSS/IRC Emails. Plugins - RSS, blog, IM with Jabber Email, IRC, IM with Jabber, MSN Email, Jabber, RSS, external HTML widget Emails, RSS, IM Notification using Jabber or OpenFire Plugin – Emails, RSS, IRC, Jabber, Google Calender, Twitter
Code Quality and Patterns Not very easy to define Could not find a way Can be defined with plugin for IntelliJ IDEA Managed through test plans. Manual test plans have to be created Plugin provides UI. Test plans can be created manually out-of-the-box
Security and User Management Easy to configure with different roles Roles can be easily defined Roles can be easily defined Simplistic UI for user build plan management. Easy integration with JIRA Easy to configure roles for users
Performance Fast Fast Somewhat slower in comparison, but includes a lot of features Fast in build and integration. Slightly slower in reports. Includes lots of features that may not be used. Distributed builds with slaves speeds up performance Comparatively lightweight out-of-the-box, but requires plugins. Distributed builds with slaves speeds up performance
Pricing Free & OpenSource. Paid version called Cruise available. Free & OpenSource Professional version is free, but enterprise is paid Free for opensource projects Free & OpenSource

Netbeans 6.5 Final Released

After some delay in the release due to quality issues, Netbeans 6.5 is out for download. It is netbeans 128 2 indeed a feature-rich build and some great changes have been added for this new release. Along with the new features, I can vouch that Netbeans 6.5 is also a pretty stable release since I was part of NetCAT 6.5 (Netbeans Community Acceptance Program).

The list of new features can be found here… My favorite features are the improvements in Database Query, Python, HTTP Client Monitor, JavaScript Debugger and PHP. If you are a developer from the php world, I would really suggest that you take a closer look at Netbeans 6.5. I love the documentation and code hints that Netbeans will give you.

Netbeans also completed 10yrs a few weeks back and celebrate by downloading Netbeans 6.5 here.

Friday, November 14, 2008

Indian Flag on the Moon

It is a glorious moment for Indian Space Research Organization (ISRO) and India, for it has become the 4th country to have landed on the moon. Today, just hours back Chandrayaan-1's Moon Impact Probe (MIP) landed on the moon's surface and carries the Indian flag to the moon's surface.

India becomes the fourth country along with US, Russia and European Union (not really a country ;-)) to reach the surface of the moon. The 35-kg MIP hit the moon's surface at 21:31hrs after it was lauched 25mins earlier from Chandrayaan-1, which is currently orbitting the moon and sending images of the moon's surface to ISRO. The MIP is one of the 11 probe that Chandrayaan-1 is carrying for various exploration activities on the moon. According to ISRO officials, the MIP landing was perfect and worked exactly as planned.

After the landing, ISRO chairman G Madhavan Nair said, "The Moon was favourable to us. We have travelled all the way to the Moon. We have given Moon to India". It is indeed one of the greatest scientific achievements in India's history and everyone is elated...

I'm not quite sure how India received the moon with this mission, as quoted by the elated chief. I thought the white disk that I've been looking at since childhood was the moon ;-) and its been in view from India for centuries!! Next time when I look through a telescope on the moon's surface, I'll try to find the Indian flag!! Anyways, now we are all waiting for India's manned mission to the moon which has become somewhat of a race with China's moon mission.

Thursday, November 13, 2008

Gmail Voice Chat & Video Rocks

Google has pulled off yet another spectacular with web applications... Yahoo have been trying to do this for sometime now, Ebay wanted to do this with Skype after their buy... but it can be said Google has reached their first with quality voice chat and video chat from a web app directly.

To use voice and video chat from Gmail, you have to install a browser addon called GoogleVoiceAndVideo (the size is pretty large: 447KB) and this enables Voice and Video chat from within Gmail, just like the current Instant Messaging (IM) window within Gmail. While you are checking your emails, you can chat from anywhere in the world. You don't need to have that client application installed.

Gmail had text chatting in the web app for a year or so and this helped gain some market share in the IM world. Google Talk and Gmail chat are still long way behind MSN Messenger and Yahoo Messengers usage, but continuous improvements like this may help Google gain some market share in the IM market...

The Voice Chat and Video Chat uses a proprietary technology called "Vidyo technology"... The quality is pretty good and is nearly same as the GTalk desktop application. Obviously like Gmail's chat, there are some bugs in Voice chat as well and sometimes the connection doesn't happen the first time. But most times the voice was clear and crisp. For a first day after launch the service was pretty good.

I often use Skype for Voice and video chat. Skype has got a Linux client and its voice is one of the best in terms of quality. Gmail's voice doesn't work with Linux. Both Skype and Gmail's voice does not use Session Initiation Protocol (SIP), which I would have liked to see, to allow inter-interoperability between different VoIP providers. Nevertheless, bringing it to the browser is a new improvement that will bring ease-of-use to the users.