Continous Intergration - continous headache?

Recently attended a seminar, a free seminar, on Continuous Integration, or CI for short. It was Informator hosting it and two guys from Objektfabriken who held the actual seminar.

There are a number of good tools to get CI rolling. But is it as easy everybody claims? Tools are good, bu you need a process too and, even more crucial, backing from management. Without it, nothing can really be done in the area of CI. I.e. introducing CI requires such a level of effort (LOE) that you cannot hide it for long before it shows in your time reports, etc.

What is this thing with LOE and CI and process?? Well, you cannot just hook up CruiseControl to your Subversion repository and think you're up and running. There are a number of other aspects to consider; to what degree will engage others in your team? What branching strategy are in use at your organization? Will the introduction of CI imply changes in your organization? ... and are those in this organization ready for a change? Will this change be introduced gradually or are you planning to do it "Big Bang" style? There are of course numerous questions that needs to be addressed before you can start doing the practical stuff. Please keep in mind; every project and organization is unique in their own respects.

Degree of CI: there is a continuous scale, it basically describes the degree of isolation between development efforts. I.e. how much a change affects others in the team. In one end there is basically no isolation - this implies basically no branching strategy and thus a change can affect everybody in the organization. You have developers check-in their changes directly to the main branch in you source repository.

In the other end of the spectrum, you enforce a strict branching strategy where people have to take in updates on isolated branches, run test cases, before checking in their changes. Then merge in their change to the main branch. The latter will not render any problem as the issues involved with merging has already been dealt with in the isolated branch. The very end of this range of CI is reached in the latter if developers are continuously updating their isolated branch with any change introduced in the main source branch.

So, you can probably also see that there is also a degree of effort, cost, required; low effort - low safety or higher risk, high effort - higher safety and lower risk.

What to do now? You have to decide where on the scale to start. Do you want start in one end and move towards the other? Or, do your organization require a certain level and stay there? I think it is all up to what you want to achieve and how much risk you are prepared to take.

And... please keep in mind: Developing software is a people thing.


Maven plugins

Creating plugins for Maven is quite simple, after some initial hurdles, and fun. Most Mojo:s I've done so far are rather small in size. The Maven Core API:s and the like are quite rich in functionality.

How to start? Check out this Beta version of the "Maven, the definitive guide". There is a good chapter on how to start creating your own specialized plugin doing a task not yet supported by one of the existing Maven plugins. Also, you might need some special thing done in your unique build process. Also, check out the "Plugin Developer's center" on the Maven site.

The only thing I can complain about is the lack of JavaDoc. But that is compensated by taking a peek at the existing source code of Maven and some of its plugins. Remember; the ultimate documentation is the code, after all ...


Managed to finally send those transit maps ...

I finally came around to send some transit maps to a collector. There is a collector at Sun Labs of metro transit maps. Just as I put the envelope in the mailbox I recall I didn't take any pictures of the maps I just put in the mailbox. Well, you can check the blog to see them when they appear there ... should be there in a week or so.

Those maps; what city are they from, you might ask. Well, many years ago I spent some time in Tokyo and they had a very clever rail way map. By folding it in several ingenious ways it manages to cover the entire metropolitan Tokyo rail way system, and still keep it pocket size. At that time I had a Filofax, Palm Pilots where just around the corner, so I had the maps in it for easy reference. How many years ago? Well, at that time I didn't own a digital camera but had a Canon Ixus, at least it was an APS. I could digitize the images using an APS scanner.
Enough of this looking back, next post will look forward...


Maven, maven - what's in store for us..?.

Just started working on a suite of plug-ins for Maven2. A bit tricky at first, but so far it is very fun stuff. At the core of Maven there is a dependency injection engine; Plexus. It is also referred to as an Inversion of Control container.

Anyhow, I've just begun exploring the API:s, etc. It seems promising... I'll be posting back here when new findings surface. Meanwhile check out this great book on Maven. This is the second book I've encountered so far about Maven.


Opinions are the cheapest commodities

Anybody can have an opinion about just anything, and almost everybody has. Well, it is easy to have an opinion about just anything, it is the cheapest commodity in the world. Why is it so cheap? Well, it is very often preconceived, i.e. somebody else has already thought of it. Actually, most people who do have an opinion very very often has never been in touch or used what they are opinionated about. This is quite true when it comes to technology, and Java in particular - for some reason there is still some FUD lurking. People with an opinion, often negative, about Java does not know much about it. They seem to feel strongly against something they do not grasp, or whatever (something unknown?). Those who do know something about Java, just do things and get along.

So, what is the conclusion? Opinions are not based on facts as knowledge is. Find out the facts first then decide.

Where does this "cheap commodity" thing really come from? Well, I think it comes from the fact that a majority of the population very often is not thinking (I've heard a figure of 97%!) but rely on preconceived impressions. We seemingly go along with our lives on auto pilot.

So, find out the facts for your self. Listen to others - facts they reveal, and then make up your mind based on the facts discovered, and maybe most importantly; ask questions!