|
July 2004
[
vmassol
]
20:56, Saturday, 24 July 2004
11/08/2004 update: The project is about to start on Codehaus and is now named Cargo. Note: There is also an article and a discussion thread on TheServerSide about this inititative Here's a new idea for an open source project I'd like to start. It could be called CCI (Container Client Interface). It would aim at providing a simple Java API to start/stop/configure/deploy Java containers (In the first version the goal would be to support J2EE containers). This Java API could then be used by lots of other projects (Ant tasks, Maven plugins, IDE plugins, Cactus, etc). The inspiration comes from the Cactus project, which already provides an extensive API to perform such tasks. The goal is to refactor the Cactus Ant API, remove anything related to Cactus and make it a standalone project called CCI Here's an integraton test showing what the API could look like:
As you can see there are several main Objects/Interfaces:
Note that the ping URLs are the URLs that will be pinged by the ContainerRunner object to ensure the container has finished
starting. Thus, after A shorthand code version to start Resin 3.0.8 could look like:
This is just a taste of what he CCI API could look like. Let me know what you think!
[
vmassol
]
20:10, Sunday, 11 July 2004
I've just released a Maven plugin for Abbot. Abbot is a Swing unit testing framework. The Maven Abbot plugin supports the following:
You can download the Maven Abbot plugin here. Please note that this plugin was written jointly with Christian Blavier whom I thank very much for his help!
[
vmassol
]
19:46, Sunday, 11 July 2004
Here is a list of OSS stuff I'm considering doing in some short future (note that I'm not planning to do all of them ;-))
In addition to this, I plan to continue fixing Cactus v1 bugs (albeit slowly...) and continue fixing bugs and adding enhancements to the Maven plugins I have started (changes, clover, abbot, etc). If you're working on the same topics or if you're interested in contributing, please let me know!
[
vmassol
]
12:06, Saturday, 3 July 2004
The need for source code communicationWhen you're working in a team one of the most important aspect of development is to know what others are working on, what they are modifying. Indeed, in development everything is tied one way or another:
Basically, I need to know whenever some source file on which my work depend on is modified. Of course, I could rely on verbal communications: "Hey Joe, I'm gonna work on this files for the coming 4 hours". Sure, that'll work too. However it's not a scalable solution (Imagine a project divided in 5 teams of 10 persons each) and it works only if the participants are acutely aware of what each developer is depending upon which is near impossible. In addition, if the team is distributed it becomes virtually impossible to communicate such small events in any efficient manner. There has to be a better solution. And there is! There are actually 2 solutions I know of, one better than the other. Solution 1: Diff emails on SCM commitThis first solution involves setting up a server-side hook in your SCM. Most SCMs supports executing a script upon source check-in/commit. Just write a script that sends an email containing the diffs between what the user is committing and what already exists in the repository. The reason for the diff is that we're interested by what's different and not by the full content. This is what is done in most open source projects. Here's an example:
The problems with this solution are:
Solution 2: RSS feedsThis solution involves setting up some kind of server that will generate RSS feeds for the developers. Implementing this could be quite involved. Fortunately there's a tool called FishEye from Cenqua that does exactly this. It's an improved viewcvs. Most importantly it allows developers to generate RSS feeds on any resource (any directories and any files). Here's what the HTML view looks like:
Then here's what you get in your favorite feed reader (I'm using Newz Crawler here):
Clicking on the diff link generates the following view:
Note: Please note that FishEye currently only supports CVS. Other SCMs like Subversion are planned in the future. ConclusionIt is relatively simple and very effective to set up a way to notify developers about changes happening in the repository. I would even suggest that not doing so is a "communication anti-pattern". In order for it to be the most effective possible, developers should not be "spammed" by tons and tons of diff information. Thus to prevent this spamming you should consider 2 options: using RSS feeds instead of emails and allowing developers to choose their feeds. There are obviously some feeds that should be more "mandatory" than others. For example, the one notifiying of database schema change, the one notifying of build changes and the one notifying of public API changes. It's important, as always, that there is a champion in the team, explaining to others the benefit of these feeds and how they should be best used. Otherwise the power of them may exist but it won't be harnessed. |