Archive for the 'devel' Category

Lazy Web: Atlassian Confluence Search API usage

This is for any Atlassian Confluence developers or contributors reading my blog. I am trying to develop a simple plugin and wanted to use the Confluence Search (v2) API but couln’t find much in the way of documentation or examples.

So I posted a question to the Confluence Forum but got no reply in three days :(. Should anyone be able to help me, the forum thread is here but I am also reposting here the text of the question:

I’m looking for examples and guidance in using the Search (v2) API in Confluence, specifically from a plugin.

I got hold of a SearchManager via Dependency Injection and obtained some results with code like the following

SearchQuery query = ...;
Search search = new Search(query, null, null);
SearchResults results = this.searchManager.search(search);

My problem is that I have no idea about which implementation of the SearchQuery interface to use and in particular how to specify a phrase to search for, since no subclass seems to provide for a way to set a query term.

Thanks in advance.

Alfresco Mail Attach Action

I am proud to announce the immediate availability of the Alfresco Mail Attach Action, a custom action for Alfresco ECM that allows sending documents as email attachments.

sourcesense-logo.gifThis is my first contribution to the Alfresco Forge and it’s a very small thing, but hopefully the first of many more to come. As you might know, Alfresco is the leading provider of open source Enterprise Content Management systems and my employer, Sourcesense, is an Alfresco Gold Partner. Alfresco being an open source product meant that we were able to quickly and easily extend the existing Mail Action without having to reverse-engineer it. Try doing this with Sharepoint!

The Alfresco Mail Attach Action is distributed under the GNU Public License v2.

Hippo acquires Bluesunrise

Honestly, this it not even in the same league as Springsource acquiring Covalent, Sun buying MySQL, or Nokia getting their greedy, little hands ;) on Trolltech, and I had never heard of Bluesunrise before, but still:

Bluesunrise becomes Hippo - Hippo Open Source Enterprise Content Management: “We are pleased to announce that Hippo, Dutch supplier of open source enterprise content management and portal software, has taken over all Bluesunrise activities. We may have a new name, but the core BlueSunrise team is intact and happy to continue providing the quality service you have come to expect. Being a part of Hippo means greater resources to better our service and create new and productive software.”

After all, the Hippo guys are our partners and, more important, they are good friends, so I cherish this acquisition and wish the best of luck to Hippo.

I have no idea how much they payed for Bluesunrise, but with the current valuation of the US dollar, it’s got to be peanuts ;) . And to think that I’m still agonizing over which camera to buy!.

Ostatic

Ostatic logoOstatic is a new website which aims “to be the most comprehensive web destination for information and insight on open source software and services.” I remember at least two other services with a similar aim, here and here, but they didn’t go anywhere, even if the latter was part of the O’Reilly juggernaut.

On the other hand, Ostatic is part of the GigaOM network and this fact, far from being a guarantee of success, might however help if they don’t just let it die on the vine, like O’Reilly did with CodeZoo. I sincerely hope so, since it’s my opinion that we need a site like this, to supplement the venerable Freshmeat.net.

For now I have subscribed to the blog and am hoping for the best.

SpringSource acquires Covalent

Oh my, one more Open Source company acquisition, again. I’m finding harder and harder to keep up, with an almost daily occurrence of this kind of news.

SpringSource - Covalent: “On January 29, 2008, SpringSource announced that it has acquired enterprise open source leader Covalent Technologies. The acquisition brings together two open source market leaders and addresses widespread demand for a simplified application infrastructure based on the Spring Portfolio and Apache projects such as the Apache Tomcat application server, one of the most popular open source technologies in the world today.”

In this case, however, the buyer is not Sun, Oracle, or Nokia, but an Open Source company itself: SpringSource (born Interface21). Interface21 was formed in August 2004 and in a mere three and a half years it has grown so much that it was able to snatch up the venerable Covalent. Kudos to Rod Johnson and friends, and to their business model, which obviously seems to be working rather well.

Nokia to acquire Trolltech

Looks like the mad streak of acquisitions of Open Source companies that characterized this month (see here and here) isn’t over yet:

ESPOO, Finland and OSLO, Norway, January 28 /PRNewswire-FirstCall/ — Nokia and Trolltech ASA today announced that they have entered into an agreement that Nokia will make a public voluntary tender offer to acquire Trolltech (http://www.trolltech.com), a company headquartered in Oslo, Norway and publicly listed on the Oslo Stock Exchange. Trolltech is a recognized software provider with world-class software development platforms and frameworks. In addition to the key software assets, its talented team will play an important role in accelerating the implementation of Nokia’s softwarestrategy.

For the clueless: Trolltech are the creators of the Qt framework that powers, amongst other things, the KDE desktop environment, and a number of mobile applications, including Opera.

Thanks to Corsin for the twit.

Must be the M&A season

First Sun acquires MySQL, and now this:

Oracle to Acquire BEA Systems: “REDWOOD SHORES, Calif., Jan. 16 /PRNewswire-FirstCall/ — Oracle Corporation (Nasdaq: ORCL) and BEA Systems (Nasdaq: BEAS) announced today they have entered into a definitive agreement under which Oracle will acquire all outstanding shares of BEA for $19.375 per share in cash. The offer is valued at approximately $8.5 billion, or $7.2 billion net of BEA’s cash on hand of $1.3 billion. ‘We expect this deal to be accretive to Oracle’s earnings by at least 1-2 cents on a non-GAAP basis in its first full year after closing,’ said Oracle President and Chief Financial Officer Safra Catz.”

Sun Microsystems Announces Agreement to Acquire MySQL

Sun Microsystems Announces Agreement to Acquire MySQL, Developer of the World’s Most Popular Open Source Database: “SANTA CLARA, CA January 16, 2008 Sun Microsystems, Inc. (NASDAQ: JAVA) today announced it has entered into a definitive agreement to acquire MySQL AB, an open source icon and developer of one of the world’s fastest growing open source databases for approximately $1 billion in total consideration. The acquisition accelerates Sun’s position in enterprise IT to now include the $15 billion database market. Today’s announcement reaffirms Sun’s position as the leading provider of platforms for the Web economy and its role as the largest commercial open source contributor.”

You call this REST?

From the Amazon SimpleDB documentation:

Amazon SimpleDB REST calls are made using HTTP GET requests. The Action query parameter provides the method called and the URI specifies the target of the call. Additional call parameters are specified as HTTP query parameters. The response is an XML document that conforms to a schema.

Note

If the length of the query string that you are constructing exceeds the maximum length of the HTTP GET URL, use HTTP POST and submit the query string parameters in the body of the message.

Excuse me??? This must be the single most egregious abuse of the “REST” term I ever saw. Listen, Amazon, just because you use HTTP and XML and do not use SOAP, you cannot just call it REST because you think it’s sexy and pretend that you’re not looking stupid.

The REST Registry

Paul Fremantle’s Blog: A new kind of (SOA) Registry: “So fundamentally the approach we have taken is to build a registry/repository based on REST concepts. And as we looked at the REST space, we kept noticing how close the Atom Publishing Protocol (APP) is to our needs, so we’ve made that the public remote API to access the repository. Of course, if you are just browsing the registry, you only need a browser - APP is mainly there to support updating resources.”

And of course it uses Apache Abdera :).

XML 2007 Wrapup

The XML 2007 Conference is over and here are my observations.

For me personally, it was a mixed bag. My talk was not very well attended and I can understand why now: I thought this was much more of a developers’ conference, but there seem to be many more MIS types and business users than developers. The median age is also much higher than the one that is characteristic of venues like OSCON or ApacheCon: silver hair abound. So it is understandable that many eyes glazed over when I started showing blobs of Java code in the second half of my talk.

One could hope of getting a lot of business leads from such a business-oriented audience, but it’s not that easy to try to sell a European consultancy to a public that is 99% US-based: very few Europeans are here.

Still, I got some nice feedback from the few developers that were attending, so I can be confident that my presentation was of good quality: it’s just that most of the audience was not the right audience.

From the attendee point of view, it was a mixed bag too. There are so many talks that are so loaded with marketspeak that they made me want to run out and do some Christmas shopping instead: shops will take your money as well, but will give you some definite value in exchange for it ;).

As is usual in such situations, you get the best value for money out of meeting other people you have only known virtually until then. One of them is Gregg Pollack (he is the guy playing Ruby on Rails in the “Get a Mac” spoof ads for Rails; if you haven’t seen them yet, do it now, they’re even funnier than the originals).

I also had a god chat with Norman Walsh about his XProc implementation project. I inquired whether he was planning to open it up to external contributions: He eventually will, but will probably rewrite it once again from scratch one more time. So I am going forward with my own implementation, which is currently a labour-of-love, side project to which I am obviously not dedicating any significant amount of time at the moment. We agreed to talk again in a couple of months from now and see how far we’ve come.

The highlight of the trip for me, however, was meeting Sally and Yoav. Curiously, even though both are Bostonians and they worked together in the Apache PRC, they had never met face-to-face before. It took me coming to Boston to catalyze their meeting. We had a very nice dinner in Boston’s North End and a good deal of talk about Apache and our respective jobs and lives.

Cost of a trip to Boston for the XML Conference: about $2000 with MasterCard.

Making new friends there: priceless.

Scarlet

Kudos to my colleagues Ugo and Sergio for releasing Scarlet:

Sourcesense is proud to announce the first beta of Scarlet, a clustering solution for Atlassian Jira bringing high-availability and scalability to the award-winning Jira issue tracker. The solution is based on Terracotta DSO, the Open Source clustering framework from Terracotta, enabling easy and trasparent scalable Java solutions.

Scarlet provides a full-fledged clustering solution for Jira, bridging an important gap when it comes to enterprise architectures based on high-availability: rated as one of the most popular requests from Jira users, clustering support makes Jira a truly distributed enterprise-class solution for organizations relying on simple yet effective scalable architectures.

Scarlet is distributed as an Open Source extension to Jira under the Mozilla Public License 1.1 and it’s available from http://confluence.atlassian.com/x/woQuBg. Jira users and developers are encouraged to dowload the extension and provide feedback: Sourcesense is committed to support and manage contributions, under a transparent and meritocratic Open Development process. Commercial support and additional services are available from http://www.sourcesense.com.

One of the interesting facts about Scarlet is the fact that it’s based on Terracotta DSO, an insanely cool distributed object system, network-attached memory, or what you call it, and Open Source to boot. Ever since I first heard about it, I was under the impression that it could be a great solution to a large class of problems, but was never able to personally verify this assumption. With Scarlet we have a great example of its validity.

5023

AtomPub is now officially RFC5023:

The Atom Publishing Protocol (AtomPub) is an application-level protocol for publishing and editing Web resources. The protocol is based on HTTP transfer of Atom-formatted representations. The Atom format is documented in the Atom Syndication Format.

Conferencing, Fall 2007 Edition

As previously mentioned, I’ll be leaving tomorrow for Rome, as I am going to attend (and even bore the audience to death with a talk) the 6th Cocoon GetTogether.

Exactly two months from then I’ll deliver more boredom upon an unsuspecting audience at the XML 2007 Conference in Boston.

Whichever side of the pond you happen to be, you’re welcome to come see me. Bring your own choice of rotten tomatoes and other vegetables ;)

Cocoonus

cocoon_gt_2007_125x125.jpgAfter having skipped last year’s edition, I am happy to report that this year I will attend the 2007 edition of the Cocoon GetTogether. What makes this edition special is the fact that, after five years in the cold and misty lands of Belgium first and, more recently, of the Netherlands, we will meet in beautiful, sunny Rome for a change.

Another reason why this edition is special is that it’s the first time that Sourcesense is in charge of organizing the event. In other words, we will be playing hosts and matching the hospitality that was generously provided by Outerthought and Hippo before us won’t be an easy task. Still, Italian food is on another level entirely with respect to even the best Belgian and Dutch spare ribs, so this will certainly help us gain some points.

So mark October 3rd to 5th on your calendars for three days of talks, hacking, community, open source, good food and wine. We await for you!

Book Review: Producing Open Source Software

21NEKV6MS8L._AA_SL160_.jpgIf you have already read pretty much everything that there is to be read about why you’d want to start, manage, fund or participate in an Open Source project, but want to know everything about how best to do it, then Karl Fogel’s Producing Open Source Software is the book for you.

Drawing from his extensive experience with the Subversion project, Fogel provides in this book a comprehensive overview of all aspects of Open Source software development, covering technical, social, political, economical, legal, and managerial aspects.

While the book is more aimed at medium-to-large scale projects, especially those involving some kind of corporate entity, there is much in it that is applicable to most projects, excluding maybe only those little, one-man efforts that rarely become successful. But if you are the originator of one of the latter, should it suddenly attract a wide following, you’d better be prepared to face the unavoidable problems that popularity brings. This book will come in handy in this case.

Here are, in my opinion, the strong points of the book:

  • Providing a concise, yet comprehensive, overview of all aspects of Open Source development. This is really the manual of open development.
  • Demonstrating that there is much in open development that is similar to more traditional, corporate-style software development (you cannot always rely on good will and volunteers), but also much that is different, in motivation, rewards and objectives.
  • Putting the accent on the human aspect of development: mutual respect between participants is often the deciding factor in determining whether a project will thrive or fail. Since even the best of intentions sometimes are not enough to foster a peaceful, productive and collaborative environment, Producing Open Source Software contains a lot of useful, practical advice that you can follow if you want to keep developers happy and motivated.

Table of Contents

  1. Introduction
  2. Getting Started
  3. Technical Infrastructure
  4. Social and Political Infrastructure
  5. Money
  6. Communications
  7. Packaging, Releasing, and Daily Development
  8. Managing Volunteers
  9. Licenses, Copyrights, and Patents

JRuby 1.0 Released!

Charles Nutter: “We have finally released JRuby 1.0, based on the last release candidate, RC3. And what more is there to say? Not really a whole lot…It’s almost entirely RC3, with one or two minor fixes added in. But it’s really turned out to be an outstanding release, and already reports are coming in of folks trying it out en masse. We’re very happy.”

Congrats!

I HAS 1337 CODE. LOL!!1

LOLCODE: “HAI! This site provides community documentation of the emergent LOLCODE language. It is our hope that the examples can grow in a way that is both internally consistent and suggest a real, feasible computing language.”

Some people definitely have too much time on their hands ;). The examples are hilarious, anyway.

HAI
CAN HAS STDIO?
PLZ OPEN FILE "LOLCATS.TXT"?
	AWSUM THX
		VISIBLE FILE
	O NOES
		INVISIBLE "ERROR!"
KTHXBYE

On RDF as a storage medium

I think this comment that Danny Ayers left on my In defence of the RDBMS post deserves to be discussed in a post of its own:

The point about relational databases as an integration technology is well made, but I’m curious to know why you consider RDF worse as a storage medium. It has definite advantages over OO/RDBs when it comes to integration on the web (thanks to the use of URIs as keys, and the open world model).

For persistence I can’t see any way it’s worse than OO/RDBs (in fact quite a few RDF stores use RDBs for persistence under the hood). What’s more, RDF has well-defined serializations (such as RDF/XML) which means that not only is the data portable between stores, it can also be dumped in a *standard* form. (For persistence it’s perfectly reasonable to divide the data up into manageable chunks and distribute them across RDF/XML files).

If “data lives much longer than applications”, then isn’t it better to take advantage of a clear standard, rather than the quasi-standards found in SQL implementations, or for that matter the more proprietary models found in OO DBs..?

Well… yes and no.

Let me first point out the fact that I wrote about “using RDF as a persistent storage medium just because it’s more flexible than a RDBMS”. That’s what I was objecting to (and before you ask: no, it’s not a hypothetical scenario) and not the usage of RDF per se. As Gavin King wrote in the post I was responding to: “Database refactoring is possible and practical.” and you shouldn’t be using some new, unproven technology just because refactoring and maintaining SQL databases is hard.

Second, RDF data might be portable when it is serialized as XML or N3, but once it is persistently stored, it is usually in a proprietary format that can only be accessed with a proprietary API. If I have, say, a Jena model stored in an RDBMS, all I have is a essentially a single table with three columns (subject, predicate and object) where all values have been mangled so much that the number 42 becomes Lv:0:42:http://www.w3.org/2001/XMLSchema#nonNegativeInteger4 and so on.

Contrast that to an SQL database schema where, if the designer didn’t purposefully obfuscate it, it’s usually possible to reverse engineer it, sometimes just by looking at the names of tables and columns, and at foreign keys to infer relationships. There are also mature tools to move data between different databases.

You could argue that I am comparing things that are at different levels, that I should be looking at N3 serialization format as an equivalent of SQL, and that complaining about the non-portability of Jena models is equivalent to complaining about not being able to move MySQL data files to Oracle. If you did that… well, I’d concede you have a point ;)

But the fact remains that, as long as I have my data served by a reasonably well-known RDBMS and I am using a reasonably well-designed schema, I’ll be able to find a (oftentimes cheap or free) tool that allows me to make sense of that data, analyze it, transform it, plot it, report it, you name it.

Without even much thinking about it, I can fire up mysql, psql or sqlplus from the comman line and type:

select avg(salary) as a from person
  group by age having avg(salary) > 50000
  order by a desc;

I’m not really up to speed with SPARQL, but I don’t think it’s able to do that just yet. Not to mention how efficient it would be, whereas RDBMS have been optimized for 30 years in order to be blazingly fast at doing joins, sorts, groupings, projections, and the like. You know, the kind of things business people tend to ask from a data store.

So, to sum it up, RDF does really shine “when it comes to integration on the web”, especially when we are doing integration between really heterogeneous systems, without much in the way of predefined agreements between them. But I wouldn’t right now, given the maturity of tools, design a system that had an RDF storage system at its core, unless I had some compelling, specific reason for doing so.

More space for Sourcesense

Sourcesense OfficeWe finally have a new office, as we had quickly outgrown our previous one. Don’t be fooled by the apparent emptiness of it: most people today were traveling or at a customer’s. However, we do have space for growth so, if you are interested in working for a cool company on Open Source projects, get in contact.