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, 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.

Stupid Friday Fun

16 March 2007

codehaus community humour java jbossorg social

Picture 27.png It's Friday, and we all like having friends, so...

And don't act like you don't have a MySpace account. You know you do.

The role of a .org

15 March 2007

codehaus community jbossorg opensource

We've got a bundle of opensource communities all over the place now. Some of them are the opensource arm of an otherwise capitalistic commercial entity:

Others are non-profit, or not tightly tied to a corporation:

    None of these should be confused with .nets, such as or The .nets of the world are more like warehouses than communities. Both types of .orgs do share a lot in common, but they also have some functional differences. Working with both the Codehaus (just a community) and JBoss.ORG (a .org sibling of a related .com) is interesting.

    Non-commercial .orgs

    The non-commercial communities serve both the community members and the actual project developers. The role towards the community is fairly passive, mostly providing the capabilities for participation, contribution and interaction. For the developers, primarily normal "forge" tooling is needed. Here, different communities might select different tools, but ultimately the feature-set is roughly the same. Ultimately, taken all together, we're only talking about Subversion, mailing lists or forums, IRC/Jabber, bug tracking, continuous integration, wiki, webspace, and maybe blogs. That sort of thing. Of course managing a bag of disparate tools in a useful manner is no trivial task. org_principles_noncommercial.png While non-commercial .orgs also may encourage interaction and cross-pollination between projects, it is not necessarily their primary mandate. At the Codehaus, I do attempt to introduce various project leads I think might have a chance at some cooperation, but beyond that, nothing is explicit. The Codehaus is the land of containers, for instance, which might never have any reason to cooperate or share community members. Apache, on the other hand, does try harder for inter-project cooperation. Projects are encouraged to use other Apache projects where possible and contribute to things such as the various "commons" projects. OpenQA, through its focus on a particular type of project, also promotes natural cross-pollination amongst the members of each project. QA folks can be... intense.

    Commercial .orgs

    Commercial .orgs likewise have to address both the community members and the project developers. The project developers still demand good forge tooling, of course. But the .org starts to play a larger role in regards to the membership of the community. Instead of simply facilitating interactions, the .org must also act as an advocate for all users, including those from which the corporation derives no revenue. org_principles_commercial.png With a commercial .org, there are natural inclinations to attempt to directly monetize as much of the community as possible. It's not at all a malicious goal, since ultimately, the company should try to monetize the community. That's the whole point. We need to learn that direct monetization is counter-productive, though. Attempts at direct monetization may include putting some content behind locked doors, running banner advertising everywhere for the corporate offerings, or being closed to complementary or competing ideas and individuals. If everywhere a member looks, they see marketing and sales of the host company trying to grab their attention, it stifles the sense of openness. The revolution will not be sponsored by a single company. In a real community, a truly thriving community, there will be other actors out there in the field. Your projects are hopefully so successful that other people see ways to build their own businesses around them. These folks can be seen as either threats or opportunities. Using the .org only as an extension of your own marketing department would ignore these folks, turning them into threats. Projects within a commercially-backed .org tend to have more product management behind them, explicitly providing a multiple-point solution across the entire platform of projects. The .org's role likewise must ensure that the shared communities between projects are helped to find their own commonalities. Additionally, in the wild world of opensource, a lot of projects just simply fail to develop a community. A commercially-backed project has already shown to have a community, and the company has a vested interest in ensuring that it continues to grow. The .org plays the role of the park ranger, tending to and actively promoting the healthy land wildlife of the project. In the "real world", lightening strikes a dry pine, and 3 million acres of project go up in smoke. A company can't afford to have that happen. Pardon the bad analogy.

That's freakin' Groovy

30 January 2007

codehaus java

Groovy! Hat's off to Guillaume and all the other cool kids who pushed Groovy to a 1.0 release. My original hand-rolled parser is long-gone, but I still wish for the best for these guys.

I think it's cool, too, that they are having concurrent parties across the globe to celebrate.

Oof Uncamp SF Recap

16 September 2006

codehaus events food java opensource web-20

Brian Topping had the foresight to bring his digital SLR and document the Oof Uncamp gathering last Tuesday evening. Attendees included some current and ex-ThoughtWorkers (Paul Hammant, Kurt Schrader), some guy from Ning (Brian McCallister), a cow-orker (Pete Royal) and a VP of something-or-another at Yahoo! (Sam Pullara). Plus our intrepid photo-historian, Brian Topping. Random partners and friends-of-friends were inbibing with us. Click the photo for even more photos.

Conversation ranged from why everything Yahoo! touches is so ugly to ranting about how freaking cold it was that night. By the time it was all over, Sam was talking about some ideas that involve fleeing the country, never to return. My reputation as Mr Perma-Beta was re-affirmed, and apparently is to blame for Radar's perma-stealth mode.

Yes, it's all my fault. I also cause cancer.

We befriended and inducted Cephus and Mongo as honorary hausmates. We doubt either of them own a computer, but they were nice guys, and the Codehaus Foundation needs some muscle on staff, in case we have some enforcing that needs doing.

Remember kids, any gathering of 3-or-more hausmates is an event. Or an un-event. 2.0.

Codehaus Oof Uncamp San Francisco

12 September 2006

codehaus jboss opensource web-20

It has been decided that tonight, 12 September, the Codehaus Oof Uncamp will happen at Zeitgeist, in San Francisco. It's cash-only, so bring some Benjamins. I'll buy the first round or two.

Update: 7pm is the time to collide.

The Lazy Coast

04 September 2006

codehaus day-job events java web-20

Picture 23.png My luxurious jet-set lifestyle is taking me to the San Francisco area in a week. September 10th through the 14th, I'll be in the general area of all things 2.0. I'm truly excited to finally get to meet my coworkers. Yes, I've worked for Radar Networks for just about a year now. No, I've never met a single coworker while employed with Radar Networks. I have met Peter Royal before, but that was before either of us worked for the company.

I am tentatively thinking of a Tuesday (12 September) evening Codehaus Oof Uncamp Conference 2.0, where hausmates, sympathizers, collaborators and detractors can gather to do no camping but rather consume some Beers 2.0 . Though, who knows. Maybe we'll do it Wednesday, or Sunday. We're agile.

Locals will need to suggest some good location and pick my ass up near Chinatown.

Hey mon, Gone to OSCon

24 July 2006

codehaus events java opensource technology

Picture 12.png Well, I've managed to procure both travel and lodging for OSCon in Portland this week. I still don't actually have a conference pass, but what is life without challenges? If you're an exhibitor or just a friendly soul who has a spare pass or would like to sponsor me, email bob@ this domain.

I'm arriving around lunchtime on Wednesday, and departing at the break of day on Friday. I think I'm going to the Jive Software party. Henri Yandell has suggested a haus party on Wednesday night, but we'll see how things pan out. I can be SMS'd on my shoephone, which can be found on my contact page.

Holding Court

14 July 2006

codehaus culture events food misc technology

starbucks.jpgI will be holding court at the Vinings Starbucks , in Atlanta, Saturday night, with my son. I'll probably be there around 8pm or so. Email me (bob@ this domain) if you need more information or anything.