Motorcycle Adventures and Free Software

Weblog: Archive

2005-04-01 - 2005-04-30

OpenPSA project in Rome

Posted on 2005-04-01 15:32:09 UTC to . 0 comments.

We're now spending a week in Rome to get a major OpenPSA development project started. The project is done for the Italian regional competence centers together with the local Midgard consultancy, Ware.it. This project will add much more granular access controls into OpenPSA, and will enable its usage as a more general project communication tool.

While we sit in the meetings with Alessio from Ware.it, Kerttu is touring the sights of the city. We're looking forward with Rambo to also doing the tourist thing this weekend. However, we'll have to see how much the trouble brewing in Vatican will affect our options, as countless pilgrims and mourners flock to the city.

Kerttu and Bergie on St. Peter's square

Yesterday we went through the list of new features needed for OpenPSA. These include:

  • Switching from hierarchical departments to more flexible concept of "workgroups"
  • Having different access levels to all data, including "private", "workgroup private" and "public"
  • Versioning and indexing of documents
  • Jabber Instant Messaging presence notifications
  • Discussion forum integration

To make these happen, we have defined a new object-oriented architecture for OpenPSA and will migrate all main modules to use it. You can also check out Ware.it's conceptual demo for CRC.

Castle San Angelo and the Tiber river

The new OpenPSA architecture will help also with the eventual MgdSchema migration.

Sponsored links

Microsoft Certification Exams save money using, phone card

Background of "Nemein"

Posted on 2005-04-01 17:19:44 UTC to . 0 comments.

We get asked often about the background of the name Nemein we chose for our Open Source consultancy. As Malarkey is running a thread about this, I took the time to write the explanation down:

We went with Nemein, an ancient Greek word for "to distribute, manage" for our consultancy.

The idea was to build Open Source software to enable organizations to manage their increasingly distributed and mobile, nomadistic workforce and projects.

And of course, nemein.com was free :-)

Nemein has common origin with nemesis, and is connected with the word nomad.

Here's the original company logo:

Nemein Solutions - Enabling Mobile Collaboration

Would I choose a different name if I were to start the company today?

Probably yes. The name should be more easily pronounceable ("Nemain? Nimein? Nemes?") and should start with an A. It could also reflect the business we're in in a less cryptic way.

But anyway, Nemein has already quite good recognition in Finland and sounds different from the competitors, so I guess it isn't too bad.

At least it isn't directly from the New Media Company Generator...

Creating reusable styles for Midgard

Posted on 2005-04-04 14:08:01 UTC to . 0 comments.

Midgard 1.7 alpha release is now under work, and will ship the Midgard Site Wizard with a new default way for creating websites. The Site Wizard enables developers to create layout templates that can be reused and customized when creating new websites.

When a user runs the Site Wizard to create a new website, they will be presented with a list of installed style templates together with their screenshots and descriptions. When they select a style, a child style will be created into their sitegroup to allow modifications, and the site will be set to use it.

The style template can also allow itself to be configured by using a datamanager schema. This way the template designer can let users to change the colors of the template and upload their own images into it.

Here's a quick HOWTO on making templates:

  1. Create the template as a new style named template_Stylename
  2. Add your credits to the template using parameter named midgard.admin.sitewizard/template_credits
  3. Add a short description of the template using parameter named midgard.admin.sitewizard/template_description
  4. If you want to include a screenshot with the template, add it as an attachment to the style as a 130 pixel wide JPEG with name __preview.jpg

After this your style should appear in the "Select style" dialog of the site wizard:

Style list in the Site Wizard

Updated 2005-10-24: It is also a good idea to add the Display/Shared, YES parameter for at least some Aegir compatibility.

Incompetence at German embassy in Tbilisi (updated)

Posted on 2005-04-10 17:55:51 UTC to . 0 comments.

Taya and Lasha from Nemein Georgia were coming to Helsinki to attend some Midgard training and the MgdSchema Workshop this week. As Finland has no representation in the country, they applied for schengen visas in the German embassy.

As planned, they flew to Moscow to take their connecting flight to Helsinki, but were refused to board. The reason, as it turned out was that the German embassy had made a mistake with their visas, marking them for March instead of April. So instead of getting to the Midgard events here, they must wait in transit for another day to get a flight back to Tbilisi, the Georgian capital.

I can only imagine the frustration and inconvenience of getting turned back from the plane. This trip had been in planning since early winter, and we had all waited eagerly for it. I feel really sorry for them.

Taya writes:

we had very lots of troubles here in moscow, but finaly we changed ticket to tbilisi and get another russian visa (to stay one more day here in moscow till next flight to tbilisi, very awful and terrible situation. noone wanted to help us.

When I heard of the problem I immediately checked the visa invitations we'd sent to the embassy, and they had the correct date for April (underlined):

Invitation letter to Taya

So the mistake indeed was at the German end. I wonder how the embassy will compensate Taya and Lasha for their troubles, and all the accumulated travel costs. The best course might be to sue the German foreign ministry.

It is really a shame that the Germans handled this so incompetently, especially as it comes on heels of a recent deportation of 52 Georgians that the Finnish frontier guard ran in a very degrading manner.

Update 18:41 UTC: As a last ditch effort, I called the "emergency line" of Finnish embassy in Moscow, and the helpful lady there arranged it so that Taya and Lasha can get new Finnish visas tomorrow morning. If this works out, the German mistake only delayed them for one day, and they can get to Helsinki tomorrow afternoon. We can only hope...

Update 2005-04-11 11:48 UTC: I just got a message from Taya that the Finnish embassy indeed delivered what they promised, and that they'll arrive today. Cool!

YES! we have visas and in several hours we will fly to helsinki

Nemein expands to Caucasus

Posted on 2005-04-14 14:44:46 UTC to . 0 comments.

We've just announced something interesting, an expansion to the Georgian market. This new development follows the franchising strategy I've outlined earlier.

This should produce some very interesting business opportunities, and let us focus on internationalization even more strongly than earlier. We already have a translation of the website and OpenPSA to Georgian, with Midgard CMS localizations to follow...

Welcome to the team, Taya!

Photos from Rome online

Posted on 2005-04-14 15:44:45 UTC to . 0 comments.

Torben fixed a bug in the MidCOM gallery that prevented me from uploading large sets of photos, and so I am again able to publish the more easily. To celebrate this, I've made the photos from the recent trip to Rome available online in the photo gallery.

Enjoy!

Scooters at the Pyramid in Rome

Other galleries posted were photos of Chicago and flights to Nummijärvi ice field and Turku.

Sunday Notes from MgdSchema Workshop

Posted on 2005-04-17 11:52:11 UTC to . 0 comments.

Midgard Query Builder

Jukka developed a new query builder addition to the MgdSchema system that enables Midgard developers to easily optimize the SQL queries used in their applications.

Jukka's Query Builder presentation

Currently the Query Builder is available in the Midgard C API, and the PHP mapping should be relatively easy to do. Piotras or Jukka will implement it next week.

The PHP API will provide a MidgardQueryBuilder class which works like the following:

<?php
// Instantiate the Query Builder for seeking MidgardArticles
$query = new MidgardQueryBuilder("MidgardArticle");

// Next add the SQL constraints you need

// List articles only from specific topic
$query->addConstraint("topic", "=", $topic->id);

// List only articles that have been approved since some timestamp
$query->addConstraint("approved", ">", $starting_time);

// Order the articles based on their approval time
$query->addOrder("approved", "DESC");

// Get only 20 articles for this particular view
$query->setLimit(20);

// Start from the Nth page of this article list
$query->setOffset($_REQUEST["startfrom"]);

// Execute the query returning an array of matching MidgardArticle objects
// The MidgardArticles are the full article objects with all regular methods
$articles = $query->execute();

if (!$articles)
{
    // Handle error
}

// And then display your articles
print_r($articles);
?>

Once the Query Builder is available for PHP, we can start really developing Midgard2. One of the tasks I'm eager to begin is developing a compatibility layer of the Classic Midgard API in PHP. Midgard Lite already has a 70% complete implementation of the API in pure PHP that will be easy to modify to use the Query Builder instead of DB_DataObject. And when we have the API implemented in PHP, we can start removing huge chunks of legacy code from midgard-php.

Java in Midgard

While PHP is still the web development language of choice in Midgard CMS, Java programming language support is also rising. Jukka has already implemented support for the Java Content Repository standard. JCR has been originally developed by Day Software in Switzerland as a generic content management API, the "JDBC of Content Management Systems".

Site building tutorial

JSR-170, the Java Content Repository

With JCR, the content repository is divided into workspaces that in Midgard are represented by Sitegroups. JCR spec also defines a method for copying content between workspaces that is not yet implemented in midgard-java. However, this could be interesting future way to implement staging-live.

Within the workspace the content is managed as a tree. With Midgard, there is a virtual root node, and under that are the content roots like topic and style trees. Non-hierarchical structures are stored as references.

JCR provides an API for traversing the content hierarchy, and making modifications to different properties. The modifications can be collected into a set of atom operations that can be saved together. JCR would also provide real transactions, but these are not yet supported by Midgard.

Midgard JCR support also supports XPath queries and XML import/export we already utilize in the Exorcist cross-CMS content migration tool. JCR also has an introspection system that can be used by clients for creating custom administrative interfaces that automatically support all new content types in the repository.

With the JCR Server system, the Midgard repository is also available through RMI and WebDAV.

Preparing for the sightseeing flight

The big question with JCR is whether the standard will be adopted by different CMS developers. If it catches up, the benefits will be big especially in creating cross-CMS tools. IBM has already announced support for the standard, and it has also been noted by OSCOM.

Midgard-java installation

The suggestion for making JCR installation easier would be to add it to the Midgard Core package. The Java Native Interface would then be compiled by default, and server administrator could simply enable JCR by installing a Java Virtual Machine.

Another consumer for a JVM in Midgard is the Lucene-based indexing system in MidCOM, and the installation locations and dependencies should be synchronized between the two.

Jukka will try to produce an installation HOWTO for setting up midgard-java together with the JCR Server next week.

MidCOM indexing with Lucene

MidCOM uses a Lucene-based indexer for providing a full-text search system that provides a "live" index into the site data. All MidCOM components notify the indexer every time they change the data, meaning that all searches made in the system will return current content.

With the search system, users can easily query either text from anywhere in the Midgard content structure, or using advanced syntax for searching based on specific content fields or value ranges.

Discussion after sauna

Documents are organized within the MidCOM index based on their resource identifier, which is typically the object GUID. The fields are indexed separately, but they are also combined into the content field for the regular full-text search of all data. For native MidCOM content, the topic field is also stored into the index. External indexed data like OpenPSA content should not utilize that field.

The index also contains metadata like creation, revision and indexing timestamps. These can be used for limiting searches.

Indexing is handled by PHP class midcom_services_indexer_document, and its more contextual children for handling datamanager documents and file attachments:

<?php
// Get the indexer service from MidCOM
$indexer = & $GLOBALS["midcom"]->get_service('indexer');

if ($_REQUEST["action"] == "update")
{
    // Pass your datamanager data array to be indexed
    $indexer->index($datamanager);
}
elseif ($_REQUEST["action"] == "delete")
{
    // Drop the document from the index
    $indexer->delete($article->guid());

    // Delete the actual content object
    midcom_helper_purge_object($article->guid());
}
?>

The datamanager schemas can contain some hints for the indexer on how to handle them.

MidCOM indexer is relatively easy to set up, but needs yet to be integrated into Midgard packages. The suggested directory for the index is $MIDGARD_PREFIX/share/midgard/indexer/$INDEX_NAME.

The index can be accessed in two different ways. The midcom.helper.search component provides a normal site search engine with both a simple interface and an advanced search with support for limiting the search based on content types, topic trees and modification dates. The simple search form can be easily included into the site layout using MidCOM's dynamic_load method.

The other method is by using the midcom.services.indexer API. For example, to list all images in a photo gallery taken with ISO rating 400, the code would be:

<?php
// Search for value "400" in schema field "ISO"
$query = "ISO:400";

// Search only in photo galleries
$query .= " AND __COMPONENT:net.siriux.photos";

// Search only photos taken since $date
$query .= " AND __CREATED > $date";

// Execute the query with Lucene
$result = $indexer->query($query);

// $result contains all matches as midcom_services_indexer_document objects
// sorted by relevance
print_r($result);
?>

At the moment the indexer is only available within MidCOM context, but Torben is working on adding support for external Midgard/PHP applications.

An Afternoon with Old Technology

Posted on 2005-04-23 09:27:59 UTC to . 0 comments.

After the starter engine of my Triumph Legend signed off the contract last week, I've been stranded without a working motorcycle. As most of the days it has been snowing heavily, this hasn't been much of a problem. However, I thought it would be time to do something.

As the bike dealership didn't seem much concerned about the problem, I came up with another idea. My friend Jose bought a nice fifties-style Royal Enfield motorcycle from his Indian adventure last spring, but unfortunately broke his leg shortly afterwards and so the bike was built into running state but never registered.

Jose's Enfield at the Malmi aerodrome

Yesterday afternoon I then went to Rambo's garage, and started the engine without any problems. The Engine ran fine while I rode it to an inspection station near to the Helsinki-Malmi airport, and yet again fine when riding to another inspection station after a flying lesson.

However, the inspectors had very little sympathy for the machine. They said it wouldn't pass into Finnish registry because its chassis lacked some EU stamps, even though similar bikes are being sold constantly by the Enfield Finnish importer. No final conclusions were reached, though, as some members of Bullets MCC, the Finnish Royal Enfield Club claimed to have the required certificates acquired from the Indian factory.

A bit taken back but not yet accepting defeat, I started the bike at the station. It started on the first kick, but when I took it off the centre stand, it stopped. The fifties look of the bike quickly gathered several helpers, but the bike refused to start in the half hour we spent playing with it. After a while we figure out that the batter was empty, and that in turn had fouled the spark plug. Changing the plug we were able to get the bike running in a way, and return to the airport.

Adding oil to the Antonov

At the airport cafeteria we sat down with Erkki, the pilot of the huge Soviet forties An-2 biplane freighter owner by the Lennuklubi. He had helped me back at the inspection station together with Matti from HHRA, and as my second flying lesson of the day got cancelled because of hail, we took a look at the Antonov.

A fire extinguisher pipe in the plane had to be replaced, and after that and the other startup rituals, we went for a short spin together with two Russian mechanics. As the Antonov is very expensive to operate, we only flew a very short route, but even with that I was amazed at the stability of the big plane, and even got to take a short turn at the controls.

Bergie in An-2 cockpit

After the flight we cleaned up the plane from the liters of oil that the engine had spewed out, and I returned to try again starting the Enfield. Unfortunately it again had issues with getting the ammeter to the positive side, and when it finally started, it happened with a loud bang that shot the airbox cover open and the headlight off. With this setup I limped the bike to the nearest gas station, drained the gas tank and cleaned the carburetor.

With new gas in tank the bike finally ran acceptably, as long as I kept the electricity usage as down as possible. For example, if I wanted to use both braking light and turn indicators at the same time, I had to rev up the engine or it would die. But even then, I got the bike home without incident.

Jose's Enfield after the loud bang

Now the battery is charging, and I hope that this will cure the ignition problems. Once they're fixed it is time to change the speedo broken by the shipping company, and then return to the inspection station with loads of more papers.

Going to Russian Open Source Forum

Posted on 2005-04-24 13:42:24 UTC to . 0 comments.

I'm leaving on tuesday to speak in the Open Source Forum in Moscow, Russia. The event will be held in the Radisson SAS Moscow from April 27th to 29th, and I will be back in Helsinki on 30th.

My talk, TownPortal: IT Village Project for Danish Communities is scheduled at 5pm on thursday. I will talk both about the actual TownPortal application, a limited CMS system specialized for local communities, and the realities of running such Open Source development project from overseas.

This is the first time I've held an actual presentation on the TownPortal project, although there was a BoF session in the OSCOM 3 conference held in Harvard University.

Current version of TownPortal is a stable and easy-to-use system built on top of Midgard CMS. Besides community portals, it is being used for other interesting applications. However, it still runs on the MidCOM 1.x series, and should be ported to the new MidCOM 2.x architecture.

I will try to do this in preparation for the event.

Besides the conference, I'm also looking forward to meeting Alexander, the Belarusian Midgard developer who is now living in Moscow.

Notes from the Russian Open Source Forum

Posted on 2005-04-28 14:33:28 UTC to . 0 comments.

Russian Open Source Forum was a gathering of local software companies, Open Source developers and government IT people that brought together about 1500 participants. The event's celebrities were Jon "Maddog" Hall from Linux International and Larry Wall, the Perl creator.

Prior to the event I took a walk. from the Moscow white house to the Kremlin and the "chinatown" neighborhood. The whole center of the city was preparing for the Victory Day celebrations with posters and flags everywhere.

Gala dinner on the Viking boat

The first day of the event introduced the exhibition hall set up in Radisson Moscow to the speakers, and there was an evening gala in a floating restaurant on the river.

Ideas for Midgard's future

After the gala winded down we went to a nearby cafe with Alexander Bokovoy, the Belorussian Midgard developer now working for IBM's Linux Competence Center. Alexander was very happy to hear about the new Midgard 2 developments, and maybe a bit smug about the stuff he proposed three years ago finally becoming a reality.

Alexander Bokovoy at the IBM booth

The recent advances in Midgard got us talking about the long-term vision, and obviously Alexander had a bunch of ideas:

Alexander's view of computing includes most processing moving to be grid-handled web services. The Open Source infrastructure for building grid-able services already exists in the form of the Globus toolkit. Globus enables web services to be built in C or Java, and supports things like Kerberos authentication between the grid scheduler and the service providers.

Another idea was to enable Midgard to use the new Git version control system as a distributed storage system. Currently Git is available only as a set of command-line tools but once the format stabilizes, a libgit could make this kind of work easy. Git repositories would know from which system each modification was coming from, and make Notes-like multi-direction replication possible. LWN has more information about Git.

We also talked about the problems of making Midgard bindings into different languages due to the inability to remove classes that have been declared once during runtime, and messy C APIs. Alexander had the idea of implementing the Midgard 2 API natively only for PHP and Java, and handling other languages through Web Services passed either remotely or via D-BUS. There are already D-BUS bindings to both Python and .Net (Mono), which would make creating Midgard bindings for them relatively easy.

Free Software and economy

Press Conference

Maddog's keynote dealt with how local economies benefit from Open Source. The basic nature of Free Software is that it enables local service companies and software developers to easily create IT solutions without expensive licensing costs. Currently Brazil funnels a billion dollars every year out of their economy in software license fees. With Open Source, this money could be kept in the local circulation, and the solutions could be created by the local experts.

Free software also enables software users to localize the software for their own language, character set and cultural environment. In the proprietary world, American companies have very little incentive to translate their tools to Icelandic or some of the hundreds of Indian languages, but with Open Source this is happening constantly.

Open Source also means better security and longevity of solutions. Companies go out of business and change their product lines, but Free Software stays in running order as long as somebody still has interest in it.

Other projects

Other interesting talks included Michael Sparks' talk about how BBC Research & Development is developing Open Source video and audio streaming tools like the Dirac video codec. They have archive of hundreds of thousands of hours of footage, and moving that to a digital format and making publicly available might provide a really interesting service. Their Kamaelia tools are currently built in Python using the Unix toolkit methodology where different pieces of the system can be changed easily.

Penguins on the walk

Rob Page was presenting the product strategies of the Zope Corporation. His presentation used the old Gartner OS CMS report as a source on market positioning, and mentioned that in the last year the number of Zope deployments have doubled to about 58k, probably due to Plone. Zope Corp itself is not an Open Source company. Instead, their products are distributed following a visible source model where end customers get the source code but are not allowed to redistribute it. Most of Zope Corp's revenue is generated through hosting (40%) and product licenses (30%).

The professional services of Zope Corporation are fairly similar to the ones Nemein provides for the Midgard platform: Support with possibility of Service Level Agreement, feature development including projects split between multiple clients, localized documentation, and so on.

Community building

Larry Wall's very funny talk, Building Open Source Communities dealt with building a thriving ecosystem for a Free Software project. Building a successful community is much more difficult than making a successful engineering product, and few developers are really familiar how the communities really work.

Audience during a HP presentation

One major question is about the personalities involved, who will be interested in the project, who will be excluded, etc? The what questions included the goal of the community, and what the contributors will get out of it. In the where space, the questions deal on locations and services needed for running the community. When is a question of project maturity, and of when to allow community to form. Also, when the different project services should be opened, and when, if ever, the project should be terminated. Why is also relevant. Why should contributors join up, and also, why to release the project as Open Source.

The structure of the community should not be made too complex, or too designed before the actual community forms. People are all individuals, and as they succeed and fail, enter and leave, the community should be still able to function.

In general, communities succeed if they have a good habitat, plentiful food, they're healthy, and practice plentiful cross-fertilization. Similarly, they die if one of these aspects fails. "A community needs to share a set of core values, but also allow honest differences of opinion on side issues."

After the dinner on Old Arbat

On thursday evening we had a very nice dinner with most of the speakers in a Georgian restaurant on the Old Arbat street. Especially the roasted khinkali and khatchapuri were very good.

Back