Java and Waffles

06 December 2007

events java jbossorg opensource traveling

In about 24 hours I'll be jetting towards Antwerp, Belgium to attend JavaPolis. I'll also be meeting most of my team for the first time, as the development stars from Poland wing their way westward.

JBoss has a booth, and a bundle of core developers (and management) will either be attending or speaking.

Hat full of Java

08 November 2007

java jbossorg opensource red-hat sun

Red Hat and Sun recently signed some agreements around open-source Java projects and access to the Java TCK. This all goes towards the OpenJDK, and ultimately, having an open and officially recognized JDK on Fedora.

Contrast that to Apple, who some people think is pulling back and away from Java.

For more information about these agreements, see this interview with Sacha Labourey. He explains the expected impact and benefits of these arrangements.

GIS Day

08 November 2007

asheville codehaus gis north-carolina opensource technology

Did you know that November 14th is GIS Day?

I've experimented with PostGIS some, so I'm interested to see what's going on. Here in Asheville, we apparently observe GIS Day on the 9th, with some stuff going on at AB-Tech.

There's a talk on open-source GIS, so I'm curious to see if GeoTools or uDig are mentioned, being some of the open-source GIS projects at the Codehaus.

Google Maps has shown us how everything goes better with some visual representation. I think GIS will only grow in importance, and tooling like PostGIS makes it fairly easy.

Unwind with Subversion

16 October 2007

codehaus jbossorg opensource ruby subversion tools

At the Codehaus and at JBoss.org, I've continually come across Subversion repositories that needed to be split apart or merged, perhaps after converting from CVS. One problem you continually hit, particularly if you're merging repositories, is the "date order of revisions" bug. Simply stated, if you create a new repository loaded from two other repositories, you can end up with a situation where revision N does not necessarily occur before revision N+1, in terms of the commit time-stamp.

When you do a date-based operation using Subversion, it does a binary search through the revision sequence to find the revisions matching the specified dates. This binary search assumes the revisions are indeed date-ordered.

With the acquisition of Mobicents by JBoss, we're in the situation of having to merge about a dozen repositories. Some are CVS, some are SVN. Good ol' cvs2svn works well for the first step, of converting a CVS repository into a SVN repository. But now we have either oddly disjoint repositories, or conflicting paths overlaid one another.

I've always been a fan of mod_rewrite for Apache-httpd, and a SVN dumpfile has a lot of paths just ripe for rewriting. 1000 lines of Ruby code later, I'm able to announce Unwind. Unwind is a Ruby library, along with a command-line tool, for performing mind-numbing feats of repository surgery.

Since a massive conversion and rewriting is something that requires a bit of trial-and-error, the command-line utility is ultimately driven by a configuration file. Of course, with Ruby, it's just a DSL created using instance_eval and blocks.

Picture 5.png

This configuration file will ultimate produce a single file (merged-repo.svndump) from multiple input dump files. Each source file can include()/exclude paths (based upon the original paths in that particular dumpfile). Each source can also use Rails-ish URL rewriting. The :something syntax matches 1 segment of a path, and is available as a substitution value in the output path for the rule.

The rewrite engine tracks all existing paths, and creates parent directories when necessary. SVN copy operations are fully adjusted both for the source and the destination paths.

Unwind automatically interleaves revisions to achieve total monotonically increasing time-ordering for the final repository.

Finally, before a revision is emitted to the output repository, addition include()/exclude() rules can be applied. For repositories converted from CVS, you may end up with a bundle of CVSROOT directories attempting to live in the same location. No reason to rewrite them to unique locations, as you can just exclude them before they get figured into the final output repository.

Unwind uses SQLite for organizing the meta-information about each repository and revision, while performing random-access seeks on the source dumpfiles to produce the final repository. While merging may be the common use-case, Unwind's rewriting also makes it useful just for extracting bits out of a repository.

At this point, this blog entry is the complete documentation for Unwind. But feel free to browse the SVN repository.

JBoss World: Roundtable and Hackathon

05 October 2007

community events java jbossorg opensource

Earlier this week, Katie Poplin sent out the notifications to people who submitted presentation proposals for JBoss World 2008. The official schedule will be posted later, but I'm happy to say that my proposal for a JBoss.org round-table discussion about running open-source projects was accepted.

I'll be drafting some core developers, external contributors and users of JBoss projects to discuss the various aspects of OSS projects. We'll compare the differences between projects that have community origins to those with corporate origins. We'll look into the different management styles of both communities and projects. We'll get some feedback from users and contributors, to provide a different perspective. It should be interesting.

Additionally, JBoss.org will be sponsoring a hackathon. This will provide a place for developers who seldom (if ever) meet in person to get together and write some code. Hackathons are a great way to learn a lot in a short amount of time or to knock out a major feature or improvement on a project. We'll be publishing more information about this soon, along with a wiki page in case anyone would like to coordinate their activities.

Itchy and Scratchy

23 September 2007

community opensource

Over in the LinkedIn Answers sections, on blogs, or in dimly lit conference rooms, I've heard a question repeated a few times.

What open-source project should I contribute to? How do you find a good one?

Normally, the supposed motivation for finding a project in the first place, the reason for this quest, is to increase one's skills (and employable worth), to give back, and to be wholly satisfied as a useful member of society. I and others have responded giving a logical laundry list of axes to be considered while attempting to answer that question.

Fresh contributors to open-source see no immediate financial benefit from their efforts. They're basically doing charity work. Altruism. Love.

Picking a project using a multi-dimensional matrix of variables and personal weights starts to feel like picking your favorite child, based upon the tidiness of their room, their popularity at school, and the odor of their feet.

But the seminal works (I'm assuming there are some agreed-open seminal works so I don't have to list references) always fall back to "scratching an itch" as the fountain of open-source motivation.

Scratching an itch. Your own itch. That's not altruistic. That's not love. That's not even a choice.

It itches. Scratch it.

You don't pick an open-source project. In Soviet Russia, open-source project picks you.

Throw that multi-dimensional matrix out the window. Stop asking people which project you should deign worthy of your love and affection. Just ask yourself one question:

What project that you already use pisses you off the most?

There you go. That's your answer.

If you pick some project you don't use, you're not "giving back," you're simply "giving." And then the whole equation of self-motivation skews, and those bastards not showing enough gratitude for your "gift" starts to really get on your nerves.

If you're scratching your own itch, you don't get upset when someone else forgets to say "thank you."

Seams to be a Good Day

20 September 2007

community groovy java jbossorg opensource

A couple of JBoss-related announcements today...

Picture 8.png First, if you're wanting to meet some of the JBoss guys out in the Real World, we've mashed-up Google Calendar over at our Community Calendar Page. Currently it includes some dates to meet the Drools guys in Orlando, Romania and Sao Paulo, some Hibernate guys in Atlanta, Dublin and London, and the Value2 tour across North America.

Additionally, Norm Richards has announced Seam 2.0.0-CR1. If you've been waiting to jump on the Seam 2.x bandwagon, this is a really good time to check it out. Being a candidate-release, this could quite possibly be The Real Thing. If while digging around, you find a show-stopper of a bug, let us know in the forums or via JIRA.

JBoss.org Podcast with Gavin King of Seam

18 September 2007

community groovy java jbossorg opensource podcasting

Back at JavaOne, the team and I chased down Gavin and made him speak on Seam, Web Beans (JSR-299), Groovy, Grails, and two-wheeled forms of transportation.

We've also included a transcript, since both Gavin and Mark have those funny accents.

JBoss World 2008 CFP

06 September 2007

community events java jboss opensource

presentation-boy.gifThe 2008 JBoss World conference has been announced as happening in Orlando during February 13-15. That's Valentine's Day. Bring your sweetie south, and thaw out with some hot Java in the sun.

Want to be a superstar and get a free pass to the conference? Of course you do!

Just submit a presentation. If you're selected, you get a conference badge, some free meals, and the glory of the community.

You know you want to.

Tom Baeyens of jBPM

06 June 2007

java jbossorg opensource podcasting

I've finished putting together the first podcast since I've joined JBoss.org. Mark Newton and James Cobb helped with this interview of Tom Baeyens, the project lead for jBPM. In it, Tom discusses some of the fundamentals of jBPM, including his ideas around the Process Virtual Machine (PVM).

YouTube | MPEG-4 (Video) | MP3 (Audio Only)

[youtube]SuO9m4qE9DE[/youtube]