Managing Eclipse with large development teams

Posted: May 21st, 2006 | Filed under: Uncategorized | No Comments »

Tom Tromey’s post about the challenges of packaging & distribution Eclipse plugins, is symptomatic of a much larger management problem in Eclipse. A little while back I was involved in designing & implementing a structured development environment for a group of (~20) Java developers. The model was to have a handful of remote servers setup to allow developers to remotely run Eclipse within a VNC desktop. There were three core goals I was aiming to hit:

  1. Ensure all developers are using an identical development environment / toolchain. So using the same JVM version, populating Eclipse with the same plugins, using the same workspace settings, have the same code checkout.
  2. Enable new developers to get working with a fully functioning development environment in < 10 minutes. This includes creating a new Eclipse workspace, getting a complete code checkout, building the code & finally be able to run the application
  3. Enable new machines to be installed & correctly configured to act as development servers with no manual intervention.

While the base RHEL OS build was easily installed & configured with Anaconda’s automated kickstart capability, the deployment & subsequent management of Eclipse, is much more complicated. The crux of the problem is that the model Eclipse (and most other IDEs) operates under, is focused on individual developers. The update manager is one example of this mindset – each developer is expected to individually download & install the plugins they want in their workspace. When a plugin update comes out, each developer has to individually update all their workspaces. When managing a large development team a top priority is to ensure all developers have the same version of all the tools – you don’t want them wasting time debugging problems caused by different tool versions. As an administrator it should be possible to deploy & upgrade plugins for all developers using the regular RPM+YUM model. I partially addressed this by deploying RPMs which install the plugins to a central directory & instructing developers to simply have the update manager install all plugins found at this location.

Configuration of the Eclipse workspace was another big problem. While many settings within the IDE can be classified as “personalization”, an equally large group are what I’d term “functional” (ie they affect the way the application builds). To complicate things a little further, the settings are split up, some associated with the workspace, others associated with individual projects. With the “functional” settings, it is clearly critical to ensure all developers within a project are using the same configuration to avoid wasting time debugging build problems. At times during development of a project, it may be neccessary to adjust some of these “functional” settings; at these times one needs to ensure all developers’ workspaces are updated in a consistent fashion. While Eclipse lets one store the .project files within SCM, there is no facility to manage the enclosing workspace configuration. Storing the .project files within SCM was not a perfect solution either, because it was all to easy for a developer to inadvertantly make changes to the .project file & commit them to SCM, impacting the entire development team. It is possible to import & export workspace settings in a plain text file, however, this does not scale up – it is impossible to ensure all 25 developers have the latest requisite settings file imported.

Getting new developers up & running was a similarly challenging exercise in workspace configuration. There was a painfully long set of manual steps, creating a new workspace, importing a file containing workspace settings, installing extra workspace plugins, configuring an SCM repository, checking out the requisite set of projects from a particular SCM branch. A mistake at any point in the process could result in a huge time sink trying to figure out why the developer could not get the application building in the same way as other team members.

It all really comes down to a question of policy & control. As the manager of the development environment, one should be able to define a “template” workspace which contains all the pre-determined functional settings, loads the neccessary set of plugins, defines the appropriate SCM repository & listes requisite projects. Getting a developer up & running would then merely require invoking a command to the effect of “give me an instance of this workspace template”. With such a capability, new developers would be up & running in a matter of minutes. With all manual setup processes eliminated, one can be sure the developer’s environment is consistent with the rest of the team & they can get straight into doing useful work on the project itself, rather than wasting time on setup.

While Eclipse is a very powerful & flexible tool, there is a very large price to be paid for this, with a great burden placed on individual developers to manage the workings of the IDE itself. This diverts attention from the core goal of getting useful development work done. As the size of a development team grows the management overhead has increasingly detrimental impact on the team’s productivity. To address this problem, IMHO, future Eclipse development needs a much greater emphasis on addressing the management needs of teams, rather than individual developers.

Volume control madness

Posted: May 15th, 2006 | Filed under: Uncategorized | 2 Comments »

So watching a movie in Totem & the audio is too quiet – how should one resolve this. Not as quickly or easily as one might hope…

  1. The volume control inline to the cable on my headphones?
  2. The volume control buttons on the Thinkpad laptop, aparantly separate from the main soundcard mixer?
  3. The software volume control in Totem itself, presumably scaling in the GStreamer pipeline?
  4. The volume control applet on the GNOME panel, with its master volume control?
  5. The PCM output level in the soundcard mixer application?
  6. One of the other 10 or so soundcard mixer controls which can be enabled from the mixer preferences, half of which appear to be no-ops?

So, to simply increase the output level of the audio on the DVD I’m watching there’s a choice of 6 possible volume controls to tweak. If any one of these is set too low, it constricts the range afforded by the remaining controls. Why does each application need its own private volume control ? No one seriously listens to mp3s in Rhythmbox, and watches a DVD at the same time, so the master soundcard volume control will cope just fine. Likewise, the plethora of soundcard mixer controls is a complete waste of time – I don’t need to control the headphone volume jack independant of the builtin speakers. What the purpose is the PCM mixer control serving, besides providing another way to make stuff inaudible?

Constrast the situation with a Television. There’s just one volume control, whether I’m using headphones or the builtin speakers, whether its switched to the Cable box, games console, broadcast TV, or DVD player. Not 6, just one. Use a computer as my home media center ? No thanks, I like to spend time watching and listening, not playing hunt-the-volume-control.

Compulsory voting in the UK ? Yes, please.

Posted: May 1st, 2006 | Filed under: Uncategorized | No Comments »

The BBC is reporting on the Institute for Public Policy Research’s latest report which suggests that voting be made compulsory in the UK. While some may try to dissmiss such a suggestion on the grounds that it infringes civil liberties, but consider the maths for a minute. With elections once every 5 years, life expectancy of 75 years and a minimum voting age of 18, one can realistically expect to have 11 occassions on which to cast one’s vote in a general election. It is pretty hard to argue that casting 11 votes in a lifetime would result in a measurable impact on person’s civil liberties. Democracy is not something that one can take for granted – those living in the UK are very fortunate in comparison to millions elsewhere in the world living under military rule, dictatorship, and other forms of oppressive government. Democracy as a succcessful form of governance has the idea of accountability as one of its core foundations – if they value democracy, the population has a duty to keep a check on its government; casting one’s vote at time of election is one of the few ways in which change may actually be effected. One vote may not appear to make a difference, but when that’s multiplied by the 40% (or more) of the population who typically fails to vote, it should be clear that really anything is possible. While compulsory voting may not solve voter apathy overnight, it ought to reinforce the message that democracy is something one must work to protect – that it is one’s duty to protect it – both for ourselves & future generations.

WikiPedia has a page on the subject of compulsory voting considering the pros & cons, and listing the places with compulsory voting today. There is an interesting fact at the end – the Massachussetts constitution of 1918 has an article giving the general court the power to enforce compulsory voting during elections, although its never chosen to exercise it yet.

BTW, for those who’ve asked – while I’d like to allow comments to be posted without needing a blogger.com account, every time I’ve enabled anonymous posting in the past the spam-bots have gone wild :-( So they’ll have to remain registered users only I’m afraid. If you don’t want to register you can always email me, or reply via your own blog on Fedora Planet.

Let the music play

Posted: April 30th, 2006 | Filed under: Uncategorized | No Comments »

In my previous apartment in London I didn’t have the space to unbox & use my Hi-Fi, so for 2 years I’ve been listening to music pretty much exclusively through my laptop. While I unquestionably missed the audio quality of my Roksan CD player & Amp, I’ve gotten accustomed to the convenience of not having to physically switch CDs every 60 minutes. A quick move across the pond later, I once again have the space to use my Hi-Fi (yay for cheap Cambridge rents – well compared to London at least!), but it has reminded me just how tedious CD changing is.

And then I remembered the fine folk at Slim Devices who make a nifty little device to connect the music library on your computer, to your Hi-Fi. The latest generation 3 SqueezeBox looks even smarter than their previous models, and with their explicit support for Linux was just the thing I needed. I ordered one of the wifi-enabled versions, which arrived just in time for the weekend, and even after only 2 days of use I can highly recommend this to anyone looking for a similar device.

Installation was a breeze. The server side software comes in an RPM which installs & starts with the only configuration option being to tell it the directory containing your music. Configuration of the device itself amounted to no more than selecting the correct wifi network, entering the WEP key (WPA is supported too), and telling it IP address of the host running the server software. So from unpacking to playing music was no more than 5 minutes of work (well, plus another 5 minutes trying to convince NetworkManager to connect to my wireless network after I had enabled WEP). Along with the defacto standard MP3 support, it also supports OGG, WAV, FLAC and Apple LossLess – with the latter formats, audio quality is supreme. The best thing about it though in comparison to similar devices, is the UI provided by the LCD display and remote control. As well as the initial network configuration, this lets one browse & search your local music archive by artist, album, etc, select from countless Internet radio stations, and interact with other non-music items such as RSS news feeds, weather reports, and other plugins… Oh yeah, plugins – the server software is completely open source, well documented and easily extendable – 3rd party plugins for the device are actively encouraged, and there are some seriously useful add-ons available.

The only downside of all this is that its highlighted the shortcomings in the audio quality of my mp3 collection. Even with a high quality, VBR encoding there is still noticable loss of definition at both ends of the spectrum. So I’ve decided to re-rip all my CD’s into the lossless FLAC format – averaging out at about 400 MB / CD a 200 GB hard drive will comfortably store 500 CDs and if I ever need to switch formats again I can encode straight from the FLACs, skipping over the ripping part.

Virtualization and DVD pricing (not related!)

Posted: April 26th, 2006 | Filed under: Uncategorized | No Comments »

DV has been doing some great (and much needed) work to provide a stable API for managing Xen, by building the libvirt library. There are already APIs in C, and Python, but when it comes to system administration I’m really a Perl guy so I knocked up a set of XS bindings (in the Sys::Virt namespace) to allow libvirt to be called from Perl scripts. With DV’s recent 0.1.0 release of libvirt I thought it timely to upload the Perl bindings to CPAN, thus there is now a module Sys-Virt 0.1.0 available. There’s basic API docs, along with a couple of practical examples

On an unrelated note, its been great to be able to buy DVDs in Boston/the US at a fraction the price I’d have paid in London. So I was rather surprised to come across a DVD that actually costs more here – Abbas Kiarostami‘s film 10 comes in at 26.99 USD, vs 8.97 GBP (equiv ~15 USD). Never thought I’d be shipping DVD’s from the UK to the US! Now just got to get around to ordering one of the nice MultiSystem (PAL+NTSC) & MultiRegion Pioneer DVD players so I can watch DVDs on a real TV instead of my laptop…