implemented xml parser
authorpavelpa <pavelpa@localhost>
Tue, 12 Jan 2010 20:32:08 +0000 (20:32 +0000)
committerpavelpa <pavelpa@localhost>
Tue, 12 Jan 2010 20:32:08 +0000 (20:32 +0000)
 - parsing Schedule

14 files changed:
src/app/app.pro
src/fosdem.pro
src/gui/gui.pro
src/gui/mainwindow.cpp
src/gui/mainwindow.h
src/gui/mainwindow.ui
src/model/eventmodel.cpp
src/model/eventmodel.h
src/schedule.en.xml [new file with mode: 0755]
src/sql/schedulexmlparser.cpp [new file with mode: 0644]
src/sql/schedulexmlparser.h [new file with mode: 0644]
src/sql/sql.pro [new file with mode: 0644]
src/sql/sqlengine.cpp [new file with mode: 0644]
src/sql/sqlengine.h [new file with mode: 0644]

index c14f1e6..a48b1f2 100644 (file)
@@ -1,13 +1,13 @@
 TEMPLATE = app
 TARGET = fosdem
 DESTDIR = ../bin
-QT += sql
+QT += sql xml
 
 # module dependencies
-LIBS += -L$$DESTDIR -lgui -lmodel
+LIBS += -L$$DESTDIR -lgui -lmodel -lsql
 INCLUDEPATH += ../gui
 DEPENDPATH += . ../gui
-TARGETDEPS += $$DESTDIR/libmodel.a $$DESTDIR/libgui.a
+TARGETDEPS += $$DESTDIR/libmodel.a $$DESTDIR/libgui.a $$DESTDIR/libsql.a
 
 SOURCES += main.cpp
 
index ce4a843..ded833f 100644 (file)
@@ -1,4 +1,4 @@
 TEMPLATE = subdirs
-SUBDIRS  = orm model gui app test
+SUBDIRS  = orm model sql gui app test
 CONFIG += ordered
 
index 976ec68..1728bc9 100644 (file)
@@ -2,13 +2,13 @@ TEMPLATE = lib
 TARGET = gui
 DESTDIR = ../bin
 CONFIG += static
-QT += sql
+QT += sql xml
 
 # module dependencies
-LIBS += -L$$DESTDIR -lmodel -orm
-INCLUDEPATH += ../orm ../model
-DEPENDPATH += . ../orm ../model
-TARGETDEPS += $$DESTDIR/liborm.a $$DESTDIR/libmodel.a
+LIBS += -L$$DESTDIR -lmodel -lorm -lsql
+INCLUDEPATH += ../orm ../model ../sql
+DEPENDPATH += . ../orm ../model ../sql
+TARGETDEPS += $$DESTDIR/liborm.a $$DESTDIR/libmodel.a $$DESTDIR/libsql.a
 
 
 # A shamelessly long list of sources, headers and forms.
index b2f091c..c8ce6f5 100644 (file)
@@ -3,19 +3,29 @@
 #include <QTreeView>
 #include <QDirModel>
 
+#include <sqlengine.h>
+#include <schedulexmlparser.h>
+
 #include <eventmodel.h>
 #include <delegate.h>
 
+
 MainWindow::MainWindow(QWidget *parent)
     : QMainWindow(parent)
 {
-    // open database connection
-    QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
-    db.setDatabaseName("fosdem-test.sqlite");
-    db.open();
-
     setupUi(this);
-    //TODO Palo: continue
+
+    // create "SQLITE" DB instance/connection
+    // opens DB connection (needed for EventModel)
+    mSqlEngine = new SqlEngine(this);
+    mSqlEngine->initialize();
+
+    mXmlParser = new ScheduleXmlParser(this);
+    connect(mXmlParser, SIGNAL(progressStatus(int)), this, SLOT(showParsingProgress(int)));
+    statusBar()->showMessage(tr("Ready"));
+
+    connect(actionImportSchedule, SIGNAL(triggered()), SLOT(importSchedule()));
+
     treeView->setHeaderHidden(true);
     treeView->setRootIsDecorated(false);
     treeView->setIndentation(0);
@@ -24,3 +34,38 @@ MainWindow::MainWindow(QWidget *parent)
     treeView->setItemDelegate(new Delegate(treeView));
 }
 
+MainWindow::~MainWindow()
+{
+    if(mSqlEngine)
+    {
+        delete mSqlEngine;
+        mSqlEngine = NULL;
+    }
+    if(mXmlParser)
+    {
+        delete mXmlParser;
+        mXmlParser = NULL;
+    }
+}
+
+void MainWindow::importSchedule()
+{
+    QFile file("../schedule.en.xml");
+    if (!file.open(QIODevice::ReadOnly | QIODevice::Text))
+    {
+        qDebug() << "can't open " << file.fileName();
+        return;
+    }
+
+    QByteArray data = file.readAll();
+    mXmlParser->parseData(data,mSqlEngine);
+    static_cast<EventModel*>(treeView->model())->reload();
+    treeView->reset();
+}
+
+void MainWindow::showParsingProgress(int aStatus)
+{
+    QString msg = QString("Parsing completed: %1\%").arg(aStatus);
+    statusBar()->showMessage(msg,1000);
+}
+
index 1828fd3..7ab90d9 100644 (file)
@@ -5,12 +5,21 @@
 
 #include <ui_mainwindow.h>
 
+class SqlEngine;
+class ScheduleXmlParser;
+
 class MainWindow : public QMainWindow, private Ui::MainWindow
 {
     Q_OBJECT
-
 public:
     MainWindow(QWidget *parent = 0);
+    ~MainWindow();
+private slots:
+    void importSchedule();
+    void showParsingProgress(int aStatus);
+private:
+    SqlEngine *mSqlEngine;
+    ScheduleXmlParser *mXmlParser;
 };
 
 #endif // MAINWINDOW_H
index 5447986..412bd10 100644 (file)
      <x>0</x>
      <y>0</y>
      <width>856</width>
-     <height>22</height>
+     <height>26</height>
     </rect>
    </property>
+   <widget class="QMenu" name="menuFile" >
+    <property name="title" >
+     <string>File</string>
+    </property>
+    <addaction name="actionImportSchedule" />
+   </widget>
+   <addaction name="menuFile" />
   </widget>
   <widget class="QStatusBar" name="statusbar" />
+  <action name="actionImportSchedule" >
+   <property name="text" >
+    <string>Import Schedule</string>
+   </property>
+  </action>
  </widget>
  <customwidgets>
   <customwidget>
index 768791b..425079f 100644 (file)
@@ -1,7 +1,7 @@
 #include "eventmodel.h"
 
 EventModel::EventModel() :
-        mEvents(Event::getByDate(QDate(2009, 2, 7), 1))
+    mEvents(Event::getByDate(QDate(2009, 2, 7), 1))
 {
     createTimeGroups();
 }
@@ -116,3 +116,11 @@ int EventModel::rowCount (const QModelIndex & parent) const
 
     return 0;
 }
+
+void EventModel::reload()
+{
+    mEvents.clear();
+    mEvents=Event::getByDate(QDate(2009, 2, 7), 1);
+    createTimeGroups();
+}
+
index 9c06db2..10b817a 100644 (file)
@@ -14,6 +14,7 @@ public:
     QModelIndex parent ( const QModelIndex & index ) const;
     int columnCount ( const QModelIndex & parent = QModelIndex() ) const;
     int rowCount ( const QModelIndex & parent = QModelIndex() ) const;
+    void reload(); // reloads Events from the DB
 
 private:
     struct Group
diff --git a/src/schedule.en.xml b/src/schedule.en.xml
new file mode 100755 (executable)
index 0000000..6f2b593
--- /dev/null
@@ -0,0 +1,5891 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<schedule>
+ <conference>
+  <title>FOSDEM 2009</title>
+  <subtitle>Free and Opensource Software Developers European Meeting</subtitle>
+  <venue>ULB (Campus Solbosch)</venue>
+  <city>Brussels</city>
+  <start>2009-02-07</start>
+  <end>2009-02-08</end>
+  <days>2</days>
+  <day_change>08:00</day_change>
+  <timeslot_duration>00:15</timeslot_duration>
+ </conference>
+ <day date="2009-02-07" index="1">
+  <room name="Janson">
+   <event id="528">
+    <start>10:00</start>
+    <duration>00:30</duration>
+    <room>Janson</room>
+    <tag>welcome</tag>
+    <title>Welcome</title>
+    <subtitle></subtitle>
+    <track>Keynotes</track>
+    <type>Podium</type>
+    <language>English</language>
+    <abstract>FOSDEM Opening Talk</abstract>
+    <description>The FOSDEM Opening Talk, including the infamous FOSDEM dance.</description>
+    <persons>
+     <person id="46">FOSDEM Staff</person>
+    </persons>
+    <links>
+    </links>
+   </event>
+   <event id="501">
+    <start>10:30</start>
+    <duration>01:00</duration>
+    <room>Janson</room>
+    <tag>future</tag>
+    <title>Free. Open. Future?</title>
+    <subtitle></subtitle>
+    <track>Keynotes</track>
+    <type>Podium</type>
+    <language>English</language>
+    <abstract>Freedom, openness and participation have become a pervasive part of digital \r
+life. 250 million people use Firefox. Wikipedia reaches people in 260 languages. \r
+Whole countries have Linux in their schools. Flickr hosts millions of openly \r
+licenses photos. Apache underpins the Internet. We have moved mountains.</abstract>
+    <description>At the same time, the terrain has shifted. Our digital world has moved into the \r
+cloud. And, our window into this world is just as often unhackable phones in our \r
+pocket as it is flexible computers on our desktop. Hundreds of millions of \r
+people take being digital for granted, and rarely stop to think what it means. \r
+The world where free and open source software were born is not the same as the \r
+world they have helped to build.\r
+\r
+It's time to ask: what do freedom, openness and participation look like 10 years \r
+from now? How do we promote these values into the future? Building the open web \r
+and hackability into the world of mobile is part of the answer. Promoting privacy, \r
+portability and user control in the cloud are also critical. But what else? Mark \r
+Surman will reflect on these questions and chat with the FOSDEM crowd.</description>
+    <persons>
+     <person id="473">Mark Surman</person>
+    </persons>
+    <links>
+    </links>
+   </event>
+   <event id="500">
+    <start>11:30</start>
+    <duration>01:00</duration>
+    <room>Janson</room>
+    <tag>debian</tag>
+    <title>Debian</title>
+    <subtitle></subtitle>
+    <track>Keynotes</track>
+    <type>Podium</type>
+    <language>English</language>
+    <abstract>Observations about the role that Debian plays in the world of Free\r
+Software, and some lessons learned that may help other Free Software\r
+projects.</abstract>
+    <description></description>
+    <persons>
+     <person id="472">Bdale Garbee</person>
+    </persons>
+    <links>
+    </links>
+   </event>
+   <event id="510">
+    <start>14:00</start>
+    <duration>01:00</duration>
+    <room>Janson</room>
+    <tag>opensuse</tag>
+    <title>openSUSE</title>
+    <subtitle></subtitle>
+    <track>Distributions</track>
+    <type>Podium</type>
+    <language>English</language>
+    <abstract>Since this is a distro talk, I will be covering the openSUSE Distro,\r
+the openSUSE Build Service, and how to become involved in the project\r
+and/or use the openSUSE Build Service to create packages for open\r
+source projects for multiple distributions.</abstract>
+    <description></description>
+    <persons>
+     <person id="487">Joe Brockmeier</person>
+    </persons>
+    <links>
+    </links>
+   </event>
+   <event id="498">
+    <start>15:00</start>
+    <duration>01:00</duration>
+    <room>Janson</room>
+    <tag>fedora</tag>
+    <title>The Fedora Project</title>
+    <subtitle></subtitle>
+    <track>Distributions</track>
+    <type>Podium</type>
+    <language>English</language>
+    <abstract>The talk will take a look at the current roadmap for the Fedora Project, \r
+from a technical and community-building point of view.  The discussion \r
+will focus on the recently-released Fedora 10 as well as the \r
+in-development Fedora 11, as well as other Fedora projects such as \r
+infrastructure, websites, translation, etc.</abstract>
+    <description></description>
+    <persons>
+     <person id="165">Max Spevack</person>
+    </persons>
+    <links>
+     <link href="http://fedoraproject.org/">Official website</link>
+    </links>
+   </event>
+   <event id="644">
+    <start>16:00</start>
+    <duration>01:00</duration>
+    <room>Janson</room>
+    <tag></tag>
+    <title>10 cool things about Exherbo</title>
+    <subtitle></subtitle>
+    <track>Distributions</track>
+    <type>Podium</type>
+    <language>English</language>
+    <abstract></abstract>
+    <description>This talk will focus on 10 important features that makes it easier for users\r
+and developers alike to work with Exherbo. While the talk will focus on the\r
+current state of Exherbo and the short-term future the ideas being presented\r
+should be equally interesting for other distribution developers and users.</description>
+    <persons>
+     <person id="77">Bryan Østergaard</person>
+    </persons>
+    <links>
+     <link href="http://www.exherbo.org/">Official website</link>
+    </links>
+   </event>
+  </room>
+  <room name="Chavanne">
+   <event id="497">
+    <start>14:00</start>
+    <duration>01:00</duration>
+    <room>Chavanne</room>
+    <tag>openamq</tag>
+    <title>OpenAMQ</title>
+    <subtitle></subtitle>
+    <track>Development and Languages</track>
+    <type>Podium</type>
+    <language>English</language>
+    <abstract>I'll speak about a new messaging protocol called AMQP, and the iMatix\r
+projects that implement this protocol.</abstract>
+    <description>AMQP makes it possible to make cheap, fast distributed applications, for pubsub, cloud computing,\r
+telecoms, etc..  I'll explain our OpenAMQ implementation of AMQP, and\r
+also our web-based RESTful messaging project, Zyre, which makes AMQP\r
+work over plain HTTP.  This talk is aimed at FOSS developers with\r
+interest in new protocols.  AMQP is a good example of how large\r
+businesses are promoting and investing in FOSS today.</description>
+    <persons>
+     <person id="41">Pieter Hintjens</person>
+    </persons>
+    <links>
+    </links>
+   </event>
+   <event id="499">
+    <start>15:00</start>
+    <duration>01:00</duration>
+    <room>Chavanne</room>
+    <tag>reverse_engineering</tag>
+    <title>Reverse Engineering of Proprietary Protocols, Tools and Techniques</title>
+    <subtitle></subtitle>
+    <track>Development and Languages</track>
+    <type>Podium</type>
+    <language>English</language>
+    <abstract>This talk is about reverse engineering a proprietary network protocol,\r
+and then creating my own implementation. The talk will cover the tools\r
+used to take binary data apart, capture the data, and techniques I use\r
+for decoding unknown formats. The protocol covered is the RTMP protocol\r
+used by Adobe flash, and this new implementation is part of the Gnash\r
+project.</abstract>
+    <description></description>
+    <persons>
+     <person id="471">Rob Savoye</person>
+    </persons>
+    <links>
+     <link href="http://www.gnu.org/software/gnash/">Gnash Official Website</link>
+    </links>
+   </event>
+   <event id="505">
+    <start>16:00</start>
+    <duration>01:00</duration>
+    <room>Chavanne</room>
+    <tag>scala</tag>
+    <title>Scala - A Scalable Language</title>
+    <subtitle></subtitle>
+    <track>Development and Languages</track>
+    <type>Podium</type>
+    <language>English</language>
+    <abstract>In this talk I'll describe the design principles of the Scala\r
+programming language, which has scalability as its primary design\r
+objective.</abstract>
+    <description>Today's software landscape resembles increasingly a tower of Babel:\r
+Systems are built using many different languages, combining\r
+server-side and client-side languages, scripting and systems\r
+programming languages, general and domain specific languages, all\r
+glued together with a hefty amount of XML.  The advantage of this\r
+approach is that each individual language can be tailored to a\r
+specific application domain.  Its disadvantage is that the necessary\r
+amount of cross-language glue can make applications cumbersome to\r
+write, deploy, and maintain.\r
+\r
+An alternative is offered by scalable languages, which can be used for\r
+many different applications, ranging from small scripts to very large\r
+systems. An important aspect of a scalable language is that it itself\r
+is extensible and malleable. It should be possible to define very\r
+high-level libraries in it, which act in effect as specialized domain\r
+specific languages.  The advantages of this approach is that it leads\r
+to more regular system designs, gives better static checking, makes\r
+applications easier to deploy, and increases their reliability.\r
+\r
+In this talk I'll describe the design principles of the Scala\r
+programming language, which has scalability as its primary design\r
+objective.  Scala combines lightweight syntax with strong static\r
+checking on a Java-compatible platform. It encourages the embedding of\r
+domain-specific languages as high-level libraries. I discuss how Scala\r
+affects systems design and discuss its suitability for large scale\r
+industrial deployment.</description>
+    <persons>
+     <person id="477">Martin Odersky</person>
+    </persons>
+    <links>
+    </links>
+   </event>
+  </room>
+  <room name="Ferrer">
+   <event id="733">
+    <start>13:00</start>
+    <duration>01:00</duration>
+    <room>Ferrer</room>
+    <tag>osi</tag>
+    <title>OSI: Recent Activities and Future Directions</title>
+    <subtitle></subtitle>
+    <track>Open Source Initiative</track>
+    <type>Podium</type>
+    <language>English</language>
+    <abstract>The Board of Directors of the Open Source Initiative (OSI) will cover recent activities of the organization in this presentation, talk about the adoption of open source throughout the whole world and discuss the future direction of the OSI, such as the introduction of a membership program.</abstract>
+    <description>The Open Source Initiative (OSI) is the steward of the Open Source Definition (OSD) and is the community-recognized body for reviewing and approving licenses as OSD-conformant.\r
+\r
+The OSI is actively involved in Open Source community-building and education. OSI Board members frequently travel the world to attend Open Source conferences and events, meet with open source developers and users, and to discuss with executives from the public and private sectors about how Open Source technologies, licenses, and models of development can provide economic and strategic advantages.</description>
+    <persons>
+     <person id="625">Michael Tiemann</person>
+    </persons>
+    <links>
+    </links>
+   </event>
+   <event id="573">
+    <start>14:15</start>
+    <duration>00:15</duration>
+    <room>Ferrer</room>
+    <tag>the_linux_defenders</tag>
+    <title>The Linux Defenders: Stop the Trolls, Protect Linux, Further Innovation</title>
+    <subtitle></subtitle>
+    <track>Lightning Talks</track>
+    <type>Lightning-Talk</type>
+    <language>English</language>
+    <abstract>Open Invention Network (OIN), a collaborative enterprise that enables open source innovation and an increasingly vibrant ecosystem around Linux, has unveiled the Linux Defenders program, which is designed to make prior art more readily accessible to patent and trademark office examiners, increase the quality of granted patents and reduce the number of poor quality patents.  \r
+\r
\r
+\r
+Keith Bergelt will talk about how the open source community is leading the charge in market-based patent reform. Its Linux Defenders program offers the Linux and broader open source community a unique opportunity to harness its collaborative passion, intelligence, and ingenuity to ensure Linux’s natural migration to mobile devices and computing. He will also detail how this landmark program will benefit open source innovation by significantly reducing the number of poor quality patents that might otherwise be used by patent trolls or strategics whose behaviors and business models are antithetical to true innovation and are thus threatened by Linux.\r
+\r
\r
+\r
+The Linux Defenders website is located at http://www.linuxdefenders.org.</abstract>
+    <description>Co-sponsored by the Software Freedom Law Center and the Linux Foundation, Linux Defenders is a first-of-its-kind program which aims to reduce future intellectual property concerns about meritless patents for the Linux and open source community.  The program is designed to accomplish this by soliciting prior art to enable the rejection of poor quality patent applications; soliciting prior art to enable the invalidation of poor quality issued patents; and soliciting high quality inventions that can be prepared as patent applications or defensive publications.</description>
+    <persons>
+     <person id="527">Keith Bergelt</person>
+    </persons>
+    <links>
+     <link href="http://www.linuxdefenders.org/">http://www.linuxdefenders.org/</link>
+    </links>
+   </event>
+   <event id="574">
+    <start>14:30</start>
+    <duration>00:15</duration>
+    <room>Ferrer</room>
+    <tag>small_sister</tag>
+    <title>SmallMail, or how to keep your email private in an era of Data Retention</title>
+    <subtitle></subtitle>
+    <track>Lightning Talks</track>
+    <type>Lightning-Talk</type>
+    <language>English</language>
+    <abstract>When the European data retention directive becomes law in all member nations governments will store who's e-mailing whom and who's phoning whom. This is bad news for citizens and has a devastating effect journalists and bloggers who need to protect their sources, especially whistleblowers. \r
+\r
+The Small Sister Project created a tool, SmallMail. It adds anonimity to e-mail even when data retention is in effect. So SmallMail delivers e-mail privacy as it was meant to be: you decide what happens with your data.  When needed and allowed people can deliver a message totally anonymous.\r
+\r
+The talk highlights the tools and then deals with the technical details of getting from A to B. Privacy and anonymity are complicated, but the tool is not. We build on the strong foundation laid by the Tor Project. The SmallMail engine is technically interesting, but quite easy to understand. In 15 minutes you can learn how simplicity and free software solve the problems posed by complex systems.</abstract>
+    <description>The Small Sister Project tries to create a digital environment for all users to have a privacy-friendly system where personal data is properly secured\r
+\r
+So we try to create:\r
+    * A toolkit that is very simple to install and acts like a flushot for a computer to add privacy/security\r
+    * Sufficient information for people to empower themselves to secure systems and are aware of privacy-issues\r
+    * Software that is the missing glue for what already exists and helps us reach our goals</description>
+    <persons>
+     <person id="528">Peter Roozemaal</person>
+    </persons>
+    <links>
+     <link href="http://www,smallsister.org">http://www,smallsister.org</link>
+    </links>
+   </event>
+   <event id="575">
+    <start>15:00</start>
+    <duration>00:15</duration>
+    <room>Ferrer</room>
+    <tag>flossmetrics</tag>
+    <title>FLOSSMetrics: providing data about FLOSS development</title>
+    <subtitle></subtitle>
+    <track>Lightning Talks</track>
+    <type>Lightning-Talk</type>
+    <language>English</language>
+    <abstract>The talk will show the main results of the FLOSSMetrics project. In particular, it will show how to obtain data about the history of software development of more than 2,000 FLOSS projects, which kind of data it is and how it can  be used, and some results of using it in a research environment.</abstract>
+    <description>FLOSSMetrics is collecting data from the CVS/SVN repos, mailing lists and issue tracking systems of several thousands of FOSS projects, and collecting all of it into a database that is offerered to researchers and others for data mining. See http://melquiades.flossmetrics.org for the data currently been offered. The project will end in August 2009, and more data and more projects are expected in the meantime.</description>
+    <persons>
+     <person id="214">Jesus M. Gonzalez Barahona</person>
+    </persons>
+    <links>
+     <link href="http://flossmetrics.org">http://flossmetrics.org</link>
+    </links>
+   </event>
+   <event id="577">
+    <start>15:15</start>
+    <duration>00:15</duration>
+    <room>Ferrer</room>
+    <tag>bazaar</tag>
+    <title>Why you should use Bazaar for maintaining your OSS project</title>
+    <subtitle></subtitle>
+    <track>Lightning Talks</track>
+    <type>Lightning-Talk</type>
+    <language>English</language>
+    <abstract>This talk will give a quick introduction to Bazaar, the friendly distributed version control system. It will highlight the benefits of using distributed version control over a centralized approach and what features make Bazaar a perfect match for this kind of collaboration.</abstract>
+    <description>Bazaar is a distributed version control system that Just Works. While many similar systems require you to adapt to their model of working, Bazaar adapts to the workflows you want to use, and it takes only five minutes to try it out. People have used it to version pretty much anything: single-file projects, your /etc directory and even the thousands of files and revisions in the source code for Launchpad, MySQL and Mailman.</description>
+    <persons>
+     <person id="58">Lenz Grimmer</person>
+    </persons>
+    <links>
+     <link href="http://bazaar-vcs.org">http://bazaar-vcs.org</link>
+    </links>
+   </event>
+   <event id="578">
+    <start>15:30</start>
+    <duration>00:15</duration>
+    <room>Ferrer</room>
+    <tag>caiman_opensolaris_distribution_constructor</tag>
+    <title>Building custom OpenSolaris distributions with the  distro constuctor</title>
+    <subtitle></subtitle>
+    <track>Lightning Talks</track>
+    <type>Lightning-Talk</type>
+    <language>English</language>
+    <abstract>The presentation will give an overview about building your own customized OpenSolaris distribution. The presentation will discuss the new distro constructor being released with OpenSolaris 11.2008 and demonstrate on how to use it.</abstract>
+    <description>The Distribution Constructor project is building a set of GUI and command-line tools allowing users to build an install image from a package repository. The distribution constructor tools accept input from the user and process a set of repository packages into one or more media images which can be utilized to install an OpenSolaris distribution.\r
+\r
+The Distribution Constructor package is available in the pkg.opensolaris.org repository as of build 99, its name is SUNWdistro-const. Some basic documentation is available. The OpenSolaris 2008.11 distribution is built using this tool beginning with the build 98 ISO images.\r
+\r
+A future phase of the project will add the ability to generate an installable distribution using an existing installed system as its input, rather than a set of packages in a repository. This would be either an enhancement to, or replacement for, the existing Flash Installation functionality.\r
+Key Requirements and Functionality (2008.11 Release)\r
+\r
+    * A command-line interface to run the construction process\r
+    * A manifest file format consumed by the constructor\r
+    * Modifications to the Target Instantiation module built in Dwarf Caiman and Slim Install to create the file system structure needed for building thedistribution\r
+    * Modifications to the Transfer module to support installing a set of IPS packages\r
+    * A plug-in interface that the user or other projects can use to perform their image-specific customizations\r
+    * Checkpointing interfaces which allow a build to be debugged, and restarted\r
+    * A module for constructing a boot archive usable on installable media\r
+    * Support for localization of the image produced\r
+    * An installable package containing the distro constructor</description>
+    <persons>
+     <person id="462">Stefan Schneider</person>
+    </persons>
+    <links>
+     <link href="http://opensolaris.org/os/project/caiman/Constructor/">http://opensolaris.org/os/project/caiman/Constructor/</link>
+    </links>
+   </event>
+   <event id="579">
+    <start>16:00</start>
+    <duration>00:15</duration>
+    <room>Ferrer</room>
+    <tag>apache_felix</tag>
+    <title>Dynamic deployment with Apache Felix</title>
+    <subtitle></subtitle>
+    <track>Lightning Talks</track>
+    <type>Lightning-Talk</type>
+    <language>English</language>
+    <abstract>The OSGi framework allows you to install, update and delete components without restarting the framework. Together with the deployment admin specification and custom resource processors, you can dynamically deploy both OSGi and non-OSGi applications. The talk will demonstrate how to update OSGi bundles and other resources.</abstract>
+    <description>Apache Felix is a community effort to implement the OSGi R4 Service Platform, which includes the OSGi framework and standard services, as well as providing and supporting other interesting OSGi-related technologies. The ultimate goal is to provide a completely compliant implementation of the OSGi framework and standard services and to support a community around this technology.</description>
+    <persons>
+     <person id="531">Marcel Offermans</person>
+    </persons>
+    <links>
+     <link href="http://felix.apache.org/">http://felix.apache.org/</link>
+    </links>
+   </event>
+   <event id="580">
+    <start>16:15</start>
+    <duration>00:15</duration>
+    <room>Ferrer</room>
+    <tag>opsview</tag>
+    <title>Opsview: Network monitoring made easy</title>
+    <subtitle></subtitle>
+    <track>Lightning Talks</track>
+    <type>Lightning-Talk</type>
+    <language>English</language>
+    <abstract>The past, present and future of the project. This talk will coincide with Opsview v3.0 release scheduled for early February 2009.</abstract>
+    <description>Opsview is network monitoring software that significantly extends the functionality of Nagios and integrates tools such as MRTG, NMIS, RANCID and Net-SNMP. Opsview is developed using Catalyst web framework and MySQL database.</description>
+    <persons>
+     <person id="532">James Peel</person>
+    </persons>
+    <links>
+     <link href="http://www.opsview.org">http://www.opsview.org</link>
+    </links>
+   </event>
+   <event id="581">
+    <start>16:30</start>
+    <duration>00:15</duration>
+    <room>Ferrer</room>
+    <tag>marionnet</tag>
+    <title>Marionnet: networking for dummies</title>
+    <subtitle></subtitle>
+    <track>Lightning Talks</track>
+    <type>Lightning-Talk</type>
+    <language>English</language>
+    <abstract>Overview of Marionnet, advantages towards different solutions, how it proved to be a necessary tool, how teaching networking has become less painful.</abstract>
+    <description>Marionnet is a virtual network laboratory: it allows users to define, configure and run complex computer networks without any need for physical setup. Only a single, possibly even non-networked GNU/Linux host machine is required to simulate a whole Ethernet network complete with computers, routers, hubs, switches, cables, and more.\r
+Support is also provided for integrating the virtual network with the physical host network.\r
+\r
+As Marionnet is meant to be used also by inexperienced people, it features a very intuitive graphical user interface. Marionnet is written in the mostly functional language OCaml and depends on User Mode Linux and VDE for the simulation part.</description>
+    <persons>
+     <person id="533">Marco Stronati</person>
+    </persons>
+    <links>
+     <link href="http://www.marionnet.org/">http://www.marionnet.org/</link>
+    </links>
+   </event>
+   <event id="582">
+    <start>17:00</start>
+    <duration>00:15</duration>
+    <room>Ferrer</room>
+    <tag>lxde</tag>
+    <title>LXDE - Lighter, Faster, Less Ressource Hungry</title>
+    <subtitle></subtitle>
+    <track>Lightning Talks</track>
+    <type>Lightning-Talk</type>
+    <language>English</language>
+    <abstract>The talk will present\r
+- the background of LXDE\r
+- its developer team and community in Taiwan, Asia and worldwide\r
+- show the different LXDE components\r
+- offer insights into design principles and ideas of the developer team for gtk+\r
+- show an example how to make a package of LXDE\r
+- show how to translate a LXDE component\r
+- show ways to join the LXDE team and community</abstract>
+    <description>"Lightweight X11 Desktop Environment", is an extremely faster,\r
+performing and energy saving desktop environment started by Taiwanese\r
+hacker Hong Jen Yee aka PCMAN in 2005. Today it is maintained by an international\r
+community of developers. It comes with a beautiful interface,\r
+multi-language support, standard keyboard short cuts and additional\r
+features like tabbed file browsing. LXDE uses less CPU and less RAM.\r
+It is especially designed for computers with low hardware\r
+specifications like netbooks, mobile internet devices (MIDs) or older\r
+computers. LXDE can be installed with distributions like Ubuntu or\r
+Debian. Applications running on these systems will run with LXDE. The\r
+source code of LXDE is licensed partly under the terms of the General\r
+Public License and partly under the LGPL. LXDE has recently been\r
+included as a standard desktop in Fedora and Mandriva and will also be\r
+offered in the upcoming Debian release.</description>
+    <persons>
+     <person id="534">Mario Behling</person>
+    </persons>
+    <links>
+     <link href="http://lxde.org">http://lxde.org</link>
+    </links>
+   </event>
+   <event id="583">
+    <start>17:15</start>
+    <duration>00:15</duration>
+    <room>Ferrer</room>
+    <tag>camelot</tag>
+    <title>Camelot : building desktop apps at warp speed</title>
+    <subtitle></subtitle>
+    <track>Lightning Talks</track>
+    <type>Lightning-Talk</type>
+    <language>English</language>
+    <abstract>Learn how to create a desktop application from scratch in 15 minutes, the same way you are used to create Django applications.  We will design a database model, and create the database and the graphical interface from it.  Then we will demonstrate how to adapt this application to suit your particular needs.</abstract>
+    <description>A python QT GUI framework on top of Elixir / Sqlalchemy inspired by the Django admin interface. Start building desktop applications at warp speed, simply by adding some additional information to you Elixir model.</description>
+    <persons>
+     <person id="535">Erik Janssens</person>
+    </persons>
+    <links>
+     <link href="http://www.conceptive.be/projects/camelot/">http://www.conceptive.be/projects/camelot/</link>
+    </links>
+   </event>
+   <event id="584">
+    <start>17:30</start>
+    <duration>00:15</duration>
+    <room>Ferrer</room>
+    <tag>hackable1</tag>
+    <title>Quick start into mobile development for desktop developers</title>
+    <subtitle></subtitle>
+    <track>Lightning Talks</track>
+    <type>Lightning-Talk</type>
+    <language>English</language>
+    <abstract>There is still a void for open source developers having their own platform for mobile development. The current choice is between Google, Nokia and Intel. Hackable1 intends to close this gap and offers desktop developers a quick start in minutes. No longer "fighting" with scratchbox or Openembedded: mobile development like on your desktop and with similar speed. If you have been developing for the desktop you will feel at home in no time. Hackable1 is based on Debian thus brings the power of 1500 DDs with it. It implements the GNOME Mobile stack and comes with a basic suite of phone applications: a dialer, a SMS and contacts application.\r
+\r
+Mobile devices are becoming ubiquitous and hackable1 is intended to bridge from desktop development to embedded development. It is an area where Open Source has a chance to be from the start ahead of the closed source competitors. We just need to do it!</abstract>
+    <description>hackable:1 is a Debian based community distribution for hackable devices implementing the GNOME Mobile stack. Currently it runs on the Neo Freerunner from Openmoko but other devices will be supported soon too.\r
+\r
+As I have been developing myself on and for mobile platforms for several years now the main goal was to bring mobile development to all open source developers in minutes: mobile devices are the next "revolution" in computing and we should not leave the field to Google and Co.\r
+\r
+Hackable:1 comes with the full development environment, can be installed in minutes and provides an environment like on your desktop and allows for similar speeds.\r
+\r
+Bearstech (the french distributor of the openmoko phones) supports the development but a key point is community involvement - no decisions behind closed doors, everything is done in public on IRC and mailing lists.</description>
+    <persons>
+     <person id="449">Marcus Bauer</person>
+    </persons>
+    <links>
+     <link href="http://www.hackable1.org/">http://www.hackable1.org/</link>
+    </links>
+   </event>
+   <event id="585">
+    <start>18:00</start>
+    <duration>00:15</duration>
+    <room>Ferrer</room>
+    <tag>bug</tag>
+    <title>An Introduction to BUG</title>
+    <subtitle></subtitle>
+    <track>Lightning Talks</track>
+    <type>Lightning-Talk</type>
+    <language>English</language>
+    <abstract>This lightning talk will cover the basics of the BUG platform and show a brief working demo.  We will show aspects of the Linux OS running and focus on the OSGi service layer and how Java applications can easily be written to work with custom hardware devices.</abstract>
+    <description>BUG is an open source hardware and software gadget creation platform.  There are no proprietary or closed software components running on the BUG CPU.  New devices can be created by snapping a variety of hardware modules (camera, motion sensor, GPS, LCD Touchscreen, WiFi, 3g, etc.) onto a small Linux base computer to make things like GPS enabled motion detectors, alarms, crowdsourced input devices, and wireless weather stations.  The hardware schematics for the device are GPL and the computer runs Linux, FOSS Java, and OSGi to enable a dynamic service runtime.  \r
+An SDK is available that's based on Eclipse and we have a application collaboration website based on Ruby on Rails.</description>
+    <persons>
+     <person id="537">Ken Gilmer</person>
+    </persons>
+    <links>
+     <link href="http://www.buglabs.net">http://www.buglabs.net</link>
+    </links>
+   </event>
+   <event id="586">
+    <start>18:15</start>
+    <duration>00:15</duration>
+    <room>Ferrer</room>
+    <tag>usbpicprog</tag>
+    <title>Introducing usbpicprog, an affordable usb programmer for PIC-chips.</title>
+    <subtitle></subtitle>
+    <track>Lightning Talks</track>
+    <type>Lightning-Talk</type>
+    <language>English</language>
+    <abstract>We'll introduce for the first time to the public usbpicprog, a brand new programmer for the PIC microcontrollers by Microchip. The different stages of development, a basic overview of how it works and comparison to alternatives will be presented.</abstract>
+    <description>usbpicprog, a brand new programmer for the PIC microcontrollers by Microchip. Software works on multiple OSses using wxWidgets. It's the first cheap, small, usb-supported programmer, with active development.</description>
+    <persons>
+     <person id="540">Frans Schreuder</person>
+    </persons>
+    <links>
+     <link href="http://www.usbpicprog.org">http://www.usbpicprog.org</link>
+    </links>
+   </event>
+   <event id="587">
+    <start>18:30</start>
+    <duration>00:15</duration>
+    <room>Ferrer</room>
+    <tag>gemvid</tag>
+    <title>Animals monitoring with Gemvid</title>
+    <subtitle></subtitle>
+    <track>Lightning Talks</track>
+    <type>Lightning-Talk</type>
+    <language>English</language>
+    <abstract>In this talk, we will first introduce Gemvid, a system that allows the monitoring of animals in their own environment for an extended period of time. Then, we'll show how we demonstrated the sensitivity, reproducibility and stability of the system. Finally, we'll highlight some issues and interesting points for the future of Gemvid.</abstract>
+    <description>Gemvid is a monitoring system that quantifies overall free movements of rodents without any markers, using a commercially available CCTV and a motion detection software developed on a GNU/Linux-operating computer. The application is based on software modules that allow the system to be used in a high-throughput workflow.</description>
+    <persons>
+     <person id="538">Jean-Etienne Poirrier</person>
+    </persons>
+    <links>
+     <link href="http://www.bioinformatics.org/gemvid/">http://www.bioinformatics.org/gemvid/</link>
+    </links>
+   </event>
+  </room>
+  <room name="Lameere">
+   <event id="735">
+    <start>13:00</start>
+    <duration>01:00</duration>
+    <room>Lameere</room>
+    <tag>emb_openwrt_uci</tag>
+    <title>OpenWrt: UCI and beyond</title>
+    <subtitle></subtitle>
+    <track>Embedded</track>
+    <type>Podium</type>
+    <language>English</language>
+    <abstract>Most embedded routers and similar devices have traditionally limited themselves to a very static system, typically providing the web interface as the only means of doing any configuration.\r
+\r
+OpenWrt intends to solve this problem in a generic way by providing a structured, extensible and modular configuration system, which does not limit itself to being the backend of a web interface.</abstract>
+    <description></description>
+    <persons>
+     <person id="627">John Crispin</person>
+     <person id="626">Felix Fietkau</person>
+    </persons>
+    <links>
+    </links>
+   </event>
+   <event id="736">
+    <start>14:00</start>
+    <duration>01:00</duration>
+    <room>Lameere</room>
+    <tag>emb_wt_toolkit</tag>
+    <title>Wt, a C++ web toolkit, for rich web interfaces to embedded systems</title>
+    <subtitle></subtitle>
+    <track>Embedded</track>
+    <type>Podium</type>
+    <language>English</language>
+    <abstract>Pieter presents [[http://www.webtoolkit.eu/wt Wt], an open source web toolkit that brings state-of-the-art cross-browser, AJAX-enabled web application development to C++ programmers who have little or no experience in web technologies.</abstract>
+    <description>A web interface to an embedded system provides many benefits, such as remote control without software installation, and comfortable device operation and configuration without the constraints and the cost of an awkward user interface due to limited space on the device itself.\r
+\r
+\r
+At the same time, web interfaces are becoming the preferred choice for application development of various types, driven by rapid advances in web browser technology, (wireless) network availability, and low deployment costs.\r
+\r
+[http://www.webtoolkit.eu/wt Wt] is an open source web toolkit that brings state-of-the-art cross-browser, AJAX-enabled web application development to C++ programmers who have little or no experience in web technologies. We present some of its features and show how it resembles typical desktop GUI toolkits from a programmer point of view. Because of its high performance, it is popular for large deployments on Internet and intranet servers down to small deployments on embedded systems. We discuss its suitability for embedded systems compared to alternative approaches, and demonstrate some capabilities using a 200MHz ARM device.</description>
+    <persons>
+     <person id="628">Pieter Libin</person>
+    </persons>
+    <links>
+     <link href="http://www.webtoolkit.eu/wt">Wt website</link>
+    </links>
+   </event>
+   <event id="737">
+    <start>15:00</start>
+    <duration>01:00</duration>
+    <room>Lameere</room>
+    <tag>emb_voltage_regulator</tag>
+    <title>Dynamic voltage and current regulator interface for the Linux kernel</title>
+    <subtitle></subtitle>
+    <track>Embedded</track>
+    <type>Podium</type>
+    <language>English</language>
+    <abstract>Every uA is sacred: A dynamic voltage and current regulator interface for the Linux kernel</abstract>
+    <description>The Linux kernel voltage and current regulator subsystem is designed to provide a standard kernel interface to device drivers and board level code in order to control system voltage and current regulators. The subsystem is designed to allow systems to dynamically control their regulator power output in order to save system power and prolong battery life. \r
+\r
+This talk will describe the regulator subsystem and discuss how the subsystem can be used to reduce dynamic and static system power consumption.</description>
+    <persons>
+     <person id="172">Liam Girdwood</person>
+    </persons>
+    <links>
+    </links>
+   </event>
+   <event id="738">
+    <start>16:00</start>
+    <duration>01:00</duration>
+    <room>Lameere</room>
+    <tag>emb_bug</tag>
+    <title>Hacking with modular hardware: the BUG</title>
+    <subtitle></subtitle>
+    <track>Embedded</track>
+    <type>Podium</type>
+    <language>English</language>
+    <abstract>[http://buglabs.net BUG] is a device that takes the concept of a standard PC, turns it inside out, and makes it fit in your hand.\r
+\r
+Using open source hardware and software, applications can be created with previously non-existent device configurations.</abstract>
+    <description>This talk will discuss the BUG platform in general, and our use of OpenEmbedded and Poky Linux. No proprietary or commercial tools, drivers, or applications are used. If there is interest we may also get into some application development and show some existing apps.\r
+\r
+More information on BUG is available at [http://buglabs.net].\r
+\r
+Also giving away two BUGS in the devroom.</description>
+    <persons>
+     <person id="537">Ken Gilmer</person>
+    </persons>
+    <links>
+    </links>
+   </event>
+   <event id="739">
+    <start>17:00</start>
+    <duration>01:30</duration>
+    <room>Lameere</room>
+    <tag>emb_ptxdist</tag>
+    <title>Building Embedded Linux Systems with PTXdist</title>
+    <subtitle></subtitle>
+    <track>Embedded</track>
+    <type>Podium</type>
+    <language>English</language>
+    <abstract>PTXdist is a "make your own distribution" build system, based on Bash, Kconfig and GNU Make.</abstract>
+    <description>Dealing with embedded systems is a complicated thing: you have to take care of toolchains, cross compiling and, in industrial projects, most of all: reproducability and testability.\r
+\r
+PTXdist is a "make your own distribution" build system, based on Bash, Kconfig and GNU Make. Making a root filesystem for a target box can be as easy as 'ptxdist go', but the focus is on "executable documentation", not distribution. We care about upstream of the managed softare, separate our patches and try to be part of the world domination project by finding bugs in other people's open source software.</description>
+    <persons>
+     <person id="629">Robert Schwebel</person>
+    </persons>
+    <links>
+    </links>
+   </event>
+  </room>
+  <room name="H.1301">
+   <event id="548">
+    <start>13:15</start>
+    <duration>00:15</duration>
+    <room>H.1301</room>
+    <tag>kde_welcome</tag>
+    <title>Welcome to the KDE devroom</title>
+    <subtitle></subtitle>
+    <track>KDE</track>
+    <type>Other</type>
+    <language>English</language>
+    <abstract>Welcome to the KDE developer room at FOSDEM 2009.</abstract>
+    <description></description>
+    <persons>
+     <person id="95">Bart Coppens</person>
+    </persons>
+    <links>
+    </links>
+   </event>
+   <event id="549">
+    <start>13:30</start>
+    <duration>00:45</duration>
+    <room>H.1301</room>
+    <tag>kde_42</tag>
+    <title>KDE 42 and you</title>
+    <subtitle></subtitle>
+    <track>KDE</track>
+    <type>Podium</type>
+    <language>English</language>
+    <abstract>The answer to life, the universe and everything. We bring you KDE "the answer" 42. After a rather generic introduction to the KDE community and what we do, I present the new features in the latest release of the KDE software suite. What's done? What's not? And what will the future bring? If you want to know the answers to these questions, join this talk.</abstract>
+    <description></description>
+    <persons>
+     <person id="98">Jos Poortvliet</person>
+    </persons>
+    <links>
+    </links>
+   </event>
+   <event id="550">
+    <start>14:15</start>
+    <duration>00:45</duration>
+    <room>H.1301</room>
+    <tag>kde_amarok2</tag>
+    <title>Amarok 2 - rediscover music</title>
+    <subtitle></subtitle>
+    <track>KDE</track>
+    <type>Podium</type>
+    <language>English</language>
+    <abstract>Verson 2.0 was a major step for the Amarok project: new look and tight integration with web services. But this is only the beginning of a new era.</abstract>
+    <description>This talk shows you the current state of Amarok 2.0 and what to expect from  the wonderful world of 2.1. You wanna customize your Amarok? Learn how you can use the new extremely powerful JavaScript interface to extend Amarok with new internet services and tools. The scripting interface gives you access to the entire Qt API; it is the same API we use to write Amarok itself.</description>
+    <persons>
+     <person id="70">Sven Krohlas</person>
+     <person id="514">Ian Monroe</person>
+     <person id="515">Lydia Pintscher</person>
+    </persons>
+    <links>
+    </links>
+   </event>
+   <event id="551">
+    <start>15:00</start>
+    <duration>00:45</duration>
+    <room>H.1301</room>
+    <tag>kde_koffice_2_0</tag>
+    <title>KOffice 2.0: KOffice coming to KDE4</title>
+    <subtitle></subtitle>
+    <track>KDE</track>
+    <type>Podium</type>
+    <language>English</language>
+    <abstract>KOffice is in the final stages of creating it's 2.0 version, which is based on Qt4 and KDE4 technologies. These new technologies have opened many doors, such as being able to run KOffice on more diverse systems than was possible before, such as OS X, and the N810.</abstract>
+    <description>Marijn will show some of the new features KOffice has acquired, and how all the components in KOffice interact.</description>
+    <persons>
+     <person id="516">Marijn Kruisselbrink</person>
+    </persons>
+    <links>
+    </links>
+   </event>
+   <event id="552">
+    <start>15:45</start>
+    <duration>00:30</duration>
+    <room>H.1301</room>
+    <tag>kde_group_photo</tag>
+    <title>KDE Group Photo</title>
+    <subtitle></subtitle>
+    <track>KDE</track>
+    <type>Other</type>
+    <language>English</language>
+    <abstract>We'll have a group picture with the KDE people, after which we'll take a group picture with the KDE and GNOME people.</abstract>
+    <description></description>
+    <persons>
+     <person id="95">Bart Coppens</person>
+    </persons>
+    <links>
+    </links>
+   </event>
+   <event id="553">
+    <start>16:15</start>
+    <duration>00:45</duration>
+    <room>H.1301</room>
+    <tag>kde_sharing_the_burden</tag>
+    <title>Sharing the burden - doubling the joy</title>
+    <subtitle></subtitle>
+    <track>KDE</track>
+    <type>Podium</type>
+    <language>English</language>
+    <abstract>Why is the community important for Qt Software and other companies and what can the community gain from working with those? This talk provides insights about common goals and the benefits for both sides.</abstract>
+    <description></description>
+    <persons>
+     <person id="511">Alexandra Leisse</person>
+    </persons>
+    <links>
+    </links>
+   </event>
+   <event id="554">
+    <start>17:00</start>
+    <duration>00:45</duration>
+    <room>H.1301</room>
+    <tag>kde_fun_with_qt</tag>
+    <title>Programming is fun with Qt</title>
+    <subtitle></subtitle>
+    <track>KDE</track>
+    <type>Podium</type>
+    <language>English</language>
+    <abstract>Want to become a Qt/KDE developer? This talk is an introduction to Qt and KDE application development. It will show the main features of Qt, and explain the Qt way of coding, with useful hints.</abstract>
+    <description></description>
+    <persons>
+     <person id="512">Olivier Goffart</person>
+    </persons>
+    <links>
+    </links>
+   </event>
+   <event id="787">
+    <start>18:30</start>
+    <duration>00:30</duration>
+    <room>H.1301</room>
+    <tag>kde_opensolaris</tag>
+    <title>KDE on OpenSolaris</title>
+    <subtitle></subtitle>
+    <track>KDE</track>
+    <type>Podium</type>
+    <language>English</language>
+    <abstract>This talk covers the progress the KDE community has made together with Sun Microsystems.</abstract>
+    <description>It details on how to get a project as large as KDE into OpenSolaris.\r
+\r
+What are the issues? What is a repository? Can anyone contribute to repository code? How can someone contribute? What work needsto be done to get on the opensolaris.com distrubution DVD?</description>
+    <persons>
+     <person id="648">Gerard van den Berg</person>
+    </persons>
+    <links>
+    </links>
+   </event>
+  </room>
+  <room name="UA2.114">
+   <event id="746">
+    <start>13:00</start>
+    <duration>00:30</duration>
+    <room>UA2.114</room>
+    <tag>pg_bsd_welcome</tag>
+    <title>Welcome to the PostgreSQL and *BSD devroom</title>
+    <subtitle></subtitle>
+    <track>BSD+PostgreSQL</track>
+    <type>Podium</type>
+    <language>English</language>
+    <abstract>Keynote and welcome to the PostgreSQL and *BSD developer room at FOSDEM 2009.</abstract>
+    <description></description>
+    <persons>
+     <person id="632">Marc Balmer</person>
+     <person id="245">Robert Watson</person>
+     <person id="415">Magnus Hagander</person>
+     <person id="631">Andreas Scherbaum</person>
+    </persons>
+    <links>
+    </links>
+   </event>
+   <event id="747">
+    <start>13:30</start>
+    <duration>00:30</duration>
+    <room>UA2.114</room>
+    <tag>pg_8_4</tag>
+    <title>What's coming in PostgreSQL 8.4 ?</title>
+    <subtitle></subtitle>
+    <track>BSD+PostgreSQL</track>
+    <type>Podium</type>
+    <language>English</language>
+    <abstract></abstract>
+    <description></description>
+    <persons>
+     <person id="415">Magnus Hagander</person>
+    </persons>
+    <links>
+    </links>
+   </event>
+   <event id="748">
+    <start>14:00</start>
+    <duration>01:00</duration>
+    <room>UA2.114</room>
+    <tag>pg_replication</tag>
+    <title>Replication, Replication, Replication</title>
+    <subtitle></subtitle>
+    <track>BSD+PostgreSQL</track>
+    <type>Podium</type>
+    <language>English</language>
+    <abstract></abstract>
+    <description></description>
+    <persons>
+     <person id="406">Simon Riggs</person>
+    </persons>
+    <links>
+    </links>
+   </event>
+   <event id="749">
+    <start>15:00</start>
+    <duration>01:00</duration>
+    <room>UA2.114</room>
+    <tag>bsd_utf8</tag>
+    <title>UTF-8 support for syscons, new TTY layer</title>
+    <subtitle></subtitle>
+    <track>BSD+PostgreSQL</track>
+    <type>Podium</type>
+    <language>English</language>
+    <abstract>During my internship for my B.ASc. degree, I was sponsored by a Dutch IT firm to improve the design of the TTY layer.</abstract>
+    <description>After I committed this work to the source tree back in August, I moved my interest to the syscons driver. I'm currently working on adding support for Unicode font rendering. I will discuss the design of the new TTY layer, but also the changes I am planning to make to syscons.</description>
+    <persons>
+     <person id="633">Ed Schouten</person>
+    </persons>
+    <links>
+    </links>
+   </event>
+   <event id="752">
+    <start>16:00</start>
+    <duration>01:00</duration>
+    <room>UA2.114</room>
+    <tag>bsd_olap_windowing</tag>
+    <title>OLAP/Windowing functions</title>
+    <subtitle></subtitle>
+    <track>BSD+PostgreSQL</track>
+    <type>Podium</type>
+    <language>English</language>
+    <abstract></abstract>
+    <description></description>
+    <persons>
+     <person id="403">David Fetter</person>
+    </persons>
+    <links>
+    </links>
+   </event>
+   <event id="750">
+    <start>17:00</start>
+    <duration>01:00</duration>
+    <room>UA2.114</room>
+    <tag>bsd_porting_freebsd</tag>
+    <title>Porting applications in FreeBSD</title>
+    <subtitle></subtitle>
+    <track>BSD+PostgreSQL</track>
+    <type>Podium</type>
+    <language>English</language>
+    <abstract></abstract>
+    <description></description>
+    <persons>
+     <person id="634">Rodrigo Osorio</person>
+    </persons>
+    <links>
+    </links>
+   </event>
+   <event id="751">
+    <start>18:00</start>
+    <duration>01:00</duration>
+    <room>UA2.114</room>
+    <tag>pg_clarify_rumours</tag>
+    <title>Clarify technical rumours about PostgreSQL</title>
+    <subtitle></subtitle>
+    <track>BSD+PostgreSQL</track>
+    <type>Podium</type>
+    <language>English</language>
+    <abstract></abstract>
+    <description></description>
+    <persons>
+     <person id="414">Susanne Ebrecht</person>
+    </persons>
+    <links>
+    </links>
+   </event>
+  </room>
+  <room name="H.1302">
+   <event id="564">
+    <start>13:15</start>
+    <duration>00:15</duration>
+    <room>H.1302</room>
+    <tag>gnome_welcome</tag>
+    <title>Welcome to the GNOME devroom</title>
+    <subtitle></subtitle>
+    <track>GNOME</track>
+    <type>Other</type>
+    <language>English</language>
+    <abstract>Welcome to the GNOME developer room at FOSDEM 2009.</abstract>
+    <description></description>
+    <persons>
+     <person id="130">Christophe Fergeau</person>
+    </persons>
+    <links>
+    </links>
+   </event>
+   <event id="557">
+    <start>13:30</start>
+    <duration>00:45</duration>
+    <room>H.1302</room>
+    <tag>gnome_people_framework</tag>
+    <title>The People Framework</title>
+    <subtitle></subtitle>
+    <track>GNOME</track>
+    <type>Podium</type>
+    <language>English</language>
+    <abstract>The People framework provides an unified way for applications to access and gather contact information from disconnected sources (local address-book, social network, web service, mobile phone...). It's been presented during last GUADEC in Istanbul and we would like to update the community on progress made, presenting demos such as experimental integration within Empathy.</abstract>
+    <description></description>
+    <persons>
+     <person id="517">Johann Prieur</person>
+     <person id="518">Ali Sabil</person>
+    </persons>
+    <links>
+    </links>
+   </event>
+   <event id="558">
+    <start>14:15</start>
+    <duration>00:45</duration>
+    <room>H.1302</room>
+    <tag>gnome_hynerian</tag>
+    <title>The Hynerian Empire</title>
+    <subtitle></subtitle>
+    <track>GNOME</track>
+    <type>Podium</type>
+    <language>English</language>
+    <abstract>[http://live.gnome.org/Rygel Rygel] is an implementation of the UPnP MediaServer V 2.0 specification that is specifically designed for GNOME (Mobile). It is based on GUPnP and is written (mostly) in Vala language.</abstract>
+    <description>Zeeshan will start the presentation with information on the past, present and future of Rygel project.\r
+\r
+He will then introduce the plugin API with the help of a Sample plugin, followed by a demo and Q&amp;A session in the end.</description>
+    <persons>
+     <person id="374">Zeeshan Ali</person>
+    </persons>
+    <links>
+     <link href="http://live.gnome.org/Rygel">http://live.gnome.org/Rygel</link>
+    </links>
+   </event>
+   <event id="559">
+    <start>15:00</start>
+    <duration>00:45</duration>
+    <room>H.1302</room>
+    <tag>gnome_sugar_platform</tag>
+    <title>The Sugar platform</title>
+    <subtitle></subtitle>
+    <track>GNOME</track>
+    <type>Podium</type>
+    <language>English</language>
+    <abstract>This session will consist of a presentation of the [http://sugarlabs.org/go/Supported_systems Sugar platform], the [http://sugarlabs.org/ SugarLabs organization], its relationship with GNOME Mobile and points that might interest mainstream GNOME development.</abstract>
+    <description></description>
+    <persons>
+     <person id="519">Tomeu Vizoso</person>
+    </persons>
+    <links>
+    </links>
+   </event>
+   <event id="560">
+    <start>15:45</start>
+    <duration>00:30</duration>
+    <room>H.1302</room>
+    <tag>gnome_group_pic</tag>
+    <title>Group Picture</title>
+    <subtitle></subtitle>
+    <track>GNOME</track>
+    <type>Podium</type>
+    <language>English</language>
+    <abstract>Group picture of GNOME developers</abstract>
+    <description></description>
+    <persons>
+     <person id="130">Christophe Fergeau</person>
+    </persons>
+    <links>
+    </links>
+   </event>
+   <event id="561">
+    <start>16:15</start>
+    <duration>00:45</duration>
+    <room>H.1302</room>
+    <tag>gnome_geolocation</tag>
+    <title>Bringing geolocation into GNOME</title>
+    <subtitle></subtitle>
+    <track>GNOME</track>
+    <type>Podium</type>
+    <language>English</language>
+    <abstract>This talk will be about some of the efforts to bring geolocation into Gnome.</abstract>
+    <description>In particular, it'll focus on the Gtk/Clutter widget to display maps: http://blog.pierlux.com/projects/libchamplain/ and geoclue.\r
+\r
+It'll go on with examples of where they are already used in Gnome apps (such as the EOG plugin and Empathy (in a feature to be released soon)).</description>
+    <persons>
+     <person id="520">Pierre-Luc Beaudoin</person>
+    </persons>
+    <links>
+    </links>
+   </event>
+   <event id="745">
+    <start>17:00</start>
+    <duration>00:45</duration>
+    <room>H.1302</room>
+    <tag>gnome_nemiver</tag>
+    <title>Nemiver, a GNOME debugger</title>
+    <subtitle></subtitle>
+    <track>GNOME</track>
+    <type>Podium</type>
+    <language>English</language>
+    <abstract>This talk will introduce [http://projects.gnome.org/nemiver/ Nemiver], present its history, features and architecture.</abstract>
+    <description>The main objective of Nemiver is to provide a simple tool that allows developers to quickly and easily debug usual problems\r
+in their applications without necessarily having to know about command line debuggers arcanes.</description>
+    <persons>
+     <person id="117">Dodji Seketeli</person>
+    </persons>
+    <links>
+     <link href="http://projects.gnome.org/nemiver/">Nemiver project page</link>
+    </links>
+   </event>
+   <event id="563">
+    <start>17:45</start>
+    <duration>00:45</duration>
+    <room>H.1302</room>
+    <tag>gnome_tracker</tag>
+    <title>Tracker</title>
+    <subtitle></subtitle>
+    <track>GNOME</track>
+    <type>Podium</type>
+    <language>English</language>
+    <abstract>tbd.</abstract>
+    <description></description>
+    <persons>
+     <person id="116">Philip Van Hoof</person>
+    </persons>
+    <links>
+    </links>
+   </event>
+  </room>
+  <room name="H.1308">
+   <event id="768">
+    <start>13:15</start>
+    <duration>00:45</duration>
+    <room>H.1308</room>
+    <tag>moz_europe</tag>
+    <title>Mozilla Europe</title>
+    <subtitle></subtitle>
+    <track>Mozilla</track>
+    <type>Podium</type>
+    <language>English</language>
+    <abstract>General Introduction followed by an update on the work of Mozilla in Europe.</abstract>
+    <description></description>
+    <persons>
+     <person id="344">Tristan Nitot</person>
+    </persons>
+    <links>
+    </links>
+   </event>
+   <event id="769">
+    <start>14:00</start>
+    <duration>00:45</duration>
+    <room>H.1308</room>
+    <tag>moz_foundation</tag>
+    <title>Mozilla Foundation</title>
+    <subtitle></subtitle>
+    <track>Mozilla</track>
+    <type>Podium</type>
+    <language>English</language>
+    <abstract>Foundation update, programs, goals, etc.</abstract>
+    <description></description>
+    <persons>
+     <person id="177">Gervase Markham</person>
+    </persons>
+    <links>
+    </links>
+   </event>
+   <event id="770">
+    <start>14:45</start>
+    <duration>00:30</duration>
+    <room>H.1308</room>
+    <tag>moz_univ</tag>
+    <title>Mozilla and Universities</title>
+    <subtitle></subtitle>
+    <track>Mozilla</track>
+    <type>Podium</type>
+    <language>English</language>
+    <abstract>Lightning talk about MAOW Madrid organized jointly with Madrid University.</abstract>
+    <description></description>
+    <persons>
+     <person id="639">Gregorio Robles</person>
+     <person id="351">Pascal Chevrel</person>
+    </persons>
+    <links>
+    </links>
+   </event>
+   <event id="771">
+    <start>15:15</start>
+    <duration>00:45</duration>
+    <room>H.1308</room>
+    <tag>moz_after_ff_3_1</tag>
+    <title>What's next after Firefox 3.1</title>
+    <subtitle></subtitle>
+    <track>Mozilla</track>
+    <type>Podium</type>
+    <language>English</language>
+    <abstract>Firefox 3.2, Extensions 2.0, Labs, and more</abstract>
+    <description></description>
+    <persons>
+     <person id="640">Mike Connor</person>
+    </persons>
+    <links>
+    </links>
+   </event>
+   <event id="772">
+    <start>16:00</start>
+    <duration>00:45</duration>
+    <room>H.1308</room>
+    <tag>moz_community_sites</tag>
+    <title>Mozilla Community Sites Project</title>
+    <subtitle></subtitle>
+    <track>Mozilla</track>
+    <type>Podium</type>
+    <language>English</language>
+    <abstract></abstract>
+    <description></description>
+    <persons>
+     <person id="175">Zbigniew Braniecki</person>
+    </persons>
+    <links>
+    </links>
+   </event>
+   <event id="773">
+    <start>16:45</start>
+    <duration>00:45</duration>
+    <room>H.1308</room>
+    <tag>moz_community_design</tag>
+    <title>Community and Design</title>
+    <subtitle></subtitle>
+    <track>Mozilla</track>
+    <type>Podium</type>
+    <language>English</language>
+    <abstract>"Open Source Design, Mozilla and You" - A discussion about what open source design is, how Mozilla uses it to help spread Firefox, and the process of building up a worldwide design community (and how you can help!).</abstract>
+    <description></description>
+    <persons>
+     <person id="641">John Slater</person>
+    </persons>
+    <links>
+    </links>
+   </event>
+  </room>
+  <room name="H.1309">
+   <event id="636">
+    <start>14:00</start>
+    <duration>01:00</duration>
+    <room>H.1309</room>
+    <tag>xorg_randr_1_3</tag>
+    <title>RandR 1.3: New Features in a Nutshell</title>
+    <subtitle></subtitle>
+    <track>X.org</track>
+    <type>Podium</type>
+    <language>English</language>
+    <abstract>RandR 1.3 presents - amongst other things - transformations, panning, and standardized properties. This talk will show how to use these features and how they should influence tools and applications.</abstract>
+    <description></description>
+    <persons>
+     <person id="231">Matthias Hopf</person>
+    </persons>
+    <links>
+    </links>
+   </event>
+   <event id="795">
+    <start>15:00</start>
+    <duration>01:00</duration>
+    <room>H.1309</room>
+    <tag>xorg_rebuilt_desktop</tag>
+    <title>The Rebuilt Linux Desktop</title>
+    <subtitle></subtitle>
+    <track>X.org</track>
+    <type>Podium</type>
+    <language>English</language>
+    <abstract>Graphics drivers under Linux have seen the most significant changes since X was first ported in the last year. The X server can now run as an unprivileged process; kernel panic messages can be displayed while graphics are active; graphics applications can use virtual memory to store GPU data.</abstract>
+    <description>In the kernel, these changes include the new Graphics Execution Manager (GEM) and kernel-based video mode setting (KMS). Beyond the kernel, the second version of the Direct Rendering Interface X extension (DRI2) unifies the X and OpenGL image storage space.\r
+\r
+This talk will describe the kernel and user-space changes along with the other kernel changes necessary to support the new code. Finally, the audience will be encouraged to participate in a discussion about future plans in this area.</description>
+    <persons>
+     <person id="40">Keith Packard</person>
+    </persons>
+    <links>
+    </links>
+   </event>
+   <event id="637">
+    <start>16:00</start>
+    <duration>01:00</duration>
+    <room>H.1309</room>
+    <tag>xorg_nouveau</tag>
+    <title>Nouveau Status Update</title>
+    <subtitle></subtitle>
+    <track>X.org</track>
+    <type>Podium</type>
+    <language>English</language>
+    <abstract>Since last FOSDEM, Nouveau has been making steady progress. This talk will detail some of the changes made since last year and present the newest features. Throughout this talk, I will also introduce a number of "did you know ?" slides about the project and Nvidia hardware's inner workings.</abstract>
+    <description></description>
+    <persons>
+     <person id="230">Stéphane Marchesin</person>
+    </persons>
+    <links>
+    </links>
+   </event>
+   <event id="796">
+    <start>17:00</start>
+    <duration>01:00</duration>
+    <room>H.1309</room>
+    <tag>xorg_intel_graphics</tag>
+    <title>Intel's graphics projects for the coming year.</title>
+    <subtitle></subtitle>
+    <track>X.org</track>
+    <type>Podium</type>
+    <language>English</language>
+    <abstract>While significant progress has been made in fixing the Linux graphics architecture, there are still some sharp edges. This talk will cover Intel's plans for the coming year, including DRI2 vblank support, DRI2 page flipping, rebuilding Mesa's compiler infrastructure, pulling ideas from Gallium into core Mesa, and more.</abstract>
+    <description></description>
+    <persons>
+     <person id="656">Eric Anholt</person>
+    </persons>
+    <links>
+    </links>
+   </event>
+  </room>
+  <room name="H.2213">
+   <event id="626">
+    <start>13:00</start>
+    <duration>01:00</duration>
+    <room>H.2213</room>
+    <tag>fedora_rpm_packaging</tag>
+    <title>RPM packaging</title>
+    <subtitle></subtitle>
+    <track>Fedora+CentOS</track>
+    <type>Podium</type>
+    <language>English</language>
+    <abstract></abstract>
+    <description></description>
+    <persons>
+     <person id="576">Christophe Wickert</person>
+    </persons>
+    <links>
+    </links>
+   </event>
+   <event id="622">
+    <start>14:00</start>
+    <duration>01:00</duration>
+    <room>H.2213</room>
+    <tag>fedora_fel</tag>
+    <title>Fedora Electronic Lab</title>
+    <subtitle></subtitle>
+    <track>Fedora+CentOS</track>
+    <type>Podium</type>
+    <language>English</language>
+    <abstract>[http://chitlesh.fedorapeople.org/FEL/ Fedora's Electronic Laboratory] is dedicated to supporting the innovation and development of opensource EDA community along with a history of experience in multiple applications.</abstract>
+    <description>Fedora Electronic Laboratory provides a complete electronic laboratory setup with reliable open source design tools in order to meet one's requirements to keep one in pace with current technological race. Project management tools         such as spreadsheet, gantt diagram, mindmapping tools.... are also included.</description>
+    <persons>
+     <person id="164">Chitlesh Goorah</person>
+    </persons>
+    <links>
+    </links>
+   </event>
+   <event id="627">
+    <start>15:00</start>
+    <duration>01:00</duration>
+    <room>H.2213</room>
+    <tag>fedora_future_fr</tag>
+    <title>Future Fedora-fr challenges</title>
+    <subtitle></subtitle>
+    <track>Fedora+CentOS</track>
+    <type>Podium</type>
+    <language>English</language>
+    <abstract>Fedora organization in French speaking country.</abstract>
+    <description>Fedora-fr is a non profit organization mainly active in France. Now that the organization is well organized and going to have its head renewed for the first time at the beginning of this year, Fedora-fr has to meet other French speaking Fedora addicts in foreign countries, and see how it can help them buzz about Fedora and organise events in their own areas.</description>
+    <persons>
+     <person id="168">Thomas Canniot</person>
+    </persons>
+    <links>
+    </links>
+   </event>
+   <event id="628">
+    <start>16:00</start>
+    <duration>01:00</duration>
+    <room>H.2213</room>
+    <tag>fedora_func_symbolic</tag>
+    <title>Func, Symbolic: Present and future</title>
+    <subtitle></subtitle>
+    <track>Fedora+CentOS</track>
+    <type>Podium</type>
+    <language>English</language>
+    <abstract>Theory and demo. In the first part will be a short explanation about what are func and symbolic, and (in particular for symbolic) what are future plans. In the second part will be how set-up func and symbolic and hot they work.</abstract>
+    <description></description>
+    <persons>
+     <person id="578">Francesco Crippa</person>
+     <person id="577">Luca Foppiano</person>
+    </persons>
+    <links>
+     <link href="https://fedorahosted.org/func/">Func project page</link>
+    </links>
+   </event>
+   <event id="629">
+    <start>17:00</start>
+    <duration>01:00</duration>
+    <room>H.2213</room>
+    <tag>fedora_sugar</tag>
+    <title>Sugar: what is and why Fedora might care</title>
+    <subtitle></subtitle>
+    <track>Fedora+CentOS</track>
+    <type>Podium</type>
+    <language>English</language>
+    <abstract>Introduction to [http://sugarlabs.org/ Sugar and SugarLabs], strategic importance it might have for Fedora and GNOME, and synergy with other projects Fedora cares about.</abstract>
+    <description></description>
+    <persons>
+     <person id="579">Greg DeKoenigsberg</person>
+     <person id="519">Tomeu Vizoso</person>
+    </persons>
+    <links>
+    </links>
+   </event>
+   <event id="625">
+    <start>18:00</start>
+    <duration>01:00</duration>
+    <room>H.2213</room>
+    <tag>fedora_augeas</tag>
+    <title>Augeas</title>
+    <subtitle></subtitle>
+    <track>Fedora+CentOS</track>
+    <type>Podium</type>
+    <language>English</language>
+    <abstract>[http://augeas.net/ Augeas] is a configuration editing tool. It parses configuration files in their native formats and transforms them into a tree. Configuration changes are made by manipulating this tree and saving it back into native config files.</abstract>
+    <description>One of the many things that makes Linux configuration management the minefield we all love is the lack of a local configuration API. The main culprit for this situation, that configuration data is generally stored in text files in a wide variety of formats, is both an important part of the Linux culture and valuable when humans need to make configuration changes manually. AUGEAS provides a local configuration API that presents configuration data as a tree. The tree is backed directly by the various config files as they exist today; modifications to the tree correspond directly to changes in the     underlying files.\r
+\r
+AUGEAS takes great care to preserve comments and other formatting details across editing operations. The transformation from files into the tree and back is controlled by a description of the file's format, consisting of regular expressions and instructions on how to map matches into the tree. AUGEAS currently can be used through a command line tool, the C API, and from Ruby, Python, and OCaml. It also comes with descriptions for a good number of common Linux config files that can be edited "out-of-the-box."</description>
+    <persons>
+     <person id="575">Raphaël Pinson</person>
+    </persons>
+    <links>
+     <link href="http://augeas.net/">Augeas</link>
+    </links>
+   </event>
+  </room>
+  <room name="H.2214">
+   <event id="596">
+    <start>13:00</start>
+    <duration>00:15</duration>
+    <room>H.2214</room>
+    <tag>opensuse_welcome</tag>
+    <title>Welcome to the openSUSE devroom</title>
+    <subtitle></subtitle>
+    <track>openSUSE</track>
+    <type>Other</type>
+    <language>English</language>
+    <abstract>Welcome to the openSUSE developer room at FOSDEM 2009.</abstract>
+    <description></description>
+    <persons>
+     <person id="131">Martin Lasarsch</person>
+    </persons>
+    <links>
+    </links>
+   </event>
+   <event id="794">
+    <start>13:15</start>
+    <duration>00:30</duration>
+    <room>H.2214</room>
+    <tag>opensuse_obs_trust</tag>
+    <title>Who can you trust ?</title>
+    <subtitle></subtitle>
+    <track>openSUSE</track>
+    <type>Podium</type>
+    <language>English</language>
+    <abstract>The [http://en.opensuse.org/Build_Service openSUSE build service (obs)] offers everyone the opportunity to build packages for many Linux distributions with relatively little effort. Hence the amount of available versions and variants per package is comparatively high.</abstract>
+    <description>Therefore we need a powerful but also simple instrument to evaluate these packages, which are immediately available at the openSUSE software portal. A first approach will be an individual rating of developers working with obs.</description>
+    <persons>
+     <person id="655">Marko Jung</person>
+    </persons>
+    <links>
+    </links>
+   </event>
+   <event id="598">
+    <start>13:45</start>
+    <duration>00:45</duration>
+    <room>H.2214</room>
+    <tag>opensuse_community</tag>
+    <title>openSUSE Community</title>
+    <subtitle></subtitle>
+    <track>openSUSE</track>
+    <type>Podium</type>
+    <language>English</language>
+    <abstract>This talk gives you an overview about the openSUSE community. What we have, what we need. It also covers some topics from the mailinglists, like Weekly-news i18n, plans for language specific news.o.o, and why i18n is important for us.</abstract>
+    <description>The Talk will also have short overview about the upcoming openSUSE spokesperson program.\r
+\r
+Dinar will also talk about the Contrib repository.</description>
+    <persons>
+     <person id="547">Dinar Valeev</person>
+    </persons>
+    <links>
+    </links>
+   </event>
+   <event id="599">
+    <start>14:30</start>
+    <duration>00:15</duration>
+    <room>H.2214</room>
+    <tag>opensuse_build_service_overview</tag>
+    <title>openSUSE Build Service overview</title>
+    <subtitle></subtitle>
+    <track>openSUSE</track>
+    <type>Podium</type>
+    <language>English</language>
+    <abstract>Introduction into the [http://build.opensuse.org openSUSE Build Service], why it was created, what are the goals it wants to achieve and a brief overview about its components.</abstract>
+    <description></description>
+    <persons>
+     <person id="134">Adrian Schroeter</person>
+    </persons>
+    <links>
+    </links>
+   </event>
+   <event id="600">
+    <start>14:45</start>
+    <duration>00:45</duration>
+    <room>H.2214</room>
+    <tag>opensuse_obs_collaboration</tag>
+    <title>Collaboration in the openSUSE Build Service</title>
+    <subtitle></subtitle>
+    <track>openSUSE</track>
+    <type>Podium</type>
+    <language>English</language>
+    <abstract>This talk explains how to use the Collaboration features of the openSUSE Build Service. Its based on two openSUSE repositories that use them: openSUSE:Factory:Contrib and openSUSE:Factory.</abstract>
+    <description></description>
+    <persons>
+     <person id="137">Hendrik Vogelsang</person>
+    </persons>
+    <links>
+     <link href="http://en.opensuse.org/Contrib">openSUSE Contrib</link>
+    </links>
+   </event>
+   <event id="601">
+    <start>15:30</start>
+    <duration>00:45</duration>
+    <room>H.2214</room>
+    <tag>opensuse_obs_crossdev</tag>
+    <title>Putting Cross Development Support into OBS</title>
+    <subtitle></subtitle>
+    <track>openSUSE</track>
+    <type>Podium</type>
+    <language>English</language>
+    <abstract>The Cross Development in OBS feature is now integrated into normal OBS development. It allows you to build, test, run applications for other processor architectures using a combination of emulators and crossbuild.</abstract>
+    <description>Emulators are already a normal part of OBS. An analysis has been made of the different ways to implement Cross Build to result in better interoperability with existing linux distributions for other architectures. The goal was to implement Cross Development as an orthogonal feature, and to glueless implement openSUSE, Fedora, Debian, Ubuntu for embedded architektures like ARM, sh4, mips in the same way as is done already by OBS for x86 and powerpc architectures.</description>
+    <persons>
+     <person id="548">Martin Mohring</person>
+    </persons>
+    <links>
+     <link href="http://en.opensuse.org/Build_Service">openSUSE Build Service</link>
+    </links>
+   </event>
+   <event id="602">
+    <start>16:15</start>
+    <duration>00:45</duration>
+    <room>H.2214</room>
+    <tag>opensuse_create_your_own</tag>
+    <title>Create your own Linux Distribution</title>
+    <subtitle></subtitle>
+    <track>openSUSE</track>
+    <type>Podium</type>
+    <language>English</language>
+    <abstract>This talk will explain briefly how you create your own openSUSE based Linux distribution installation media and Live media with the openSUSE Build Service.\r
+\r
+It includes a brief introduction to kiwi-instsource (which was presented as an outlook last year) and the way we define products; how the buildservice creates an installation source from that.</abstract>
+    <description>= Gory details:\r
+* kiwi in general (few minutes)\r
+* kiwi-instsource: purpose, implementation, xml extension, metapackages (10-15 minutes)\r
+* product definition file (5-10 minutes)\r
+* plugging together: product converter, necessary permission, vision of the release process, target groups etc. (10-15 minutes)\r
+\r
+= Demo:\r
+Jan-Christoph will demonstrate the following:\r
+* setup your own project\r
+* how to get this marked as product project\r
+* how to set base repos\r
+* how to define a product (package groups)\r
+* build a product: instsource(ftp repo, dvd) and live medium</description>
+    <persons>
+     <person id="338">Jan-Christoph Bornschlegel</person>
+    </persons>
+    <links>
+    </links>
+   </event>
+   <event id="603">
+    <start>17:00</start>
+    <duration>00:45</duration>
+    <room>H.2214</room>
+    <tag>opensuse_studio</tag>
+    <title>Creating customized openSUSE versions with SUSE Studio</title>
+    <subtitle></subtitle>
+    <track>openSUSE</track>
+    <type>Podium</type>
+    <language>English</language>
+    <abstract>SUSE Studio is a new web application to build openSUSE based appliances. It provides an easy to use interface to quickly create images for live CDs, \r
+bootable USB sticks and VMware. It's also possible to conveniently customize software selection, configuration and theming of the appliances. Third party software may be integrated through coupling with the openSUSE Build Service.</abstract>
+    <description>Studio's testdrive feature allows users to run the appliance via the web interface for testing and further configuration.\r
+\r
+We will present the concepts behind SUSE Studio and demonstrate how to easily create a customized openSUSE version in five minutes.</description>
+    <persons>
+     <person id="549">Daniel Bornkessel</person>
+     <person id="135">Cornelius Schumacher</person>
+    </persons>
+    <links>
+     <link href="http://susestudio.com">SUSE Studio</link>
+    </links>
+   </event>
+   <event id="604">
+    <start>17:45</start>
+    <duration>00:30</duration>
+    <room>H.2214</room>
+    <tag>opensuse_legal</tag>
+    <title>Legal aspects of distribution development</title>
+    <subtitle></subtitle>
+    <track>openSUSE</track>
+    <type>Podium</type>
+    <language>English</language>
+    <abstract>Every community distributions have to deal with legal issues. The talk shows what kind of pitfalls we have in our daily distribution work and how to solve them. This will only work with the upstream developers of the projects and most of the work will be done for every distribution again.</abstract>
+    <description></description>
+    <persons>
+     <person id="550">Jürgen Weigert</person>
+    </persons>
+    <links>
+    </links>
+   </event>
+   <event id="605">
+    <start>18:15</start>
+    <duration>00:45</duration>
+    <room>H.2214</room>
+    <tag>opensuse_apport</tag>
+    <title>Apport - Automatic Application Crash Reporting for openSUSE</title>
+    <subtitle></subtitle>
+    <track>openSUSE</track>
+    <type>Podium</type>
+    <language>English</language>
+    <abstract>Apport for automatic crash reporting on openSUSE.</abstract>
+    <description>Many application crashes remain unreported due to different reasons: \r
+* the crash is silently ignored since no core file is produced \r
+* existing crash handlers like bug-buddy or Dr. Konqi are desktop application specific \r
+* the crash is not easy to reproduce \r
+* the location to report the crash is unknown\r
+\r
+Apport gives you an easy way to solve these problems.</description>
+    <persons>
+     <person id="138">Jan Blunck</person>
+    </persons>
+    <links>
+     <link href="http://en.opensuse.org/Apport">Apport website</link>
+    </links>
+   </event>
+  </room>
+  <room name="AW1.105">
+   <event id="734">
+    <start>14:00</start>
+    <duration>02:00</duration>
+    <room>AW1.105</room>
+    <tag>osi_public_meeting</tag>
+    <title>Public Meeting of the Open Source Initiative (OSI)</title>
+    <subtitle></subtitle>
+    <track>Open Source Initiative</track>
+    <type>Meeting</type>
+    <language>English</language>
+    <abstract>The Open Source Initiative (OSI) will hold its public meeting at FOSDEM.</abstract>
+    <description>This meeting is open to everyone and the agenda is very flexible. We can discuss recent activities of the OSI, the future\r
+direction of OSI, and other topics of importance to the open source community.</description>
+    <persons>
+     <person id="625">Michael Tiemann</person>
+     <person id="160">Martin Michlmayr</person>
+    </persons>
+    <links>
+    </links>
+   </event>
+   <event id="784">
+    <start>17:00</start>
+    <duration>02:00</duration>
+    <room>AW1.105</room>
+    <tag>moz_xul</tag>
+    <title>Building XUL Communities</title>
+    <subtitle></subtitle>
+    <track>Mozilla</track>
+    <type>Workshop</type>
+    <language>English</language>
+    <abstract>Open discussion with [http://www.mozilla.org/projects/xul/ XUL] communities.</abstract>
+    <description></description>
+    <persons>
+     <person id="645">Paul Rouget</person>
+    </persons>
+    <links>
+    </links>
+   </event>
+  </room>
+  <room name="AW1.115">
+  </room>
+  <room name="AW1.117">
+   <event id="723">
+    <start>13:00</start>
+    <duration>01:00</duration>
+    <room>AW1.117</room>
+    <tag>goe_gnustep_theming</tag>
+    <title>Theming in GNUstep</title>
+    <subtitle></subtitle>
+    <track>GNUstep+OpenGroupware+Etoile</track>
+    <type>Podium</type>
+    <language>English</language>
+    <abstract>A Presentation of the GNUstep theming API and the 'Thematic' application intended for building theme bundles.</abstract>
+    <description>This discusses design philosophy (what theming is supposed to accomplish), technical design (an overview of the implementation) and state of development.</description>
+    <persons>
+     <person id="623">Richard Frith-Macdonald</person>
+    </persons>
+    <links>
+    </links>
+   </event>
+   <event id="724">
+    <start>14:00</start>
+    <duration>01:00</duration>
+    <room>AW1.117</room>
+    <tag>geo_scalable_ogo</tag>
+    <title>ScalableOGo</title>
+    <subtitle></subtitle>
+    <track>GNUstep+OpenGroupware+Etoile</track>
+    <type>Podium</type>
+    <language>English</language>
+    <abstract>This presentation presents ScalableOGo, a standards compliant free software groupware server.</abstract>
+    <description>Scalable OGo (SOGo) is a free groupware server focused on scalability instead of depth in functionality. The web interface uses human readable URLs and can be accessed according to REST web service ideas.\r
+\r
+The server stores data in the iCalendar/vCard formats and has broad support for theCalDAV/GroupDAV protocols.</description>
+    <persons>
+     <person id="500">Helge Heß</person>
+    </persons>
+    <links>
+    </links>
+   </event>
+   <event id="725">
+    <start>15:00</start>
+    <duration>01:00</duration>
+    <room>AW1.117</room>
+    <tag>goe_objc_gnustep</tag>
+    <title>Cross-Platform Objective-C Development using GNUstep</title>
+    <subtitle></subtitle>
+    <track>GNUstep+OpenGroupware+Etoile</track>
+    <type>Podium</type>
+    <language>English</language>
+    <abstract>This presentation explores the free tools that the GNUstep project provides for writing cross-platform Objective-C software.</abstract>
+    <description>Objective-C is most known for being the language of choice of Apple and being the "native" language for Apple Mac OS X and iPhone development.  Unfortunately, while Objective-C is a fantastic language, the development tools provided by Apple are designed to lock developers into a closed Apple-only environment.\r
+\r
+GNUstep provides an alternative, free implementation of the OpenStep specification (the core Objective-C libraries), largely compatible with the Apple Mac OS X Cocoa implementation, and a number of tools that allow Objective-C software\r
+to be developed and easily distributed across a number of platforms, including GNU/Linux, *BSD, Apple Mac OS X and Microsoft Windows.</description>
+    <persons>
+     <person id="86">Nicola Pero</person>
+    </persons>
+    <links>
+    </links>
+   </event>
+   <event id="726">
+    <start>16:00</start>
+    <duration>01:00</duration>
+    <room>AW1.117</room>
+    <tag>geo_ws_objc</tag>
+    <title>Web Services in Objective-C</title>
+    <subtitle></subtitle>
+    <track>GNUstep+OpenGroupware+Etoile</track>
+    <type>Podium</type>
+    <language>English</language>
+    <abstract>An overview of web services and a free software implementation to make them easy Objective-C programmers (GNUstep and MacOS-X/Cocoa).</abstract>
+    <description>No need to resort to Java or C# frameworks now that we can use web services directly from a language we love.</description>
+    <persons>
+     <person id="624">Riccardo Mottola</person>
+     <person id="623">Richard Frith-Macdonald</person>
+    </persons>
+    <links>
+    </links>
+   </event>
+   <event id="727">
+    <start>17:00</start>
+    <duration>01:00</duration>
+    <room>AW1.117</room>
+    <tag>geo_etoile</tag>
+    <title>Etoilé</title>
+    <subtitle></subtitle>
+    <track>GNUstep+OpenGroupware+Etoile</track>
+    <type>Podium</type>
+    <language>English</language>
+    <abstract>[http://etoileos.com/etoile/ Etoile] is a Desktop Environment for Unix based on the GNUstep frameworks.\r
+It focuses on the notions of modularity and small components, collaboration, persistence and flexibility.</abstract>
+    <description>In this talk I will present an overview of the project: its goals, concepts, and its current state.</description>
+    <persons>
+     <person id="92">Nicolas Roard</person>
+    </persons>
+    <links>
+    </links>
+   </event>
+  </room>
+  <room name="AW1.120">
+   <event id="671">
+    <start>13:00</start>
+    <duration>01:00</duration>
+    <room>AW1.120</room>
+    <tag>jabber_xmpp_101</tag>
+    <title>XMPP 101: A Fast-Paced Introduction to XMPP Technologies</title>
+    <subtitle></subtitle>
+    <track>Jabber+XMPP</track>
+    <type>Podium</type>
+    <language>English</language>
+    <abstract></abstract>
+    <description></description>
+    <persons>
+     <person id="586">Remko Tronçon</person>
+     <person id="22">Peter Saint-Andre</person>
+    </persons>
+    <links>
+    </links>
+   </event>
+   <event id="672">
+    <start>14:00</start>
+    <duration>00:30</duration>
+    <room>AW1.120</room>
+    <tag>jabber_pubsub_web</tag>
+    <title>PubSub and the Web</title>
+    <subtitle></subtitle>
+    <track>Jabber+XMPP</track>
+    <type>Podium</type>
+    <language>English</language>
+    <abstract></abstract>
+    <description></description>
+    <persons>
+     <person id="587">Nathan Fritz</person>
+    </persons>
+    <links>
+    </links>
+   </event>
+   <event id="673">
+    <start>14:30</start>
+    <duration>00:30</duration>
+    <room>AW1.120</room>
+    <tag>jabber_web_integration</tag>
+    <title>Integrating XMPP into Web Technologies</title>
+    <subtitle></subtitle>
+    <track>Jabber+XMPP</track>
+    <type>Podium</type>
+    <language>English</language>
+    <abstract></abstract>
+    <description></description>
+    <persons>
+     <person id="588">Jack Moffitt</person>
+    </persons>
+    <links>
+    </links>
+   </event>
+   <event id="674">
+    <start>15:00</start>
+    <duration>00:30</duration>
+    <room>AW1.120</room>
+    <tag>jabber_geoloc</tag>
+    <title>Geolocation</title>
+    <subtitle></subtitle>
+    <track>Jabber+XMPP</track>
+    <type>Podium</type>
+    <language>English</language>
+    <abstract></abstract>
+    <description></description>
+    <persons>
+     <person id="589">Simon Tennant</person>
+    </persons>
+    <links>
+    </links>
+   </event>
+   <event id="675">
+    <start>15:30</start>
+    <duration>00:30</duration>
+    <room>AW1.120</room>
+    <tag>jabber_deploy_jingle</tag>
+    <title>Deploying Jingle</title>
+    <subtitle></subtitle>
+    <track>Jabber+XMPP</track>
+    <type>Podium</type>
+    <language>English</language>
+    <abstract></abstract>
+    <description></description>
+    <persons>
+     <person id="204">Diana Cionoiu</person>
+    </persons>
+    <links>
+    </links>
+   </event>
+   <event id="676">
+    <start>16:00</start>
+    <duration>00:30</duration>
+    <room>AW1.120</room>
+    <tag>jabber_media_nets</tag>
+    <title>Personal Media Networks</title>
+    <subtitle></subtitle>
+    <track>Jabber+XMPP</track>
+    <type>Podium</type>
+    <language>English</language>
+    <abstract></abstract>
+    <description></description>
+    <persons>
+     <person id="590">Dirk Meyer</person>
+    </persons>
+    <links>
+    </links>
+   </event>
+   <event id="677">
+    <start>16:30</start>
+    <duration>00:30</duration>
+    <room>AW1.120</room>
+    <tag>jabber_large_scale</tag>
+    <title>Large-Scale XMPP Deployments</title>
+    <subtitle></subtitle>
+    <track>Jabber+XMPP</track>
+    <type>Podium</type>
+    <language>English</language>
+    <abstract></abstract>
+    <description></description>
+    <persons>
+     <person id="591">Florian Jensen</person>
+    </persons>
+    <links>
+    </links>
+   </event>
+   <event id="678">
+    <start>17:00</start>
+    <duration>00:30</duration>
+    <room>AW1.120</room>
+    <tag>jabber_real_life</tag>
+    <title>XMPP in Real Life</title>
+    <subtitle></subtitle>
+    <track>Jabber+XMPP</track>
+    <type>Podium</type>
+    <language>English</language>
+    <abstract>XMPP in real life: attacks, bad behaviour and how to cope with them.</abstract>
+    <description></description>
+    <persons>
+     <person id="206">Mickaël Rémond</person>
+    </persons>
+    <links>
+    </links>
+   </event>
+   <event id="679">
+    <start>17:30</start>
+    <duration>00:30</duration>
+    <room>AW1.120</room>
+    <tag>jabber_flow</tag>
+    <title>Presenting Information Flow in Deployed XMPP Clients</title>
+    <subtitle></subtitle>
+    <track>Jabber+XMPP</track>
+    <type>Podium</type>
+    <language>English</language>
+    <abstract></abstract>
+    <description></description>
+    <persons>
+     <person id="592">Dave Cridland</person>
+    </persons>
+    <links>
+    </links>
+   </event>
+   <event id="680">
+    <start>18:00</start>
+    <duration>01:00</duration>
+    <room>AW1.120</room>
+    <tag>jabber_lightning_talks</tag>
+    <title>Lightning Talks!</title>
+    <subtitle></subtitle>
+    <track>Jabber+XMPP</track>
+    <type>Podium</type>
+    <language>English</language>
+    <abstract>BoFs, lightning talks around Jabber/XMPP.</abstract>
+    <description></description>
+    <persons>
+     <person id="22">Peter Saint-Andre</person>
+    </persons>
+    <links>
+    </links>
+   </event>
+  </room>
+  <room name="AW1.121">
+   <event id="702">
+    <start>13:00</start>
+    <duration>01:00</duration>
+    <room>AW1.121</room>
+    <tag>debian_video_team</tag>
+    <title>Outside broadcast on a budget - the DebConf video team and DVswitch</title>
+    <subtitle></subtitle>
+    <track>Debian</track>
+    <type>Podium</type>
+    <language>English</language>
+    <abstract>We discuss the provisions of video coverage of [http://www.debconf.org/ DebConf] and Debian mini-conferences, starting in 2005. In particular, we describe the development of supporting software from simple scripts to a software video mixer and database of recordings with a web front-end.</abstract>
+    <description></description>
+    <persons>
+     <person id="608">Ben Hutchings</person>
+     <person id="163">Holger Levsen</person>
+    </persons>
+    <links>
+     <link href="http://dvswitch.alioth.debian.org/wiki/">DVswitch</link>
+    </links>
+   </event>
+   <event id="703">
+    <start>14:00</start>
+    <duration>01:00</duration>
+    <room>AW1.121</room>
+    <tag>debian_ultimate_database</tag>
+    <title>Ultimate Debian Database: datamining Debian made easy!</title>
+    <subtitle></subtitle>
+    <track>Debian</track>
+    <type>Podium</type>
+    <language>English</language>
+    <abstract>Ultimate Debian Database (UDD) gathers a lot of data about various aspects of Debian in an SQL database. It allows users to easily access and combine all this data.</abstract>
+    <description>We will describe the current status of UDD, explain how you can make use of it, and give some examples of cool stuff that you can already learn about Debian using it and ways it could be used to improve Quality Assurance in Debian</description>
+    <persons>
+     <person id="609">Stefano Zacchiroli</person>
+     <person id="152">Lucas Nussbaum</person>
+    </persons>
+    <links>
+    </links>
+   </event>
+   <event id="704">
+    <start>15:00</start>
+    <duration>01:00</duration>
+    <room>AW1.121</room>
+    <tag>debian_data_export</tag>
+    <title>Introducing DDE, Debian Data Export</title>
+    <subtitle></subtitle>
+    <track>Debian</track>
+    <type>Podium</type>
+    <language>English</language>
+    <abstract>DDE (Debian Data Export) is a simple interface to remotely access Debian information.</abstract>
+    <description>It is designed to be simple to query, and to back the implementation of nice things such as package name autocompletion on all input fields in Debian web pages, or to make more data easily available to Debian utilities and package managers.\r
+\r
+On top of all that, it is a RESTful Web 2.0 middleware designed        to enable AJAX mashups. What more can you ask? Come and have a look.</description>
+    <persons>
+     <person id="158">Enrico Zini</person>
+    </persons>
+    <links>
+    </links>
+   </event>
+   <event id="706">
+    <start>16:00</start>
+    <duration>01:00</duration>
+    <room>AW1.121</room>
+    <tag>debian_openmoko</tag>
+    <title>The Debian status quo on the Openmoko Neo Freerunner</title>
+    <subtitle></subtitle>
+    <track>Debian</track>
+    <type>Podium</type>
+    <language>English</language>
+    <abstract>Because Debian calls itself "the universal operating system", it was inevitable that it would have come to the first F/LOSS-friendly mobile phone, the Openmoko Neo FreeRunner.</abstract>
+    <description>Debian on the Openmoko FreeRunner is not a new port nor a new distribution, but instead a different underlying system for the various Openmoko distributions (originally based on     OpenEmbedded). At the moment the Debian FreeSmartphone.Org team has focused its works mainly on the FreeSmartphone.Org stack, which is intended not only for the Openmoko devices, but as a general stack for all mobile phones.</description>
+    <persons>
+     <person id="610">Luca Capello</person>
+    </persons>
+    <links>
+    </links>
+   </event>
+   <event id="705">
+    <start>17:00</start>
+    <duration>00:30</duration>
+    <room>AW1.121</room>
+    <tag>debian_nas</tag>
+    <title>Running Debian on Inexpensive Network Storage Devices</title>
+    <subtitle></subtitle>
+    <track>Debian</track>
+    <type>Podium</type>
+    <language>English</language>
+    <abstract>Network Storage Devices (NAS) are gaining popularity and are available quite inexpensively. For most customers, they are basically just a hard drive that you connect to the network for file storage. In reality, these devices are complete, even if fairly low-end, computers - and Debian can be installed on some of them.</abstract>
+    <description>This talk will discuss a number of devices that are currently supported and cover some platforms that may be supported in the future.</description>
+    <persons>
+     <person id="160">Martin Michlmayr</person>
+    </persons>
+    <links>
+    </links>
+   </event>
+   <event id="707">
+    <start>17:30</start>
+    <duration>00:45</duration>
+    <room>AW1.121</room>
+    <tag>debian_grid</tag>
+    <title>Grid Computing with Debian, Globus and ARC</title>
+    <subtitle></subtitle>
+    <track>Debian</track>
+    <type>Podium</type>
+    <language>English</language>
+    <abstract>Grid Computing with Debian, Globus and ARC - collaborations in high-performance computing beyond programming and packaging.</abstract>
+    <description>Debian is known for being developed from its userbase. The individuals mutually trust each other, implemented mechanisms for peer review and have the technical support for authorisation and authentication. This way, the workload to provide the software packages for the compute infrastructure is shouldered by many individuals. Grid computing takes this collaboration further. Here, research groups offer access to their local resources not only to other research groups, but they may even grant the right to admit users to virtual organisations - much like the Debian keyring.\r
+\r
+The presentation presents an overview on current grid middleware and computational grids established. The Globus grid middleware and its Debian packaging are explained, together with the packages of the Advanced Resource Connector (ARC). \r
+\r
+Today, the most usecases of the technology are the sharing of the computational resources like plain compute power or storage. With the advent of these packages in the Debian main distribution, the adoption of these packages is expected to become more of a commodity to exchange computational workflows, share the burden to maintain rapidly changing data, or control the limited access to special hardware.\r
+\r
+The speakers are researchers at the Universities of Copenhagen, Lübeck and Uppsala. With funds from several national and international projects in high-energy physics or grid computing, the three are contributing to the development of the ARC grid middleware - and for the provisioning of its Debian packages.</description>
+    <persons>
+     <person id="612">Anders Wäänänen</person>
+     <person id="611">Steffen Möller</person>
+     <person id="613">Mattias Ellert</person>
+    </persons>
+    <links>
+    </links>
+   </event>
+   <event id="708">
+    <start>18:15</start>
+    <duration>00:45</duration>
+    <room>AW1.121</room>
+    <tag>debian_dpl</tag>
+    <title>What does the DPL do?</title>
+    <subtitle></subtitle>
+    <track>Debian</track>
+    <type>Podium</type>
+    <language>English</language>
+    <abstract>After being the person in the hot seat for most of a year, Steve wants to give some details about how the job works and how he thinks it should work.</abstract>
+    <description>This is *not* meant to be an early start to an election campaign, but instead an objective discussion of the role of the DPL within the Debian Project.</description>
+    <persons>
+     <person id="614">Steve McIntyre</person>
+    </persons>
+    <links>
+    </links>
+   </event>
+  </room>
+  <room name="AW1.124">
+   <event id="536">
+    <start>13:00</start>
+    <duration>00:15</duration>
+    <room>AW1.124</room>
+    <tag>ada_informal_discussions</tag>
+    <title>Welcome to the Ada devroom</title>
+    <subtitle></subtitle>
+    <track>Ada</track>
+    <type>Podium</type>
+    <language>English</language>
+    <abstract>Welcome talk and Ada informal discussions (Adalog and Adacore Stands)</abstract>
+    <description></description>
+    <persons>
+     <person id="647">Dirk Craeynest</person>
+    </persons>
+    <links>
+    </links>
+   </event>
+   <event id="646">
+    <start>13:15</start>
+    <duration>00:45</duration>
+    <room>AW1.124</room>
+    <tag>ada_bof_0</tag>
+    <title>Ada Break: Questions and Free Discussions</title>
+    <subtitle></subtitle>
+    <track>Ada</track>
+    <type>Other</type>
+    <language>English</language>
+    <abstract>Lunch break and informal discussions.</abstract>
+    <description></description>
+    <persons>
+     <person id="622">Valentine Reboul</person>
+    </persons>
+    <links>
+    </links>
+   </event>
+   <event id="535">
+    <start>14:00</start>
+    <duration>01:00</duration>
+    <room>AW1.124</room>
+    <tag>ada_intro</tag>
+    <title>Introduction to Ada for Beginning or Experienced Programmers</title>
+    <subtitle></subtitle>
+    <track>Ada</track>
+    <type>Podium</type>
+    <language>English</language>
+    <abstract>This presentation exposes the main features of the Ada language, with special emphasis on the features that make it especially attractive for free software development.</abstract>
+    <description></description>
+    <persons>
+     <person id="502">Jean-Pierre Rosen</person>
+    </persons>
+    <links>
+     <link href="http://www.adalog.fr/compo2.htm">Free software from Adalog</link>
+    </links>
+   </event>
+   <event id="537">
+    <start>15:00</start>
+    <duration>01:00</duration>
+    <room>AW1.124</room>
+    <tag>ada_gps</tag>
+    <title>GNAT Programming Studio</title>
+    <subtitle></subtitle>
+    <track>Ada</track>
+    <type>Podium</type>
+    <language>English</language>
+    <abstract>[https://libre.adacore.com/gps GPS, the GNAT Programming Studio], is a powerful and simple-to-use Integrated Development Environment that serves as portal to the GNAT toolchain.</abstract>
+    <description>It provides customizable settings, browsing, syntax-directed editing, easy integration with third party tools such as Version Control Systems, source navigation, dependency graphs, and more.  Built entirely in Ada, GPS is designed to allow programmers to get the most out of GNAT technology.</description>
+    <persons>
+     <person id="503">Vincent Celier</person>
+    </persons>
+    <links>
+     <link href="http://www.adacore.com/2008/11/19/gps-43">GPS 4.3</link>
+    </links>
+   </event>
+   <event id="538">
+    <start>16:00</start>
+    <duration>01:00</duration>
+    <room>AW1.124</room>
+    <tag>ada_in_debian</tag>
+    <title>Ada in Debian</title>
+    <subtitle></subtitle>
+    <track>Ada</track>
+    <type>Podium</type>
+    <language>English</language>
+    <abstract>Ludovic Brenta will explain his work as the principal maintainer of Ada in [http://www.debian.org Debian], and the [http://www.ada-france.org/debian/debian-ada-policy.html policy that unites all Ada packages], thereby making Debian the best free Ada development platform in the world.</abstract>
+    <description>The Debian Project is an association of individuals who have made common cause to create a free operating system. The development processes are open to the public and anyone can contribute. The strict Debian Free Software Guidelines are the basis of the Open Source Definition. The resulting operating system consists of tens of thousands of Free Software packages and is renowned for its reliability, thanks to Debian's extensive quality assurance policy.\r
+\r
+Debian GNU/Linux supports 12 hardware architectures and 4 more are in various stages of development. Debian GNU/Hurd, Debian GNU/NetBSD and Debian GNU/kFreeBSD are works in progress. Several other distributions use Debian as their foundation.</description>
+    <persons>
+     <person id="504">Ludovic Brenta</person>
+    </persons>
+    <links>
+    </links>
+   </event>
+   <event id="539">
+    <start>17:00</start>
+    <duration>01:00</duration>
+    <room>AW1.124</room>
+    <tag>ada_annex_e</tag>
+    <title>Ada Annex E - Distributed Systems</title>
+    <subtitle></subtitle>
+    <track>Ada</track>
+    <type>Podium</type>
+    <language>English</language>
+    <abstract>The [http://www.adaic.com/standards/05rm/html/RM-E.html Distributed Systems Annex] is an optional part of the Ada language that allows writing programs that are distributed across several computers.</abstract>
+    <description>Each "partition" of the program, running on one machine, communicates with the others by means of remote procedure calls and shared data structures.  Ada provides facilities to make this communication completely transparent to the programmer. Thanks to it, writing a distributed program is no more complex than writing a monolithic one. Indeed, it is possible to recompile a distributed program to make it either distributed or monolithic with no changes to the program source. There are two Free Software implementations of Annex E for GNAT, the GNU Ada compiler: GLADE and its successor [https://libre.adacore.com/polyorb PolyORB], both licensed under terms of the GPL.</description>
+    <persons>
+     <person id="505">Thomas Quinot</person>
+    </persons>
+    <links>
+    </links>
+   </event>
+   <event id="541">
+    <start>18:00</start>
+    <duration>01:00</duration>
+    <room>AW1.124</room>
+    <tag>ada_narval</tag>
+    <title>NARVAL - Distributed Data Acquisition from Particle</title>
+    <subtitle></subtitle>
+    <track>Ada</track>
+    <type>Podium</type>
+    <language>English</language>
+    <abstract>NARVAL stands for "Nouvelle Acquisition temps Reel Version 1.6 Avec Linux". It is a distributed data acquisition software system that collects and processes data from nuclear and particles physics detectors.</abstract>
+    <description>NARVAL replaces an older system based on C, Fortran and proprietary technologies with Ada and Debian GNU/Linux and is itself Free Software.  In order to ensure maximum data safety most of the program is written in Ada with heavy use of Annex E, the Distributed Systems Annex.  Software engineers and physicists from several countries use this system for fundamental research. The talk will present the NARVAL architecture in detail with some focus on the multi-tasking dataflow core and the configuration done through Annex E.</description>
+    <persons>
+     <person id="506">Xavier Grave</person>
+    </persons>
+    <links>
+     <link href="http://www.in2p3.fr">Centre National de la Recherche Scientifique</link>
+    </links>
+   </event>
+  </room>
+  <room name="AW1.125">
+   <event id="647">
+    <start>13:15</start>
+    <duration>00:30</duration>
+    <room>AW1.125</room>
+    <tag>java_state_openjdk</tag>
+    <title>The state of OpenJDK &amp; OpenJDK6</title>
+    <subtitle></subtitle>
+    <track>Free Java</track>
+    <type>Podium</type>
+    <language>English</language>
+    <abstract>A summary of the past year's accomplishments, some views on what remains to be done, and a look ahead to the content of JDK 7 and the process by which it will be developed.</abstract>
+    <description>And where are we with OpenJDK 6 today and where will we go tomorrow? The origins and initial design decision of the project will be discussed and well as possible future directions of the project.</description>
+    <persons>
+     <person id="559">Joe Darcy</person>
+     <person id="113">Mark Reinhold</person>
+    </persons>
+    <links>
+    </links>
+   </event>
+   <event id="648">
+    <start>13:45</start>
+    <duration>00:30</duration>
+    <room>AW1.125</room>
+    <tag>java_jigsaw</tag>
+    <title>Project Jigsaw</title>
+    <subtitle></subtitle>
+    <track>Free Java</track>
+    <type>Podium</type>
+    <language>English</language>
+    <abstract>One of the most significant changes in JDK 7 will be to modularize the code base, to modularize the platform, and to enable the modularization of applications, all via [http://blogs.sun.com/mr/entry/jigsaw Project Jigsaw].</abstract>
+    <description>Mark will discuss how the introduction of language-level modules, in concert with corresponding updates to the tool chain and the runtime environment, should to allow applications and libraries written in Java to be distributed as sensible and familiar [http://blogs.sun.com/mr/entry/packaging_java_code distro-specific packages].</description>
+    <persons>
+     <person id="113">Mark Reinhold</person>
+    </persons>
+    <links>
+     <link href="http://blogs.sun.com/mr/entry/jigsaw">Project Jigsaw</link>
+     <link href="http://blogs.sun.com/mr/entry/packaging_java_code">http://blogs.sun.com/mr/entry/packaging_java_code</link>
+    </links>
+   </event>
+   <event id="649">
+    <start>14:15</start>
+    <duration>00:30</duration>
+    <room>AW1.125</room>
+    <tag>java_small_changes</tag>
+    <title>Small Language Changes</title>
+    <subtitle></subtitle>
+    <track>Free Java</track>
+    <type>Podium</type>
+    <language>English</language>
+    <abstract>In addition to modularity support, JDK 7 is also planned to have a number of small language changes. Unlike previous JSRs to change the Java programming language, this project will be taking input from a public call for proposals phase.</abstract>
+    <description>Joe will be talking about criteria developed to evaluate language changes and the current status of the project.</description>
+    <persons>
+     <person id="559">Joe Darcy</person>
+    </persons>
+    <links>
+    </links>
+   </event>
+   <event id="650">
+    <start>15:00</start>
+    <duration>00:30</duration>
+    <room>AW1.125</room>
+    <tag>java_state_icedtea</tag>
+    <title>The state of IcedTea</title>
+    <subtitle></subtitle>
+    <track>Free Java</track>
+    <type>Podium</type>
+    <language>English</language>
+    <abstract>Objective: To introduce IcedTea and lead into the talks given by the other IcedTea developers present.</abstract>
+    <description>Where is IcedTea now? What has happened since FOSDEM 2008? \r
+* History of IcedTea \r
+* Progress \r
+* Releases \r
+* Improved community relationships \r
+\r
+What is the difference between (proper) OpenJDK and IcedTea? \r
+* Javaws (demo), visualvm (demo) \r
+* PulseAudio/Gervill integration\r
+\r
+Mauve and JTreg comparisons with OpenJDK. \r
+\r
+Packaging for Fedora \r
+* process \r
+* patches that need to be applied \r
+* specifics on building \r
+\r
+Looking forward\r
+* What are we doing now? where are we going? \r
+* How what we complained about last year at FOSDEM has been acknowledged and fixed (patches, repositories)</description>
+    <persons>
+     <person id="297">Lillian Angel</person>
+    </persons>
+    <links>
+    </links>
+   </event>
+   <event id="651">
+    <start>15:30</start>
+    <duration>00:30</duration>
+    <room>AW1.125</room>
+    <tag>java_icedtea_plugin</tag>
+    <title>The IcedTea Plugin</title>
+    <subtitle></subtitle>
+    <track>Free Java</track>
+    <type>Podium</type>
+    <language>English</language>
+    <abstract>This talk is about the IcedTea Java Web Browser Plugin.</abstract>
+    <description>It will be mostly technical -- starting off with the need for the plugin and it's history.  It will then delve into the elements of plugin design, and implementation details affecting speed, security and reliability.\r
+\r
+Finally, it will also cover known limitations, and future plans to fix those limitations.</description>
+    <persons>
+     <person id="560">Deepak Bhole</person>
+    </persons>
+    <links>
+    </links>
+   </event>
+   <event id="652">
+    <start>16:00</start>
+    <duration>00:30</duration>
+    <room>AW1.125</room>
+    <tag>java_jalimo</tag>
+    <title>Jalimo: Cross-compiling OpenJDK using IcedTea and OpenEmbedded</title>
+    <subtitle></subtitle>
+    <track>Free Java</track>
+    <type>Podium</type>
+    <language>English</language>
+    <abstract>A lightning talk about our work on getting OpenJDK cross-compiled using IcedTea and OpenEmbedded as part of the [https://wiki.evolvis.org/jalimo/index.php/Main_Page Jalimo project].</abstract>
+    <description></description>
+    <persons>
+     <person id="303">Robert Schuster</person>
+    </persons>
+    <links>
+    </links>
+   </event>
+   <event id="653">
+    <start>16:45</start>
+    <duration>00:30</duration>
+    <room>AW1.125</room>
+    <tag>java_caciocavallo</tag>
+    <title>How to port a Java GUI backend to a new platform using Caciocavallo</title>
+    <subtitle></subtitle>
+    <track>Free Java</track>
+    <type>Podium</type>
+    <language>English</language>
+    <abstract>Mario and Roman will give an overview of the [http://openjdk.java.net/projects/caciocavallo/ Caciocavallo] architecture and show how to implement a new Java GUI backend. \r
+\r
+They will also show some working examples.</abstract>
+    <description></description>
+    <persons>
+     <person id="299">Mario Torre</person>
+     <person id="423">Roman Kennke</person>
+    </persons>
+    <links>
+     <link href="http://openjdk.java.net/projects/caciocavallo/">Caciocavallo: Portable GUI Backends</link>
+    </links>
+   </event>
+   <event id="654">
+    <start>17:15</start>
+    <duration>00:30</duration>
+    <room>AW1.125</room>
+    <tag>java_opengl_es</tag>
+    <title>OpenGL ES to boost embedded Java</title>
+    <subtitle></subtitle>
+    <track>Free Java</track>
+    <type>Podium</type>
+    <language>English</language>
+    <abstract>This talk will present status and usage of OpenGL ES in the embedded Java world.</abstract>
+    <description>* Available OpenGL ES implementations and Java bindings \r
+* Compatibility with existing Java environments \r
+* Application development with OpenGL ES: games and clutter-like user interfaces \r
+* OpenGL ES as backend for graphical libraries (MIDP, LWUIT, AWT)</description>
+    <persons>
+     <person id="287">Guillaume Legris</person>
+    </persons>
+    <links>
+    </links>
+   </event>
+   <event id="655">
+    <start>17:45</start>
+    <duration>00:30</duration>
+    <room>AW1.125</room>
+    <tag>java_xrender</tag>
+    <title>XRender Java2D Pipeline</title>
+    <subtitle></subtitle>
+    <track>Free Java</track>
+    <type>Podium</type>
+    <language>English</language>
+    <abstract>- Overview over the current X11 pipeline and xorg enhancements and the problems they cause for Java.\r
+- Short introduction into XRender's features and how it maps to Java2D's functionality.\r
+- Presentation of the existing Java/C based implementation that was created at the OpenJDK Challenge\r
+- Future development, goals and design of the new pure Java based pipeline.</abstract>
+    <description></description>
+    <persons>
+     <person id="561">Clemens Eisserer</person>
+    </persons>
+    <links>
+     <link href="http://78.31.67.79:8080/jxrender/">http://78.31.67.79:8080/jxrender/</link>
+     <link href="http://linuxhippy.blogspot.com/">Blog</link>
+    </links>
+   </event>
+   <event id="656">
+    <start>18:15</start>
+    <duration>00:30</duration>
+    <room>AW1.125</room>
+    <tag>java_gervill</tag>
+    <title>Gervill Software Synthesizer</title>
+    <subtitle></subtitle>
+    <track>Free Java</track>
+    <type>Podium</type>
+    <language>English</language>
+    <abstract>The [https://gervill.dev.java.net/ Gervill Software Synthesizer].</abstract>
+    <description>* How it began \r
+* History of progress \r
+* Performance \r
+* Future improvements \r
+\r
+And if possible some demonstrations.</description>
+    <persons>
+     <person id="562">Karl Helgason</person>
+    </persons>
+    <links>
+    </links>
+   </event>
+  </room>
+  <room name="AW1.126">
+   <event id="767">
+    <start>13:00</start>
+    <duration>00:15</duration>
+    <room>AW1.126</room>
+    <tag>ooo_welcome</tag>
+    <title>Welcome to the OpenOffice.org devroom</title>
+    <subtitle></subtitle>
+    <track>OpenOffice.org</track>
+    <type>Other</type>
+    <language>English</language>
+    <abstract>Welcome to the OpenOffice.org developer room at FOSDEM 2009.</abstract>
+    <description></description>
+    <persons>
+     <person id="272">Jürgen Schmidt</person>
+    </persons>
+    <links>
+    </links>
+   </event>
+   <event id="717">
+    <start>13:15</start>
+    <duration>01:00</duration>
+    <room>AW1.126</room>
+    <tag>ooo_uno</tag>
+    <title>UNO: Anecdotal Evidence</title>
+    <subtitle></subtitle>
+    <track>OpenOffice.org</track>
+    <type>Podium</type>
+    <language>English</language>
+    <abstract>UNO is the object model underlying OpenOffice.org. With its by now long and winding history, this might be a good time to reflect on its design and implementation, its shortcomings and strengths.</abstract>
+    <description>In this talk we will look at details in various areas of UNO, tell the occasional anecdote, and generally have fun.</description>
+    <persons>
+     <person id="270">Stephan Bergmann</person>
+    </persons>
+    <links>
+    </links>
+   </event>
+   <event id="718">
+    <start>14:15</start>
+    <duration>01:00</duration>
+    <room>AW1.126</room>
+    <tag>ooo_java</tag>
+    <title>Introduction to Java development with OpenOffice.org</title>
+    <subtitle></subtitle>
+    <track>OpenOffice.org</track>
+    <type>Podium</type>
+    <language>English</language>
+    <abstract>OpenOffice.org entry barrier is quite high - people need lot of time to learn how to develop for the OpenOffice.org. This talk is more or less theoretical and it tries to cover all possible areas.</abstract>
+    <description>We will define common terms, describe UNO Java bridge, go through documentation and explain how to read it, where to find information we need. Introspection interface with tool examples will be described too. And finally, we will take a look at the OpenOffice.org on the server. This talk should lower entry barrier for developers and prepare them for OpenOffice.org development.</description>
+    <persons>
+     <person id="620">Robert Vojta</person>
+    </persons>
+    <links>
+    </links>
+   </event>
+   <event id="719">
+    <start>15:15</start>
+    <duration>02:00</duration>
+    <room>AW1.126</room>
+    <tag>ooo_extensions_in_java</tag>
+    <title>OpenOffice.org Extensions in Java – do it yourself</title>
+    <subtitle></subtitle>
+    <track>OpenOffice.org</track>
+    <type>Workshop</type>
+    <language>English</language>
+    <abstract>The workshop focused on the creation of an extension in Java with the OpenOffice.org API plugin for NetBeans. The attendees can choose if they want to create a smart tag, or an options page demo or if they want to create a weather forecast demo.</abstract>
+    <description>Two of the demos make use of external functionality and show how easy it can be to  make use of web services or external libraries. The attendees will by guided through a detailed tutorial and will create their extension of choice step by step.\r
+Ideally the attendees should bring their own laptop into the workshop. And they should have installed NetBeans 6.5, Java 1.6, OpenOfice.org and the OpenOffice.org SDK. A CD with installation programs for the common platforms and the whole workshop material will be available in the workshop room as well. \r
+\r
+If you have no laptop, no problem watch your neighbour over the shoulder and work together. Or simply listen and watch what the speaker is doing ;-)</description>
+    <persons>
+     <person id="272">Jürgen Schmidt</person>
+    </persons>
+    <links>
+    </links>
+   </event>
+   <event id="720">
+    <start>17:15</start>
+    <duration>01:00</duration>
+    <room>AW1.126</room>
+    <tag>ooo_gfx_hackers</tag>
+    <title>Layout &amp; Canvas &amp; Slideshow - selected topics for the graphics hackers</title>
+    <subtitle></subtitle>
+    <track>OpenOffice.org</track>
+    <type>Podium</type>
+    <language>English</language>
+    <abstract>This talk will give an introduction to areas inside OOo amenable to graphics hackers - stuff that has the desirable property of instant visual gratification.</abstract>
+    <description>Layout: there's currently work underway to give OOo's dialogs an auto-layouting facility. Besides work on the layouting core, there's also help solicited for converting existing dialogs to the new layout-enabled scheme.\r
+\r
+Canvas: the new OOo rendering subsystem, and what it can do; showing a prototype of an OpenGL-based implementation plus pointers where interested hackers can start helping Slideshow: probably the easiest way to make an impact to millions of OOo users is to code another Impress 3D slide transition – here's how to do that.</description>
+    <persons>
+     <person id="271">Thorsten Behrens</person>
+    </persons>
+    <links>
+    </links>
+   </event>
+   <event id="788">
+    <start>18:15</start>
+    <duration>00:30</duration>
+    <room>AW1.126</room>
+    <tag>ooo_bug_hunting</tag>
+    <title>OOo Bug hunting and fixing</title>
+    <subtitle></subtitle>
+    <track>OpenOffice.org</track>
+    <type>Workshop</type>
+    <language>English</language>
+    <abstract></abstract>
+    <description></description>
+    <persons>
+     <person id="272">Jürgen Schmidt</person>
+    </persons>
+    <links>
+    </links>
+   </event>
+  </room>
+  <room name="H.3227">
+  </room>
+  <room name="Guillissen">
+   <event id="529">
+    <start>14:00</start>
+    <duration>01:30</duration>
+    <room>Guillissen</room>
+    <tag>lpi_1</tag>
+    <title>LPI exam session 1</title>
+    <subtitle></subtitle>
+    <track>LPI Certification</track>
+    <type>Other</type>
+    <language>English</language>
+    <abstract>LPI exam session #1</abstract>
+    <description></description>
+    <persons>
+     <person id="42">Klaus Behrla</person>
+    </persons>
+    <links>
+    </links>
+   </event>
+   <event id="530">
+    <start>16:00</start>
+    <duration>01:30</duration>
+    <room>Guillissen</room>
+    <tag>lpi_2</tag>
+    <title>LPI exam session 2</title>
+    <subtitle></subtitle>
+    <track>LPI Certification</track>
+    <type>Other</type>
+    <language>English</language>
+    <abstract>LPI exam session #2</abstract>
+    <description></description>
+    <persons>
+     <person id="42">Klaus Behrla</person>
+    </persons>
+    <links>
+    </links>
+   </event>
+  </room>
+ </day>
+ <day date="2009-02-08" index="2">
+  <room name="Janson">
+   <event id="786">
+    <start>10:00</start>
+    <duration>01:00</duration>
+    <room>Janson</room>
+    <tag>cobbler_koan</tag>
+    <title>Cobbler &amp; Koan</title>
+    <subtitle></subtitle>
+    <track>Systems</track>
+    <type>Podium</type>
+    <language>English</language>
+    <abstract>During this talk, we aim to give you an overview of the Cobbler project,\r
+explain where we'd like to see it going and explain a few use cases.</abstract>
+    <description>Cobbler is an installation server, written in Python, which allows for rapid\r
+deployment (and re-deployment) of large amounts of physical and virtual\r
+machines by defining distributions, repositories, profiles and systems as\r
+objects. It's easy to get started with Cobbler, but we ship a lot of\r
+advanced features to make it as versatile as possible, so you won't get\r
+bored with it.</description>
+    <persons>
+     <person id="572">Robert Lazzurs</person>
+     <person id="573">Jasper Capel</person>
+    </persons>
+    <links>
+     <link href="https://fedorahosted.org/cobbler/">Cobbler project</link>
+    </links>
+   </event>
+   <event id="495">
+    <start>11:00</start>
+    <duration>01:00</duration>
+    <room>Janson</room>
+    <tag>mysql_ha</tag>
+    <title>MySQL High Availability Solutions</title>
+    <subtitle></subtitle>
+    <track>Systems</track>
+    <type>Podium</type>
+    <language>English</language>
+    <abstract>There are many ways of how to ensure the availability of a MySQL Server and how to provide additional redundancy and fault-tolerance.\r
+\r
+In this talk, Lenz will give an overview over some best practices and commonly used HA setups for MySQL.</abstract>
+    <description>The talk will cover the Open Source components and tools that are frequently utilized, with a focus on Linux and OpenSolaris. The session will also cover MySQL Cluster, the architecture and relationship to the MySQL Server.</description>
+    <persons>
+     <person id="58">Lenz Grimmer</person>
+    </persons>
+    <links>
+    </links>
+   </event>
+   <event id="509">
+    <start>12:00</start>
+    <duration>01:00</duration>
+    <room>Janson</room>
+    <tag>upstart</tag>
+    <title>Upstart</title>
+    <subtitle></subtitle>
+    <track>Systems</track>
+    <type>Podium</type>
+    <language>English</language>
+    <abstract>This talk takes a trip along the Roadmap for Upstart 1.0, introducing\r
+ what features will be available.</abstract>
+    <description>Linux has always traditionally lacked good service management\r
+ facilities, so much so that the typical daemon doesn't use what ones we\r
+ have and instead relies on hokey shell scripts.\r
+\r
+ Upstart is being developed to not only solve this problem but also how\r
+ it, through integration with D-Bus, DeviceKit and similar frameworks,\r
+ allows service lifecycles to be tied to hardware and system state.</description>
+    <persons>
+     <person id="481">Scott James Remnant</person>
+    </persons>
+    <links>
+     <link href="http://upstart.ubuntu.com/">Official website</link>
+     <link href="http://en.wikipedia.org/wiki/Upstart">Wikipedia entry</link>
+    </links>
+   </event>
+   <event id="506">
+    <start>14:00</start>
+    <duration>01:00</duration>
+    <room>Janson</room>
+    <tag>syslinux</tag>
+    <title>Syslinux and the dynamic x86 boot process</title>
+    <subtitle></subtitle>
+    <track>Kernel</track>
+    <type>Podium</type>
+    <language>English</language>
+    <abstract>This talk will discuss the x86 boot process, how to make it work in a\r
+dynamic system, and the tradeoffs between versatility and reliability.\r
+It will also discuss the Syslinux modular interface and how to use it\r
+to quickly add new features with a minimum of coding.</abstract>
+    <description>Originally written during an all-night hacking session in 1994 with\r
+the intent to better support the then-ubiquitous install boot\r
+floppies, Syslinux has evolved over the years into a widely used boot\r
+loader suite with an advanced modular interface, with emphasis on ease\r
+of use and reliability. It is now the most commonly used x86\r
+bootloader for removable media, and is increasingly used for\r
+conventional hard disk booting as well.</description>
+    <persons>
+     <person id="478">H. Peter Anvin</person>
+    </persons>
+    <links>
+    </links>
+   </event>
+   <event id="507">
+    <start>15:00</start>
+    <duration>01:00</duration>
+    <room>Janson</room>
+    <tag>ext4</tag>
+    <title>Ext4</title>
+    <subtitle></subtitle>
+    <track>Kernel</track>
+    <type>Podium</type>
+    <language>English</language>
+    <abstract>This presentation will discuss history of ext4, its features and advantages, and how\r
+best to use the ext4 filesystem.</abstract>
+    <description>The latest generation of the ext2/ext3 filesystems is the ext4\r
+filesystem, which recently left the development status of 2.6.28.\r
+With extents, delayed allocation, multiblock allocation, persistent\r
+preallocation, and its other new features, it is substantally faster\r
+and more efficient compared to the ext3 filesystem.</description>
+    <persons>
+     <person id="479">Theodore Ts'o</person>
+    </persons>
+    <links>
+     <link href="http://ext4.wiki.kernel.org/index.php/Main_Page">Official website</link>
+     <link href="http://en.wikipedia.org/wiki/Ext4">Wikipedia entry</link>
+    </links>
+   </event>
+   <event id="508">
+    <start>16:00</start>
+    <duration>01:00</duration>
+    <room>Janson</room>
+    <tag>slow</tag>
+    <title>Help my system is slow...</title>
+    <subtitle></subtitle>
+    <track>Kernel</track>
+    <type>Podium</type>
+    <language>English</language>
+    <abstract></abstract>
+    <description>An understanding of the nature of your system workload is an important \r
+step in optimizing it for maximum performance on your hardware.  I will \r
+discuss some useful tools and techniques for evaluating the workload of \r
+your FreeBSD system, and identifying the bottlenecks that are limiting \r
+performance.</description>
+    <persons>
+     <person id="480">Kris Kennaway</person>
+    </persons>
+    <links>
+    </links>
+   </event>
+   <event id="494">
+    <start>17:15</start>
+    <duration>01:00</duration>
+    <room>Janson</room>
+    <tag>gsoc</tag>
+    <title>Google Summer of Code: A Behind the Scenes Look at Large Scale Community Management</title>
+    <subtitle></subtitle>
+    <track>Keynotes</track>
+    <type>Podium</type>
+    <language>English</language>
+    <abstract>Ever wondered what it takes to make a community of more than 180 F/LOSS\r
+projects and 5,000+ geeks create great software?</abstract>
+    <description>In this talk, Leslie Hawthorn will explore the successes and setbacks of [http://code.google.com/soc/ Google Summer of Code], the first global program\r
+designed to introduce University students to Free and Open Source software\r
+development practices and methodologies. Leslie will discuss the program's\r
+inception, history, and impact, and the evolving requirements for managing a\r
+large scale global community.  She will share lessons learned during the\r
+past three years as the program's Community Manager, with an eye to\r
+providing audience members with strategies for organizing their own\r
+community participation initiative, and provide attendees with an update on\r
+[http://code.google.com/p/soc/ Melange], the new work flow application\r
+designed to manage *Google Summer of Code* - or similar programs - and\r
+Google's first Open Source project developed in the open from the first\r
+commit.</description>
+    <persons>
+     <person id="469">Leslie Hawthorn</person>
+    </persons>
+    <links>
+     <link href="http://code.google.com/soc">Official website</link>
+    </links>
+   </event>
+  </room>
+  <room name="Chavanne">
+   <event id="643">
+    <start>10:00</start>
+    <duration>01:00</duration>
+    <room>Chavanne</room>
+    <tag></tag>
+    <title>OWASP Testing Guide v3 and Secure Software Development</title>
+    <subtitle></subtitle>
+    <track>Security</track>
+    <type>Podium</type>
+    <language>English</language>
+    <abstract>The speech goal is to show the OWASP testing methodology and how you\r
+can implement a software development lifecycle that permit to develop\r
+more secure applications.</abstract>
+    <description>The Open Web Application Security Project (OWASP) wants to deliver\r
+free tools and documentation for the Web Application Security.\r
+The talk will present the new OWASP Testing Guide v3 that includes a\r
+"best practice" penetration testing framework which users can\r
+implement in their own organizations and a "low level" penetration\r
+testing guide that describes techniques for testing most common web\r
+application and web service security issues. OWASP Testing Guide v3 is\r
+a 349 page book; we have split the set of active tests in 9\r
+sub-categories for a total of 66 controls to test during the Web\r
+Application Testing activity.</description>
+    <persons>
+     <person id="584">Matteo Meucci</person>
+    </persons>
+    <links>
+     <link href="http://www.owasp.org/index.php/Category:OWASP_Testing_Project">Official website</link>
+     <link href="http://www.owasp.org">OWASP Website</link>
+    </links>
+   </event>
+   <event id="493">
+    <start>11:00</start>
+    <duration>01:00</duration>
+    <room>Chavanne</room>
+    <tag>freeipa</tag>
+    <title>FreeIPA, Identity Management</title>
+    <subtitle></subtitle>
+    <track>Security</track>
+    <type>Podium</type>
+    <language>English</language>
+    <abstract>Free Software Identity Management challenges and technical details</abstract>
+    <description>The presentation will revolve around the problems of building a modern\r
+Free Software based Identity Management Solution. The challenges we\r
+faced in trying to combine security, ease of used, standards, features,\r
+and interoperability with other solutions. The choices we have made for\r
+the current code base, and the choices we are facing going forward.\r
+The vision and future directions.\r
+The presentation will introduce the public to the technologies used, the\r
+modifications or additions we performed and will dive into technical\r
+details about how we architect the server and the future client\r
+components.</description>
+    <persons>
+     <person id="468">Simo Sorce</person>
+    </persons>
+    <links>
+     <link href="http://freeipa.org/">Official website</link>
+     <link href="http://en.wikipedia.org/wiki/FreeIPA">Wikipedia entry</link>
+    </links>
+   </event>
+   <event id="496">
+    <start>12:00</start>
+    <duration>01:00</duration>
+    <room>Chavanne</room>
+    <tag>fusil</tag>
+    <title>Fusil</title>
+    <subtitle></subtitle>
+    <track>Security</track>
+    <type>Podium</type>
+    <language>English</language>
+    <abstract>The talk will present how a fuzzer is written and how it works. Then we will \r
+analyze a crash. And finally we will see how to report it to the vendor and \r
+typical vendor reactions.</abstract>
+    <description>Fusil the fuzzer is a Python library to write fuzzers and a collection of \r
+twenty specific fuzzers: ClamAV, Firefox, mplayer, poppler (PDF), etc. A \r
+simple fuzzer can crash most (all?) applications.</description>
+    <persons>
+     <person id="470">Victor Stinner</person>
+    </persons>
+    <links>
+     <link href="http://fusil.hachoir.org/trac">Official website</link>
+     <link href="http://fusil.hachoir.org/trac/wiki/CrashList">List of crashed programs</link>
+    </links>
+   </event>
+   <event id="502">
+    <start>14:00</start>
+    <duration>01:00</duration>
+    <room>Chavanne</room>
+    <tag>mediawiki</tag>
+    <title>MediaWiki</title>
+    <subtitle></subtitle>
+    <track>Collaboration</track>
+    <type>Podium</type>
+    <language>English</language>
+    <abstract>I'll be going over some of the particular UI and workflow issues in \r
+editing, media uploading, and other areas that we intend to tackle, \r
+summarize some of the existing work toward those ends, and give a \r
+preview our upcoming Wikipedia Usability Initiative.</abstract>
+    <description>MediaWiki was born in 2002, when Wikipedia's editing activity outgrew \r
+the concurrency limits of its original wiki engine. The first 6 years of \r
+this open-source wiki platform's development were largely devoted to \r
+scaling and performance, ensuring that the world's most editable online \r
+encyclopedia could keep up with the number of articles, visitors, and \r
+changes that come with being an insanely popular user-written site. But \r
+the user interface hasn't changed much since 2003; if anything, packing \r
+in more features has made many aspects of the wiki harder to use over time.\r
+\r
+In 2009, MediaWiki developers are turning their eye towards usability \r
+and design issues. As with the scaling problems we've tackled before, we \r
+have to be able to target anything from a tiny personal or intranet wiki \r
+to the massive Wikipedia sites, making a range of different use cases \r
+with different needs... It'll be fun!</description>
+    <persons>
+     <person id="474">Brion Vibber</person>
+    </persons>
+    <links>
+     <link href="http://www.mediawiki.org/wiki/MediaWiki">Official website</link>
+     <link href="http://en.wikipedia.org/wiki/Mediawiki">Wikipedia entry</link>
+    </links>
+   </event>
+   <event id="503">
+    <start>15:00</start>
+    <duration>01:00</duration>
+    <room>Chavanne</room>
+    <tag>zarafa</tag>
+    <title>Easy Integration with plugin frameworks for open source Zarafa Groupware and advanced replication</title>
+    <subtitle></subtitle>
+    <track>Collaboration</track>
+    <type>Podium</type>
+    <language>English</language>
+    <abstract>The Zarafa webaccess plugin system is aimed at allowing developers to add functionality to the Zarafa webaccess, while not requiring them to modify existing system files inside the core of the Zarafa WebAccess software.\r
\r
+Zarafa will show how to programm a module and shows the architecture integrations with open source solutions such as Alfresco and Sugarcrm and other community contributions.</abstract>
+    <description>The Zarafa webaccess plugin system is aimed at allowing developers to add functionality to the Zarafa WebAccess, while not requiring them to modify existing system files inside the core of the Zarafa WebAccess software.\r
\r
+Steve will show how to program a module and shows the architecture integrations with open source solutions such as Alfresco and Sugarcrm and other community contributions.</description>
+    <persons>
+     <person id="475">Steve Hardy</person>
+    </persons>
+    <links>
+    </links>
+   </event>
+   <event id="790">
+    <start>16:00</start>
+    <duration>01:00</duration>
+    <room>Chavanne</room>
+    <tag>caldav</tag>
+    <title>CalDAV - the open groupware  protocol</title>
+    <subtitle></subtitle>
+    <track>Collaboration</track>
+    <type>Podium</type>
+    <language>English</language>
+    <abstract>Introduction into the CalDAV protocol and related protocols. Overview on OpenSource CalDAV clients and servers, and on libraries for CalDAV development.\r
+Attempt to motivate people to implement IETF standard protocols instead of proprietrary ones.</abstract>
+    <description>CalDAV is a calendaring and scheduling client/server protocol designed to allow users to access calendar data on a server, and to schedule meetings with other users on that server or other servers.</description>
+    <persons>
+     <person id="500">Helge Heß</person>
+    </persons>
+    <links>
+    </links>
+   </event>
+  </room>
+  <room name="Ferrer">
+   <event id="512">
+    <start>10:00</start>
+    <duration>00:15</duration>
+    <room>Ferrer</room>
+    <tag>gnutls_intro</tag>
+    <title>Introduction to GnuTLS</title>
+    <subtitle></subtitle>
+    <track>Lightning Talks</track>
+    <type>Lightning-Talk</type>
+    <language>English</language>
+    <abstract>I'll introduce GnuTLS and mention it features over the competition, and talk about problems facing a free software project in an area which has many patents.</abstract>
+    <description>GnuTLS is a SSL/TLS implementation for the GNU system.  SSL/TLS is the network security protocol used by HTTPS, and numerus other network protocols to provide X.509, OpenPGP etc security.</description>
+    <persons>
+     <person id="483">Simon Josefsson</person>
+    </persons>
+    <links>
+     <link href="http://www.gnutls.org/">http://www.gnutls.org/</link>
+    </links>
+   </event>
+   <event id="514">
+    <start>10:15</start>
+    <duration>00:15</duration>
+    <room>Ferrer</room>
+    <tag>secure_list_server</tag>
+    <title>The Secure List Server: an OpenPGP and S/MIME aware Mailman</title>
+    <subtitle></subtitle>
+    <track>Lightning Talks</track>
+    <type>Lightning-Talk</type>
+    <language>English</language>
+    <abstract>The talk will start with a very short overview of the history of Mailman and\r
+the mailman-pgp-smime project.  Some remarks will be made on how to install and\r
+configure the software, so that one can try it.  Currently supported features\r
+will be mentioned, as well as an overview of development plans.  One will learn\r
+how to contribute to the project; an overview of the revision control system\r
+used will be given.  Some remarks on the future of the patch will be made: will\r
+it be shipped with Mailman itself?\r
+\r
+If you have used Mailman, both as a subscriber and as a list admin, and if\r
+you know what PGP and S/MIME are, you should definitely attend this talk.</abstract>
+    <description>he Secure List Server, mailman-pgp-smime, is an effort to add support for\r
+encryption and authentication to Mailman, the GNU mailing list software.  This\r
+enhancement enables groups of people to safely cooperate and communicate using\r
+email.  The patch includes support for both RFC 2633 (S/MIME) and RFC 2440 \r
+(OpenPGP) email messages.\r
+\r
+Development of the patch is made possible by the NLnet foundation.\r
+\r
+A post to a secure list will be distributed only if the PGP (or S/MIME)\r
+signature on the post is from one of the list members.  For sending encrypted\r
+email, a list member encrypts to the public key of the list.  The post will be\r
+decrypted and re-encrypted to the public keys of all list members.</description>
+    <persons>
+     <person id="486">Joost van Baal</person>
+    </persons>
+    <links>
+     <link href="http://non-gnu.uvt.nl/mailman-pgp-smime/">http://non-gnu.uvt.nl/mailman-pgp-smime/</link>
+    </links>
+   </event>
+   <event id="515">
+    <start>10:30</start>
+    <duration>00:15</duration>
+    <room>Ferrer</room>
+    <tag>jtrunner</tag>
+    <title>JTR Java Test Runner and Java Distributed Testing</title>
+    <subtitle></subtitle>
+    <track>Lightning Talks</track>
+    <type>Lightning-Talk</type>
+    <language>English</language>
+    <abstract>The talk will be focused on the main features delivered by the JTR Project that enable the seamless distribution of the full spectrum of test-suites that can be written to a set of JTR-enabled nodes making it easy performing distributed test sessions.</abstract>
+    <description>The JTR Project is a Java distributed testing framework conceived to fill a gap existing today most notably in the open-source world that’s the lack of a single tool that could help in developing from simple to complex test suites in Java with particular emphasis on the stack of backend-technologies embraced by the JEE specification.\r
+\r
+The JTR Framework is aimed at fastening the development of both functional and stress-test suites for verifying the requirements and robustness of both JSE and JEE projects. The JTR Framework supports you in writing components meant for testing:\r
+•standard JSE components / applications\r
+•EJBs conforming to both J2EE 2.x and JEE specifications\r
+•MOM-based JSE and JEE systems (JMS)\r
+•web-services (both document-based and rpc-like)</description>
+    <persons>
+     <person id="488">Francesco Russo</person>
+    </persons>
+    <links>
+     <link href="http://jtrunner.sourceforge.net">http://jtrunner.sourceforge.net</link>
+    </links>
+   </event>
+   <event id="516">
+    <start>11:00</start>
+    <duration>00:15</duration>
+    <room>Ferrer</room>
+    <tag>ipn_msockets</tag>
+    <title>Renew Berkeley Sockets API: IPN &amp; msockets</title>
+    <subtitle></subtitle>
+    <track>Lightning Talks</track>
+    <type>Lightning-Talk</type>
+    <language>English</language>
+    <abstract>We have found two main limitations in Berkeley Sockets API:\r
+(1) it has been designed to manage one stack per protocol family\r
+(2) there is not a protocol family supporting (fast) multicast for Inter Process Communication (among processes running on the same computer).\r
+The virtualsquare team proposes solutions for both problems:\r
+(1) the msocket call to support several stacks (implemented in lwipv6 and ipnet)\r
+(2) the IPN (inter process networking) protocol family.\r
+IPN can be used for many applications: midi, mpeg-ts dispatching, kernel based\r
+vde switches.</abstract>
+    <description>We have found two main limitations in Berkeley Sockets API:\r
+(1) it has been designed to manage one stack per protocol family\r
+(2) there is not a protocol family supporting (fast) multicast for Inter Process Communication (among processes running on the same computer).\r
+The virtualsquare team proposes solutions for both problems:\r
+(1) the msocket call to support several stacks (implemented in lwipv6 and ipnet)\r
+(2) the IPN (inter process networking) protocol family.\r
+IPN can be used for many applications: midi, mpeg-ts dispatching, kernel based\r
+vde switches.</description>
+    <persons>
+     <person id="490">Renzo Davoli</person>
+    </persons>
+    <links>
+     <link href="http://wiki.virtualsquare.org/index.php/IPN">http://wiki.virtualsquare.org/index.php/IPN</link>
+     <link href="http://wiki.virtualsquare.org/index.php/Multi_stack_support_for_Berkeley_Sockets">http://wiki.virtualsquare.org/index.php/Multi_stack_support_for_Berkeley_Sockets</link>
+    </links>
+   </event>
+   <event id="517">
+    <start>11:15</start>
+    <duration>00:15</duration>
+    <room>Ferrer</room>
+    <tag>modularit</tag>
+    <title>ModularIT: virtualiced and distributed modular services architecture</title>
+    <subtitle></subtitle>
+    <track>Lightning Talks</track>
+    <type>Lightning-Talk</type>
+    <language>English</language>
+    <abstract>1.- Definition of ModularIT\r
+2.- Description\r
+2.1.- Technologies involved\r
+2.2.- Procedures: instalaltion, management, update, etc.\r
+3.- ModularIT community project</abstract>
+    <description>ModularIT is a virtuliced and distributed modular services architecture based on free software. This project has been released for the spanish community at the beginning of 2008 and by January 2009 it will be translated to english. Right now it is downloadable and before the end of the year we will begin to develop the project through a public SVN.\r
+\r
+ModularIT is the result of 10 years of hard working from Grupo CPD (www.grupocpd.com) with free software systems and network services. we are a free software companies network from the Canary Islands, Spain. we are interested in presenting the project at FOSDEM.\r
+\r
+You can find more information (only in spanish until december) by clicking these links:\r
+\r
+http://www.modularit.org\r
+\r
+http://www.grupocpd.com/QueHacemos/modularit/PloneArticle_view</description>
+    <persons>
+     <person id="491">Agustín Benito</person>
+    </persons>
+    <links>
+     <link href="http://www.modularit.org">http://www.modularit.org</link>
+    </links>
+   </event>
+   <event id="518">
+    <start>11:30</start>
+    <duration>00:15</duration>
+    <room>Ferrer</room>
+    <tag>puppet</tag>
+    <title>How the social networking site Hyves benefits from puppet</title>
+    <subtitle></subtitle>
+    <track>Lightning Talks</track>
+    <type>Lightning-Talk</type>
+    <language>English</language>
+    <abstract>After explaining the basics of puppet and some background of the social network Hyves the speaker will discuss how puppet helped Hyves to automate a large set of daily sysadmin tasks. The speaker will also discuss how to automate common sysadmin problems / tasks with puppet and will show how to manage puppet masters and clients on large scale networks (+2000 servers)</abstract>
+    <description>Puppet is an open-source next-generation server automation tool. It is composed of a declarative language for expressing system configuration, a client and server for distributing it, and a library for realizing the configuration.\r
+\r
+The primary design goal of Puppet is that it have an expressive enough language backed by a powerful enough library that you can write your own server automation applications in just a few lines of code. With Puppet, you can express the configuration of your entire network in one program capable of realizing the configuration. The fact that Puppet has open source combined with how easily it can be extended means that you can add whatever functionality you think is missing and then contribute it back to the main project if you desire.</description>
+    <persons>
+     <person id="492">Marlon de Boer</person>
+    </persons>
+    <links>
+     <link href="http://reductivelabs.com/trac/puppet">http://reductivelabs.com/trac/puppet</link>
+    </links>
+   </event>
+   <event id="513">
+    <start>12:00</start>
+    <duration>02:00</duration>
+    <room>Ferrer</room>
+    <tag>keysigning</tag>
+    <title>KeySigning Party</title>
+    <subtitle></subtitle>
+    <track>Lightning Talks</track>
+    <type>Podium</type>
+    <language>English</language>
+    <abstract>GPG/PGP and CAcert keysigning party</abstract>
+    <description>See [http://fosdem.org/2009/keysigning] for details.</description>
+    <persons>
+     <person id="486">Joost van Baal</person>
+     <person id="484">Theus Hagen</person>
+    </persons>
+    <links>
+    </links>
+   </event>
+   <event id="519">
+    <start>14:00</start>
+    <duration>00:15</duration>
+    <room>Ferrer</room>
+    <tag>freedroidrpg</tag>
+    <title>Introducing FreedroidRPG, a great FOSS isometric RPG</title>
+    <subtitle></subtitle>
+    <track>Lightning Talks</track>
+    <type>Lightning-Talk</type>
+    <language>English</language>
+    <abstract>The talk introduces the game FreedroidRPG, insisting on it being mature and fully playable.\r
+We will see what features FreedroidRPG provides, present a few screenshots, explain our\r
+interest in having an immersive ambience through dialogs, music and graphics, and mention the\r
+unusual history of the game (it started off as a 2D arcade game before evolving into a full featured\r
+RPG similar to Diablo). We will explain where we need help from the community. A demo will not be\r
+possible in the timeframe of a lightning talk, but a little video may be played.</abstract>
+    <description>FreedroidRPG is a mature open source sci-fi isometric role playing game. It\r
+strives at providing an immersive ambience backed by refined graphics and\r
+music tracks. Besides the hack'n'slash action phases, dialogs with dozens of\r
+NPCs take care of storytelling. The player can fight with melee or ranged\r
+weapons, take control of his enemies by hacking, and remotely execute code on\r
+enemy robots.</description>
+    <persons>
+     <person id="493">Arthur Huillet</person>
+    </persons>
+    <links>
+     <link href="http://www.freedroid.org/">http://www.freedroid.org/</link>
+    </links>
+   </event>
+   <event id="520">
+    <start>14:15</start>
+    <duration>00:15</duration>
+    <room>Ferrer</room>
+    <tag>sgx_engine</tag>
+    <title>Games Engines Done Good</title>
+    <subtitle></subtitle>
+    <track>Lightning Talks</track>
+    <type>Lightning-Talk</type>
+    <language>English</language>
+    <abstract>Too many game engines expect you to use their code exclusively. But no games company will replace their entire technology with an open source engine, just to utilise one component. Consequently, the only open source technology generally used in professional games are those that come as individual libraries - like Lua, or ODE.\r
+\r
+In his talk, Steven covers the reason for why monolithic architectures are no good for games development, how to avoid them, and the alternatives - at both a technical and man management level.\r
+\r
+He covers the principles behind creating interfaces and loosely-couple modules to ensure flexibility, and how to introduce new modules and platforms into the mix. Distinctions are also made between commonly-confused terms such as "engine", "drivers", "domains", "platforms" and "libraries."\r
+\r
+Finally, an overview of the practical solutions are given, using the SGX Engine as a example covering audio, graphics, input, and scripting.</abstract>
+    <description>SGX is a 3D graphics engine, based around of series of null drivers and loosely-coupled modules to facilitate an infinitely upgradable engine. It is primarily suited to games and digital TV backdrops, and runs under Windows and Linux, using OpenGL. It is also one of the few Open Source engines to be used in commercial products.</description>
+    <persons>
+     <person id="455">Steven Goodwin</person>
+    </persons>
+    <links>
+     <link href="http://www.sgxengine.com">http://www.sgxengine.com</link>
+    </links>
+   </event>
+   <event id="521">
+    <start>14:30</start>
+    <duration>00:15</duration>
+    <room>Ferrer</room>
+    <tag>musescore</tag>
+    <title>MuseScore, free music composition &amp; notation software</title>
+    <subtitle></subtitle>
+    <track>Lightning Talks</track>
+    <type>Lightning-Talk</type>
+    <language>English</language>
+    <abstract>With the first stable 1.0 release in the pipeline, it's time to introduce MuseScore to future users and developers. MuseScore is currently the leading free alternative to commercial score writing software like Sibelius and Finale. With over 50.000 downloads, it has quite some adoption already, but in order to convince music schools world wide, MuseScore's current development team should become a little stronger. FOSDEM 09 will be the first event world wide where MuseScore will be presented</abstract>
+    <description>MuseScore is a free and open source music scorewriter. MuseScore is a WYSIWYG editor, complete with support for score playback and import/export of MusicXML and standard MIDI files. Percussion notation is supported, as is direct printing from the program. The program has a clean user interface, with fast note editing input with mouse, keyboard or MIDI. MuseScore has binaries available for Linux, Windows and Mac, and is available in more than 10 languages.</description>
+    <persons>
+     <person id="310">Thomas Bonte</person>
+    </persons>
+    <links>
+     <link href="http://musescore.org">http://musescore.org</link>
+    </links>
+   </event>
+   <event id="527">
+    <start>15:00</start>
+    <duration>00:15</duration>
+    <room>Ferrer</room>
+    <tag>pyroom</tag>
+    <title>PyRoom - distraction free writing</title>
+    <subtitle></subtitle>
+    <track>Lightning Talks</track>
+    <type>Lightning-Talk</type>
+    <language>English</language>
+    <abstract>The talk will try to answer many questions:\r
+\r
+* why did this project happen?\r
+* how is it organised?\r
+* who is this software for?\r
+* ...</abstract>
+    <description>PyRoom is a Free, monochrome, full-screen text editor without buttons, widgets, etc. that helps you focus on one thing and only one: writing. It's written in Python, using Python-GTK bindings.</description>
+    <persons>
+     <person id="501">Bruno Bord</person>
+    </persons>
+    <links>
+     <link href="http://pyroom.org">http://pyroom.org</link>
+    </links>
+   </event>
+   <event id="522">
+    <start>15:15</start>
+    <duration>00:15</duration>
+    <room>Ferrer</room>
+    <tag>ez_find</tag>
+    <title>Putting Apache Solr to work: eZ Find, a powerful eZ Publish search plugin</title>
+    <subtitle></subtitle>
+    <track>Lightning Talks</track>
+    <type>Lightning-Talk</type>
+    <language>English</language>
+    <abstract>After a brief overview of the main features and benefits of Apache Solr (an open source embeddable search server), the architecture of eZ Find (the search plugin for eZ Publish, a PHP CMS), will be presented. The main lessons learned around dealing with a mix of structured and non-structured content, multilingual aspects, tuning and the various state-of-the-art features of Solr will be shared with the audience.</abstract>
+    <description>eZ Find is the enterprise grade search engine used for eZ Publish (a CMS written in PHP, with flexible content modeling). The back-end engine used is Apache Solr. The document/field model of Solr together with its powerful features around faceting, filtering, automatic related content and language features are a 1-to-1 match with the CMS used. But is also capable of integrating various data-sources, such as ERP systems or document collections with the use of plugins.</description>
+    <persons>
+     <person id="496">Paul Borgermans</person>
+    </persons>
+    <links>
+     <link href="http://ez.no/ezfind">http://ez.no/ezfind</link>
+    </links>
+   </event>
+   <event id="523">
+    <start>15:30</start>
+    <duration>00:15</duration>
+    <room>Ferrer</room>
+    <tag>xwiki</tag>
+    <title>The XWiki Wysiwyg Editor: Rich Cross-Browser Editing, Take Two</title>
+    <subtitle></subtitle>
+    <track>Lightning Talks</track>
+    <type>Lightning-Talk</type>
+    <language>English</language>
+    <abstract>The new wysiwyg editor developed by the XWiki team is a cross-browser, GWT-based, stand-alone editing tool that solves a number of known problems in other editors, and brings exciting new features such as concurrent realtime editing. Currently in a beta stage, it was bundled in XWiki Enterprise 1.7 and will become the default editor in the next XWiki release.</abstract>
+    <description>XWiki is a platform for developing collaborative web applications using the wiki paradigm.</description>
+    <persons>
+     <person id="497">Anca Luca</person>
+    </persons>
+    <links>
+     <link href="http://www.xwiki.org">http://www.xwiki.org</link>
+    </links>
+   </event>
+   <event id="524">
+    <start>16:00</start>
+    <duration>00:15</duration>
+    <room>Ferrer</room>
+    <tag>tikiwiki_cms_groupware</tag>
+    <title>TikiWiki CMS/Groupware - When just a Wiki is Not Enough</title>
+    <subtitle></subtitle>
+    <track>Lightning Talks</track>
+    <type>Lightning-Talk</type>
+    <language>English</language>
+    <abstract>TikiWiki is a powerful, multilingual Wiki, Content Management System (CMS) and Groupware. Translated to 35 languages, and with an install base of tens of thousands, over 200 people have contributed to the source code and it provides hundreds of built-in features to create all sorts of web sites, intranets and extranets, including support.mozilla.com.\r
+\r
+The community eats its own DogFood and applies the "Wiki Way" to software development. Written in PHP, it is released as free software (LGPL). TikiWiki is at the crossroads between Wikis and CMS/Groupware. It is so much more than just a wiki. \r
+\r
+Most wikis are pure wikis. However, is that sufficient? "He who is good with a hammer thinks the world is a nail". While a wiki is a great tool, it is not optimal in many situations. For some things, forums, issue trackers, blogs, etc. are better. That's why there are hundreds of Content Management Systems (CMS) out there. However, many CMS systems are focused on classic publishing, rather than community and collaboration. \r
+\r
+In TikiWiki, the wiki way is found throughout the application. For example, the wiki syntax works in the forums, and in structured data trackers. Major features of TikiWiki include news articles, forums, newsletters, blogs, a file/image gallery, structured data trackers, translation, polls, calendar, Mobile Tiki (PDA and WAP access), RSS feeds, a category system, a theme control center, and more.\r
+\r
+When would you need a wiki that is bundled with other features? Find out for yourself in this session what makes TikiWiki unique.</abstract>
+    <description>TikiWiki CMS/Groupware is a full-featured, tightly integrated, open source, multilingual, all-in-one Wiki-CMS-Groupware, written in PHP and actively developed by a very large international community. Major features include articles, forums, newsletters, blogs, a file/image gallery, a wiki, bug &amp; issue tracker (form generator), a calendar, RSS feeds, a category system, tags, a workflow engine, an advanced user, group and permission system and more.</description>
+    <persons>
+     <person id="498">Marc Laporte</person>
+    </persons>
+    <links>
+     <link href="http://TikiWiki.org">http://TikiWiki.org</link>
+    </links>
+   </event>
+  </room>
+  <room name="Lameere">
+   <event id="791">
+    <start>09:00</start>
+    <duration>01:00</duration>
+    <room>Lameere</room>
+    <tag>emb_hackable_1</tag>
+    <title>Development on the Openmoko with hackable:1</title>
+    <subtitle></subtitle>
+    <track>Embedded</track>
+    <type>Podium</type>
+    <language>English</language>
+    <abstract>[http://www.hackable1.org/ Hackable:1] is a community distribution for hackable devices like the Openmoko Neo Freerunner. \r
+It is based on Debian and implements the GNOME Mobile platform.</abstract>
+    <description>This workshop introduces development for the Freerunner using the hackable:1 software distribution.</description>
+    <persons>
+     <person id="651">Pierre Pronchery</person>
+    </persons>
+    <links>
+    </links>
+   </event>
+   <event id="740">
+    <start>10:00</start>
+    <duration>01:00</duration>
+    <room>Lameere</room>
+    <tag>emb_solar_control</tag>
+    <title>Solar Control with 1-wire Open Hardware</title>
+    <subtitle></subtitle>
+    <track>Embedded</track>
+    <type>Podium</type>
+    <language>English</language>
+    <abstract>Solar hot water systems in particular, and home control in general, provide excellent opportunities for fun geeking. Conventional control is done with various boxes, each of which is very stupid. Everything is proprietary and mostly incompatible with other manufacturers.\r
+\r
+Wookey decided that a better solution was one smart controller using open technologies, which could do cool stuff like on-line energy logging.</abstract>
+    <description>He will explain enough about plumbing that the rest of the talk makes sense, then cover the practicalities of the necessary mix of IO: (I2C, 1-wire, digital IO, switching, displays), Software (logging, control scripting, user feedback) and Hardware (Balloonboard+IO).\r
+\r
+When he's finished you should have enough knowledge to go away and put together your own versatile controller (and solar system), and have an appreciation of the potential of this technology, as well as what work is still needded to make it accessible beyond the world of embedded Linux engineers.</description>
+    <persons>
+     <person id="72">Wookey</person>
+    </persons>
+    <links>
+    </links>
+   </event>
+   <event id="741">
+    <start>11:00</start>
+    <duration>01:00</duration>
+    <room>Lameere</room>
+    <tag>emb_fire_safety_cert</tag>
+    <title>Development and Certification of Linux-Based Fire Safety &amp; Security Systems</title>
+    <subtitle></subtitle>
+    <track>Embedded</track>
+    <type>Podium</type>
+    <language>English</language>
+    <abstract>Experiences in Development and Certification of Linux-Based Fire Safety &amp; Security Systems</abstract>
+    <description>As time passes, we rely more and more on software-intensive systems in safety-critical areas, from car brakes to aircraft control systems. A number of standards and certification procedures have been defined to assess the reliability of those products. Linux and open-source software (OSS) are attractive components to use in embedded systems.\r
+\r
+While some reliability information is available from enterprise systems research, certifiability of OSS in a particular industry is a major project risk.\r
+\r
+In this presentation, we share our experience in the development and certification of Linux-based fire safety systems. We provide a short introduction in standards objectives and approaches, describe the certification stakeholders and processes, product development challenges and possible solutions.</description>
+    <persons>
+     <person id="630">Baurzhan Ismagulov</person>
+    </persons>
+    <links>
+    </links>
+   </event>
+   <event id="792">
+    <start>12:00</start>
+    <duration>00:30</duration>
+    <room>Lameere</room>
+    <tag>emb_maemo_beagleboard</tag>
+    <title>Maemo on BeagleBoard</title>
+    <subtitle></subtitle>
+    <track>Embedded</track>
+    <type>Podium</type>
+    <language>English</language>
+    <abstract>[http://beagleboard.org/ BeagleBoard] is an affordable OMAP3 based development board. [http://maemo.org Maemo] 5 is the next version of Nokia's Linux platform (codenamed Fremantle) and it supports OMAP3 processors. With some patience any BeagleBoard owner can get Maemo Fremantle running on the hardware.</abstract>
+    <description>This talk will be about creating a BeagleBoard image from the Maemo SDK. \r
+\r
+I'll go through the current status and how to get involved in the project and how BeagleBoard could be of help in creating software for Maemo devices</description>
+    <persons>
+     <person id="652">Juha Kallionen</person>
+    </persons>
+    <links>
+    </links>
+   </event>
+   <event id="742">
+    <start>14:00</start>
+    <duration>01:00</duration>
+    <room>Lameere</room>
+    <tag>emb_power_mgmt_omap3</tag>
+    <title>Advanced powermanagement for OMAP3</title>
+    <subtitle></subtitle>
+    <track>Embedded</track>
+    <type>Podium</type>
+    <language>English</language>
+    <abstract>As ASIC technology progresses to smaller technology nodes (63nm and and lower), leakage currents become increasingly important. This means that just stopping clocks isn't enough to save enough power to obtain the desired device use times. \r
+We need to shut off inactive parts of the ASIC depending on the actual usage. Eg. turn off the camera functionality or the GPU when not in use. We call this dynamic power switching (DPS).</abstract>
+    <description>This talk will show how TI, Nokia and the community implemented DPS in the linux kernel. We will also discuss other power saving features of OMAP3 and how they are used in the linux kernel.</description>
+    <persons>
+     <person id="161">Peter De Schrijver</person>
+    </persons>
+    <links>
+    </links>
+   </event>
+   <event id="743">
+    <start>15:00</start>
+    <duration>01:30</duration>
+    <room>Lameere</room>
+    <tag>emb_emdebian_1_0</tag>
+    <title>Emdebian 1.0 release - small &amp; super small Debian</title>
+    <subtitle></subtitle>
+    <track>Embedded</track>
+    <type>Podium</type>
+    <language>English</language>
+    <abstract>Neil presents the release of Emdebian 1.0 Grip and Crush.</abstract>
+    <description>== Emdebian 1.0 Grip - a small, binary compatible, Debian ==\r
+Grip is between 25 and 40% smaller than standard Debian and uses TDebs for localisation. Grip can be easily installed using standard Debian-Installer images or debootstrap and allows for easy mixing of Debian and Grip packages. Grip supports seven architectures using the existing Debian ports: arm, armel, i386, amd64 (test architecture), mips, mipsel and powerpc. Version 1.0 is primarily for developers but is roughly equivalent to Debian in terms of usability and maintenance.\r
+\r
+Emdebian 1.0 Grip includes packages for a typical XFCE desktop installation. Typical Grip installations are between 25 and 40% smaller than the equivalent Debian installation.\r
+\r
+This talk covers all the essential features of Grip and will (hopefully) include a demo of using the Debian Installer from Lenny to install Emdebian 1.0 Grip on an Acer Aspire1 netbook.\r
+\r
+== Emdebian 1.0 Crush - a cross-built tiny Debian developer release ==\r
+Crush is only available for ARM and consists of a limited package set based around the GNOME Palmtop Environment. Crush\r
+installation methods are machine-specific (with support from packages in Debian Lenny) and Crush does not include any kernels. Version 1.0 is only for developers and is significantly more difficult to prepare, install and maintain than either Debian or Emdebian Grip but provides a much smaller installation. Basic root filesystems of 24Mb installed,\r
+full GPE GUI installations within 75Mb.\r
+\r
+This talk covers the limitations of Crush, the practical difficulties inherent in cross-building Debian using packages from Lenny and the improvements being implemented into the next release of Debian (Squeeze) that will make it easier to add support for more architectures for Emdebian Crush 2.0 (based on Debian 6.0 "Squeeze").</description>
+    <persons>
+     <person id="318">Neil Williams</person>
+    </persons>
+    <links>
+    </links>
+   </event>
+   <event id="744">
+    <start>16:30</start>
+    <duration>00:30</duration>
+    <room>Lameere</room>
+    <tag>emb_wrapup</tag>
+    <title>Embedded Devroom wrap-up &amp; feedback session</title>
+    <subtitle></subtitle>
+    <track>Embedded</track>
+    <type>Workshop</type>
+    <language>English</language>
+    <abstract>Wrap-up and feedback session in the Embedded developer room.</abstract>
+    <description></description>
+    <persons>
+     <person id="112">Philippe De Swert</person>
+    </persons>
+    <links>
+    </links>
+   </event>
+  </room>
+  <room name="H.1301">
+   <event id="565">
+    <start>10:00</start>
+    <duration>00:15</duration>
+    <room>H.1301</room>
+    <tag>xd_welcome</tag>
+    <title>Welcome to the Crossdesktop room</title>
+    <subtitle></subtitle>
+    <track>CrossDesktop</track>
+    <type>Other</type>
+    <language>English</language>
+    <abstract>Welcome to the Crossdesktop developer room at FOSDEM 2009.</abstract>
+    <description></description>
+    <persons>
+     <person id="130">Christophe Fergeau</person>
+     <person id="95">Bart Coppens</person>
+     <person id="522">Jannis Pohlmann</person>
+    </persons>
+    <links>
+    </links>
+   </event>
+   <event id="566">
+    <start>10:15</start>
+    <duration>00:45</duration>
+    <room>H.1301</room>
+    <tag>xd_flossmetrics</tag>
+    <title>A talk on FLOSSMetrics</title>
+    <subtitle></subtitle>
+    <track>CrossDesktop</track>
+    <type>Podium</type>
+    <language>English</language>
+    <abstract>This talk would introduce the [http://www.flossmetrics.org/ FLOSSMetrics project], its aims and initial findings.</abstract>
+    <description>The main objective of FLOSSMETRICS is to construct, publish and analyse a large scale database with information and metrics about libre software development coming from several thousands of software projects, using existing methodologies, and tools already developed.</description>
+    <persons>
+     <person id="214">Jesus M. Gonzalez Barahona</person>
+    </persons>
+    <links>
+    </links>
+   </event>
+   <event id="567">
+    <start>11:00</start>
+    <duration>00:45</duration>
+    <room>H.1301</room>
+    <tag>xd_xfce_4_6</tag>
+    <title>Xfce 4.6 and then?</title>
+    <subtitle></subtitle>
+    <track>CrossDesktop</track>
+    <type>Podium</type>
+    <language>English</language>
+    <abstract>This talk will be about the new [http://www.xfce.org/ Xfce] release and it will also try to answer what comes after 4.6.</abstract>
+    <description>Some of the new features of Xfce 4.6 will be presented and explained, the release process will be evaluated. Finally, we will give a feature preview for Xfce 4.8.</description>
+    <persons>
+     <person id="522">Jannis Pohlmann</person>
+    </persons>
+    <links>
+    </links>
+   </event>
+   <event id="568">
+    <start>13:00</start>
+    <duration>00:45</duration>
+    <room>H.1301</room>
+    <tag>xd_cmake</tag>
+    <title>CMake - what can it do for your project</title>
+    <subtitle></subtitle>
+    <track>CrossDesktop</track>
+    <type>Podium</type>
+    <language>English</language>
+    <abstract>This talk will be an introduction to [http://www.cmake.org/ CMake].</abstract>
+    <description>It will talk about some of its advantages, some experiences we have with it in KDE, etc. The target audience is mainly projects that do not yet use CMake.</description>
+    <persons>
+     <person id="48">Alexander Neundorf</person>
+    </persons>
+    <links>
+    </links>
+   </event>
+   <event id="569">
+    <start>13:45</start>
+    <duration>00:45</duration>
+    <room>H.1301</room>
+    <tag>xd_webkit_ebook</tag>
+    <title>WebKit on ebook readers</title>
+    <subtitle></subtitle>
+    <track>CrossDesktop</track>
+    <type>Podium</type>
+    <language>English</language>
+    <abstract>Marco will give a brief introduction on how WebKit GTK works and on how it can be easily embedded in applications.</abstract>
+    <description>He will then explain what he did to adapt WebKit to electronic ink displays, reducing the number of refreshes, allowing a book-like page by page view of web pages and showing useful and meaningful placeholders instead of animated content.</description>
+    <persons>
+     <person id="523">Marco Barisione</person>
+    </persons>
+    <links>
+    </links>
+   </event>
+   <event id="570">
+    <start>14:30</start>
+    <duration>00:45</duration>
+    <room>H.1301</room>
+    <tag>xd_xfce_platform</tag>
+    <title>Xfce as a Platform</title>
+    <subtitle></subtitle>
+    <track>CrossDesktop</track>
+    <type>Podium</type>
+    <language>English</language>
+    <abstract>This talk is especially targeted to software developers, distributions and other software vendors. It will cover the APIs and infrastructure provided by the Xfce project. We will explain libraries and tools, how they work together and how you can use them for your own software project or distribution. Special focus will be put on Xfconf and ways to extend Xfce.</abstract>
+    <description></description>
+    <persons>
+     <person id="524">Stephan Arts</person>
+    </persons>
+    <links>
+    </links>
+   </event>
+   <event id="571">
+    <start>15:15</start>
+    <duration>00:45</duration>
+    <room>H.1301</room>
+    <tag>xd_logs</tag>
+    <title>Why logs are important</title>
+    <subtitle></subtitle>
+    <track>CrossDesktop</track>
+    <type>Podium</type>
+    <language>English</language>
+    <abstract>How To Be A Lumberjack (or "Why Logs Are Important")</abstract>
+    <description>This talk will show how we can use SVN log analysis to monitor a migration away from SVN to git.</description>
+    <persons>
+     <person id="525">Paul Adams</person>
+    </persons>
+    <links>
+    </links>
+   </event>
+   <event id="572">
+    <start>16:00</start>
+    <duration>00:45</duration>
+    <room>H.1301</room>
+    <tag>xd_at_spi2</tag>
+    <title>at-spi2</title>
+    <subtitle></subtitle>
+    <track>CrossDesktop</track>
+    <type>Podium</type>
+    <language>English</language>
+    <abstract>The Project is converting the AT-SPI accessibility protocol to D-Bus and has the lofty goals of providing cross desktop accessibility for GNOME and KDE.</abstract>
+    <description></description>
+    <persons>
+     <person id="526">Mark Doffman</person>
+    </persons>
+    <links>
+     <link href="http://www.linuxfoundation.org/en/Accessibility/ATK/AT-SPI/AT-SPI_on_D-Bus">More information about AT-SPI on D-Bus</link>
+    </links>
+   </event>
+  </room>
+  <room name="UA2.114">
+   <event id="753">
+    <start>09:00</start>
+    <duration>00:30</duration>
+    <room>UA2.114</room>
+    <tag>pg_pgagent</tag>
+    <title>Job scheduling in PostgreSQL with pgAgent</title>
+    <subtitle></subtitle>
+    <track>BSD+PostgreSQL</track>
+    <type>Podium</type>
+    <language>English</language>
+    <abstract></abstract>
+    <description></description>
+    <persons>
+     <person id="635">Dave Page</person>
+    </persons>
+    <links>
+    </links>
+   </event>
+   <event id="754">
+    <start>09:30</start>
+    <duration>00:30</duration>
+    <room>UA2.114</room>
+    <tag>pg_pet_peeves</tag>
+    <title>Postgres Pet Peeves</title>
+    <subtitle></subtitle>
+    <track>BSD+PostgreSQL</track>
+    <type>Podium</type>
+    <language>English</language>
+    <abstract></abstract>
+    <description></description>
+    <persons>
+     <person id="636">Greg Stark</person>
+    </persons>
+    <links>
+    </links>
+   </event>
+   <event id="755">
+    <start>10:00</start>
+    <duration>01:00</duration>
+    <room>UA2.114</room>
+    <tag>pg_openbsd_to_desktop</tag>
+    <title>OpenBSD: From the Atomic clock to your desktop</title>
+    <subtitle></subtitle>
+    <track>BSD+PostgreSQL</track>
+    <type>Podium</type>
+    <language>English</language>
+    <abstract></abstract>
+    <description></description>
+    <persons>
+     <person id="632">Marc Balmer</person>
+    </persons>
+    <links>
+    </links>
+   </event>
+   <event id="756">
+    <start>11:00</start>
+    <duration>01:00</duration>
+    <room>UA2.114</room>
+    <tag>pg_maps</tag>
+    <title>Free Space Map and Visibility Map</title>
+    <subtitle></subtitle>
+    <track>BSD+PostgreSQL</track>
+    <type>Podium</type>
+    <language>English</language>
+    <abstract></abstract>
+    <description></description>
+    <persons>
+     <person id="418">Heikki Linnakangas</person>
+    </persons>
+    <links>
+    </links>
+   </event>
+   <event id="757">
+    <start>12:00</start>
+    <duration>01:00</duration>
+    <room>UA2.114</room>
+    <tag>bsd_dtrace</tag>
+    <title>FreeBSD and Dtrace</title>
+    <subtitle></subtitle>
+    <track>BSD+PostgreSQL</track>
+    <type>Podium</type>
+    <language>English</language>
+    <abstract></abstract>
+    <description></description>
+    <persons>
+     <person id="416">Marius Nünnerich</person>
+    </persons>
+    <links>
+    </links>
+   </event>
+   <event id="766">
+    <start>13:00</start>
+    <duration>00:30</duration>
+    <room>UA2.114</room>
+    <tag>pg_informix_migration</tag>
+    <title>Migration from informix to PostgreSQL at VPRO</title>
+    <subtitle></subtitle>
+    <track>BSD+PostgreSQL</track>
+    <type>Podium</type>
+    <language>English</language>
+    <abstract></abstract>
+    <description></description>
+    <persons>
+     <person id="638">Koen Martens</person>
+    </persons>
+    <links>
+    </links>
+   </event>
+   <event id="759">
+    <start>13:30</start>
+    <duration>00:30</duration>
+    <room>UA2.114</room>
+    <tag>pg_user_groups_leading</tag>
+    <title>User Groups: Leading without being in charge</title>
+    <subtitle></subtitle>
+    <track>BSD+PostgreSQL</track>
+    <type>Podium</type>
+    <language>English</language>
+    <abstract></abstract>
+    <description></description>
+    <persons>
+     <person id="637">Selena Deckelmann</person>
+    </persons>
+    <links>
+    </links>
+   </event>
+   <event id="765">
+    <start>14:00</start>
+    <duration>00:30</duration>
+    <room>UA2.114</room>
+    <tag>pg_recursive_queries_intro</tag>
+    <title>Introduction to recursive queries</title>
+    <subtitle></subtitle>
+    <track>BSD+PostgreSQL</track>
+    <type>Podium</type>
+    <language>English</language>
+    <abstract></abstract>
+    <description></description>
+    <persons>
+     <person id="636">Greg Stark</person>
+    </persons>
+    <links>
+    </links>
+   </event>
+   <event id="761">
+    <start>14:30</start>
+    <duration>00:30</duration>
+    <room>UA2.114</room>
+    <tag>pg_sql_med</tag>
+    <title>SQL/MED</title>
+    <subtitle></subtitle>
+    <track>BSD+PostgreSQL</track>
+    <type>Podium</type>
+    <language>English</language>
+    <abstract></abstract>
+    <description></description>
+    <persons>
+     <person id="616">Peter Eisentraut</person>
+    </persons>
+    <links>
+    </links>
+   </event>
+   <event id="762">
+    <start>15:00</start>
+    <duration>01:00</duration>
+    <room>UA2.114</room>
+    <tag>pg_fs_io_db_perspective</tag>
+    <title>Filesystem I/O From a Database Perspective</title>
+    <subtitle></subtitle>
+    <track>BSD+PostgreSQL</track>
+    <type>Podium</type>
+    <language>English</language>
+    <abstract></abstract>
+    <description></description>
+    <persons>
+     <person id="637">Selena Deckelmann</person>
+    </persons>
+    <links>
+    </links>
+   </event>
+   <event id="763">
+    <start>16:00</start>
+    <duration>00:30</duration>
+    <room>UA2.114</room>
+    <tag>bsd_cpan2port</tag>
+    <title>Painless Perl Ports with cpan2port</title>
+    <subtitle></subtitle>
+    <track>BSD+PostgreSQL</track>
+    <type>Podium</type>
+    <language>English</language>
+    <abstract></abstract>
+    <description></description>
+    <persons>
+     <person id="417">Benny Siegert</person>
+    </persons>
+    <links>
+    </links>
+   </event>
+   <event id="764">
+    <start>16:30</start>
+    <duration>00:30</duration>
+    <room>UA2.114</room>
+    <tag>bsd_syscalls</tag>
+    <title>Use of FreeBSD system calls</title>
+    <subtitle></subtitle>
+    <track>BSD+PostgreSQL</track>
+    <type>Podium</type>
+    <language>English</language>
+    <abstract></abstract>
+    <description></description>
+    <persons>
+     <person id="420">Gregory Holland</person>
+    </persons>
+    <links>
+    </links>
+   </event>
+  </room>
+  <room name="H.1302">
+   <event id="682">
+    <start>09:15</start>
+    <duration>00:15</duration>
+    <room>H.1302</room>
+    <tag>drupal_welcome</tag>
+    <title>Welcome to the Drupal devroom</title>
+    <subtitle></subtitle>
+    <track>Drupal</track>
+    <type>Other</type>
+    <language>English</language>
+    <abstract>Welcome to the Drupal developer room at FOSDEM 2009.</abstract>
+    <description></description>
+    <persons>
+     <person id="213">Dries Buytaert</person>
+    </persons>
+    <links>
+    </links>
+   </event>
+   <event id="686">
+    <start>09:30</start>
+    <duration>00:45</duration>
+    <room>H.1302</room>
+    <tag>drupal_7</tag>
+    <title>What's new in Drupal 7?</title>
+    <subtitle></subtitle>
+    <track>Drupal</track>
+    <type>Podium</type>
+    <language>English</language>
+    <abstract>What is there to look forward to in Drupal 7, and when can we have it?</abstract>
+    <description>Learn about CCK-like fields in core, the new testing framework, PDO Database backend, OPML imports, improved time zone support, better file handling, safety from badgers, and the free ponies for everyone. This will be a tour of the user facing and developer oriented features and changes that will make Drupal 7 sooo hawt.</description>
+    <persons>
+     <person id="213">Dries Buytaert</person>
+    </persons>
+    <links>
+    </links>
+   </event>
+   <event id="683">
+    <start>10:15</start>
+    <duration>00:45</duration>
+    <room>H.1302</room>
+    <tag>drupal_performance</tag>
+    <title>Improving Drupal's page loading performance</title>
+    <subtitle></subtitle>
+    <track>Drupal</track>
+    <type>Podium</type>
+    <language>English</language>
+    <abstract>As many already know by now, 80 to 90% of the response time of a web page is dependent on the page loading performance (the fetching of the HTML and all files referenced). This is different from the page rendering performance, which is just the time it takes to generate the HTML.\r
+Drupal already tackles several issues pretty well. But there's more we can do!</abstract>
+    <description>You can solve several additional problems today, just by installing extra modules (such as [http://drupal.org/project/sf_cache Support file Cache]), by configuring Apache (e.g. gzipped output), or by configuring some shell scripts (e.g. to optimize image files). I'll explain you how to apply these solutions.\r
+\r
+For most Drupal sites, CDN integration and putting JS at the bottom of the page have the biggest impact. However, these two techniques are currently very hard to apply properly to Drupal: both require hacks to Drupal core.\r
+My aim is to solve both of these problems as part of my bachelor thesis. I'll explain how I expect to solve this and the impact of both issues on your site.</description>
+    <persons>
+     <person id="593">Wim Leers</person>
+    </persons>
+    <links>
+    </links>
+   </event>
+   <event id="684">
+    <start>11:00</start>
+    <duration>00:45</duration>
+    <room>H.1302</room>
+    <tag>drupal_community_website</tag>
+    <title>Building a Community Website using Drupal</title>
+    <subtitle></subtitle>
+    <track>Drupal</track>
+    <type>Podium</type>
+    <language>English</language>
+    <abstract>Jobcircle is a community website for young employed people where knowledge and experiences are being shared, funded by the Dutch trader union 'FNV Bondgenoten'. It is a joint talk by developer and customer where the project goal and history are evaluated by the customer and where Niels goes more in-depth on the technical architecture and experiences.</abstract>
+    <description></description>
+    <persons>
+     <person id="594">Niels van Mourik</person>
+    </persons>
+    <links>
+    </links>
+   </event>
+   <event id="685">
+    <start>11:45</start>
+    <duration>00:45</duration>
+    <room>H.1302</room>
+    <tag>drupal_multi_site</tag>
+    <title>Drupal Multi-site for Fun and Profit</title>
+    <subtitle></subtitle>
+    <track>Drupal</track>
+    <type>Podium</type>
+    <language>English</language>
+    <abstract>Tired of handing out FTP accounts for Web site hosting? Get a little queasy whenever someone asks about Front Page extensions? Drupal to the rescue!</abstract>
+    <description>By using Drupal's multi-site install you can use a single code base to power all of your customers' Web sites. Installing a single code base will also make tech support and security updates a whole lot easier. In this session you will learn how to install Drupal, where to put modules and themes so they show up in the right places, and how ensure your customers have the right amount of control over their own domain. Emma will use real world examples from her own business network to reveal how Drupal can convert even the smallest clients to pots of gold.</description>
+    <persons>
+     <person id="595">Emma Jane Hogbin</person>
+    </persons>
+    <links>
+    </links>
+   </event>
+   <event id="789">
+    <start>13:00</start>
+    <duration>01:00</duration>
+    <room>H.1302</room>
+    <tag>drupal_import_manager</tag>
+    <title>Importing data with job queue and import manager</title>
+    <subtitle></subtitle>
+    <track>Drupal</track>
+    <type>Podium</type>
+    <language>English</language>
+    <abstract>Continuously importing data, of any size or number of sources, needs infrastructure. Neil Drumm wrote [http://drupal.org/project/job_queue Job Queue] and [http://drupal.org/project/import_manager Import Manager] to queue and manage imports.\r
+\r
+He will show how to use these modules to get the basics out of the way.</abstract>
+    <description>Neil Drumm will also talk about a few strategies he found successful for data conversion. The presentation will not be able to cover how to get everything into nodes, but will teach how to think about converting data.\r
+\r
+At [http://maplight.org/ MAPLight], Neil managed importing data from GovTrack, OpenSecrets, the FEC, the Iowa Legislature and other government entities. Some updates happen within 30 minutes of an action in Congress, while others need to be run monthly, or reports as-needed.</description>
+    <persons>
+     <person id="649">Neil Drumm</person>
+    </persons>
+    <links>
+    </links>
+   </event>
+   <event id="687">
+    <start>14:00</start>
+    <duration>00:45</duration>
+    <room>H.1302</room>
+    <tag>drupal_staging_to_live</tag>
+    <title>Moving Content from Staging to Live Server</title>
+    <subtitle></subtitle>
+    <track>Drupal</track>
+    <type>Podium</type>
+    <language>English</language>
+    <abstract>Roel explains how he manages deployments of very large Drupal sites from staging to live servers.</abstract>
+    <description>The problem:\r
+A client has a live site with 1000's of pages, 10's of blocks containing rather static information.\r
+There is almost no user interaction except for a few webforms to collect some user information (contact, request for documentation, etc..)\r
+\r
+While the site is live, the client wish to prepare for the next iteration of the website. The new version will contain altered, new and deleted nodes and blocks. There is a workflow to allow approving all the changes by the end-redaction. While the old site is unaltered they wish to have a live-preview of what the new website will look like.\r
+\r
+a Solution?\r
+Can Drupal handle this out-of-the-box?\r
+An initial guess would be to define a some states using the workflow module and handle revisions using the revision_deletion and revision_moderation modules.\r
+But that doesn't help when you want to test drive the site as anonymous visitor.\r
+How DID we do it? A small set of bash scripts and drupal modules did the trick. We'd be honoured to explain those and be cross-fired with questions!</description>
+    <persons>
+     <person id="596">Roel de Meester</person>
+    </persons>
+    <links>
+    </links>
+   </event>
+   <event id="688">
+    <start>14:45</start>
+    <duration>00:45</duration>
+    <room>H.1302</room>
+    <tag>drupal_showcase_flanders</tag>
+    <title>Drupal Showcase: Cultural Activities in Flanders</title>
+    <subtitle></subtitle>
+    <track>Drupal</track>
+    <type>Podium</type>
+    <language>English</language>
+    <abstract>Davy explains how they implement a complex Drupal website at DotProjects.</abstract>
+    <description>DotProjects is developing a new website for Cultuurnet Vlaanderen. This website allows users to browse all kinds of events happening in Belgium. All event data is not managed in Drupal but is managed in Cultuurnet's own system and access to this data is provided by their REST API.\r
+\r
+This event data, which is "hosted" on their API is enriched with comments, ratings, YouTube video's, Press releases, ... in Drupal. To make this possible, all events need to exist in Drupal as nodes. For this we developed an offline synchronisation method and a real time synchronisation method where nodes for events are only created as soon as their node page is accessed.\r
+\r
+For each event the system also tries to look for a YouTube video, Flickr image, Wikipedia entry. This all happens automatically without any user interaction. For this a custom Drupal module was developed (Service Attachments) which allows to automatically look for content on APIs for each node.\r
+\r
+With a high focus on these two problems, we'll explain the process of implementing this website in Drupal.</description>
+    <persons>
+     <person id="598">Frederik Van Outryve</person>
+     <person id="597">Davy Van Den Bremt</person>
+    </persons>
+    <links>
+    </links>
+   </event>
+   <event id="689">
+    <start>15:30</start>
+    <duration>00:45</duration>
+    <room>H.1302</room>
+    <tag>drupal_automated_translation</tag>
+    <title>Automated Web Translation Workflow for Multilingual Drupal Sites</title>
+    <subtitle></subtitle>
+    <track>Drupal</track>
+    <type>Podium</type>
+    <language>English</language>
+    <abstract>A non-technical presentation on how to automate the web translation process with Drupal.</abstract>
+    <description>Many organizations operating across the borders are reluctant to localize their (Drupal) web site content because of cost and time constraints. They are aware though that, just as print marketing, e-marketing also needs to use the business language of the local markets in order to be successful.\r
+\r
+Find out about how you can automate the web translation process and dramatically cut budget and deadlines, with the AWTW module for Drupal (available in the Drupal community for about a year now). And see how large organisations have been making use of this efficient solution.\r
+\r
+This presentation will be non-technical and given by a non-developer.</description>
+    <persons>
+     <person id="599">Stany van Gelder</person>
+    </persons>
+    <links>
+    </links>
+   </event>
+   <event id="690">
+    <start>16:15</start>
+    <duration>00:45</duration>
+    <room>H.1302</room>
+    <tag>drupal_taxonomy</tag>
+    <title>Taxonomy: Drupals powerful classification system</title>
+    <subtitle></subtitle>
+    <track>Drupal</track>
+    <type>Podium</type>
+    <language>English</language>
+    <abstract>Taxonomy is Drupal's classification system. In this talk Bart explains how it differs from a regular categorisation system and what Drupal core and contributed modules offer to manipulate, browse and apply it.</abstract>
+    <description>This talk gives a short explanation about what Taxonomy is and what it does in simple and clear terminology. Bart briefly describes the history of Taxonomy from Drupal 4 to Drupal 7. Finally he discusses when to use Book.module and when Taxonomy for arranging your content.</description>
+    <persons>
+     <person id="600">Bart Feenstra</person>
+    </persons>
+    <links>
+    </links>
+   </event>
+  </room>
+  <room name="H.1308">
+   <event id="774">
+    <start>09:00</start>
+    <duration>00:45</duration>
+    <room>H.1308</room>
+    <tag>moz_seamonkey</tag>
+    <title>SeaMonkey</title>
+    <subtitle></subtitle>
+    <track>Mozilla</track>
+    <type>Podium</type>
+    <language>English</language>
+    <abstract>SeaMonkey 2 and the vision beyond.</abstract>
+    <description></description>
+    <persons>
+     <person id="355">Robert Kaiser</person>
+    </persons>
+    <links>
+    </links>
+   </event>
+   <event id="775">
+    <start>09:45</start>
+    <duration>00:45</duration>
+    <room>H.1308</room>
+    <tag>moz_qa_overview</tag>
+    <title>Overview of Mozilla QA</title>
+    <subtitle></subtitle>
+    <track>Mozilla</track>
+    <type>Podium</type>
+    <language>English</language>
+    <abstract>Who we are, what we do, how to get involved.</abstract>
+    <description></description>
+    <persons>
+     <person id="466">Carsten Book</person>
+    </persons>
+    <links>
+    </links>
+   </event>
+   <event id="776">
+    <start>10:30</start>
+    <duration>00:45</duration>
+    <room>H.1308</room>
+    <tag>moz_oni_concurrency</tag>
+    <title>Oni - Structured Concurrency for JavaScript</title>
+    <subtitle></subtitle>
+    <track>Mozilla</track>
+    <type>Podium</type>
+    <language>English</language>
+    <abstract>In this talk I'll present the JavaScript [http://www.croczilla.com/oni Oni] library, a set of operators for writing composable concurrent code.</abstract>
+    <description>[http://www.croczilla.com/oni Oni] attempts to restore some modularity to concurrent programs; it offers a 'structured' alternative to conventional 'unstructured' idioms such as asynchronous callbacks.</description>
+    <persons>
+     <person id="642">Alex Fritze</person>
+    </persons>
+    <links>
+    </links>
+   </event>
+   <event id="777">
+    <start>11:15</start>
+    <duration>00:45</duration>
+    <room>H.1308</room>
+    <tag>moz_sunbird</tag>
+    <title>Rising to the Sun(bird)</title>
+    <subtitle></subtitle>
+    <track>Mozilla</track>
+    <type>Podium</type>
+    <language>English</language>
+    <abstract>How to get involved with the [http://www.mozilla.org/projects/calendar/sunbird/ Calendar] Project and where we are heading.</abstract>
+    <description>This presentation is a call to everyone to get involved. No matter if you prefer testing software (QA), designing interfaces or developing extensions or core code: We need you!\r
+\r
+The goal of this presentation is to show some interesting experiments you might be interested in developing, how you can use [https://addons.mozilla.org/firefox/addon/9018 mozmill] to easily record tests that help improve the software quality or what you can do as a designer if you have ideas on how to improve Calendar's visual appearance.</description>
+    <persons>
+     <person id="465">Philipp Kewisch</person>
+    </persons>
+    <links>
+     <link href="http://www.mozilla.org/projects/calendar/sunbird/">http://www.mozilla.org/projects/calendar/sunbird/</link>
+    </links>
+   </event>
+   <event id="778">
+    <start>12:00</start>
+    <duration>01:00</duration>
+    <room>H.1308</room>
+    <tag>moz_thunderbird</tag>
+    <title>Thunderbird 3: what's new, where is it heading, and how you can help</title>
+    <subtitle></subtitle>
+    <track>Mozilla</track>
+    <type>Podium</type>
+    <language>English</language>
+    <abstract>After several years of hibernation, [http://www.mozilla.com/en-US/thunderbird/ Thunderbird] development has ramped up again in the last year especially. This talk is intended to give open source hackers an update on where Thunderbird is in its runup to the Thunderbird 3 release, what new systems are available for add-on developers, and how to get involved if you want to help fix email.</abstract>
+    <description>In the first part, David Ascher, one of the drivers of Thunderbird 3, will give an overview of the important changes that have either already landed, or are in various stages of development. These include:\r
+* a whole slew of platform-level updates which fall out of the Gecko platform development.\r
+* a new SQLite &amp; JavaScript-powered database of all of your emails, which lets you build powerful new ways of reading &amp; processing mail\r
+* a set of optimizations that make the day-to-day interactions with Thunderbird much faster, thanks to moving blocking operations to background threads\r
+* new views on email, including google-style search results, conversation views, canvas-based visualizations, and more.\r
+\r
+In the second part Ludovic Hirlimann, QA lead for Thunderbird, will explain how you can involve yourself into fixing email:\r
+* Joining the QA effort - where bugs need to be reported, triaged, tests written and run.\r
+* Joining our marketing effort and help the rebirth of thunderbird ([http://www.spreadthunderbird.com/ spreadthunderbird])\r
+* Proposing patches and helping the development team.\r
+* Translating thunderbird: how to help make Thunderbird rock in your language.\r
+* Developing extensions to build the tb ecosystem.\r
+\r
+There will be plenty of time for Q&amp;A.</description>
+    <persons>
+     <person id="180">Ludovic Hirlimann</person>
+     <person id="643">David Ascher</person>
+    </persons>
+    <links>
+    </links>
+   </event>
+   <event id="779">
+    <start>14:00</start>
+    <duration>00:45</duration>
+    <room>H.1308</room>
+    <tag>moz_prism</tag>
+    <title>Prism</title>
+    <subtitle></subtitle>
+    <track>Mozilla</track>
+    <type>Podium</type>
+    <language>English</language>
+    <abstract>As Prism approaches its 1.0 release, we will discuss the current state of the project and future plans.</abstract>
+    <description>We will look at a demo of how web applications can deploy desktop integration features using Prism, including tray icons, dock/tray menus, protocol handlers, sound and bubble notifications.\r
+\r
+Future plans that will be covered include Greasemonkey support, icon/user script repository, user interface improvements and tighter integration with Firefox.</description>
+    <persons>
+     <person id="178">Matthew Gertner</person>
+    </persons>
+    <links>
+     <link href="http://labs.mozilla.com/projects/prism/">http://labs.mozilla.com/projects/prism/</link>
+    </links>
+   </event>
+   <event id="780">
+    <start>14:45</start>
+    <duration>00:45</duration>
+    <room>H.1308</room>
+    <tag>moz_mobile_fennec</tag>
+    <title>Mobile/Fennec</title>
+    <subtitle></subtitle>
+    <track>Mozilla</track>
+    <type>Podium</type>
+    <language>English</language>
+    <abstract>General overview; Fennec 1.0a2 and performance.</abstract>
+    <description></description>
+    <persons>
+     <person id="261">Mark Finkle</person>
+     <person id="356">Christian Sejersen</person>
+    </persons>
+    <links>
+    </links>
+   </event>
+   <event id="781">
+    <start>15:30</start>
+    <duration>00:45</duration>
+    <room>H.1308</room>
+    <tag>moz_embedding</tag>
+    <title>Embedding</title>
+    <subtitle></subtitle>
+    <track>Mozilla</track>
+    <type>Podium</type>
+    <language>English</language>
+    <abstract>The new embedding API</abstract>
+    <description></description>
+    <persons>
+     <person id="261">Mark Finkle</person>
+    </persons>
+    <links>
+    </links>
+   </event>
+   <event id="782">
+    <start>16:15</start>
+    <duration>00:45</duration>
+    <room>H.1308</room>
+    <tag>moz_headless</tag>
+    <title>Mozilla Headless back-end</title>
+    <subtitle></subtitle>
+    <track>Mozilla</track>
+    <type>Podium</type>
+    <language>English</language>
+    <abstract></abstract>
+    <description></description>
+    <persons>
+     <person id="644">Chris Lord</person>
+    </persons>
+    <links>
+    </links>
+   </event>
+  </room>
+  <room name="H.1309">
+   <event id="638">
+    <start>11:00</start>
+    <duration>01:00</duration>
+    <room>H.1309</room>
+    <tag>xorg_multimedia</tag>
+    <title>Multimedia processing extensions for the X Window System</title>
+    <subtitle></subtitle>
+    <track>X.org</track>
+    <type>Podium</type>
+    <language>English</language>
+    <abstract>This talk reports on experiences gained with a set of experimental extensions for multimedia processing in the X Window System. They allow to transmit compressed images and audio through the X protocol, and provide playback synchronization capabilities within the X server. This for example to build network-transparent media players and bring multimedia to classical thin clients.</abstract>
+    <description></description>
+    <persons>
+     <person id="276">Helge Bahmann</person>
+    </persons>
+    <links>
+    </links>
+   </event>
+   <event id="639">
+    <start>12:00</start>
+    <duration>01:00</duration>
+    <room>H.1309</room>
+    <tag>xorg_power_mgmt</tag>
+    <title>Aggressive power management in graphics hardware</title>
+    <subtitle></subtitle>
+    <track>X.org</track>
+    <type>Podium</type>
+    <language>English</language>
+    <abstract>Computers spend a lot of time idle, and graphics cards spend a lot of time just displaying a static image. This talk presents various techniques for reducing the power consumption of graphics hardware without any significant impact on visual quality or performance.</abstract>
+    <description></description>
+    <persons>
+     <person id="583">Matthew Garrett</person>
+    </persons>
+    <links>
+    </links>
+   </event>
+   <event id="640">
+    <start>14:00</start>
+    <duration>01:00</duration>
+    <room>H.1309</room>
+    <tag>xorg_r600_demo</tag>
+    <title>r600_demo: Programming the New GPU Generations from AMD</title>
+    <subtitle></subtitle>
+    <track>X.org</track>
+    <type>Podium</type>
+    <language>English</language>
+    <abstract>By allowing the release of r600_demo AMD has carried out a first step of their promise to release enough information for open source DRI driver development.</abstract>
+    <description>As the initial, to be released documentation will be very register centric there is hardly enough information about how the chips are actually working. This talk will give an overview over how the r6xx and r7xx chip families are to be programmed, and in which pit falls one might stumble.</description>
+    <persons>
+     <person id="231">Matthias Hopf</person>
+    </persons>
+    <links>
+    </links>
+   </event>
+   <event id="641">
+    <start>15:00</start>
+    <duration>01:00</duration>
+    <room>H.1309</room>
+    <tag>xorg_llvm_gallium</tag>
+    <title>LLVM + Gallium 3D: Mixing a compiler with a graphics framework</title>
+    <subtitle></subtitle>
+    <track>X.org</track>
+    <type>Podium</type>
+    <language>English</language>
+    <abstract>With the increasing importance of shaders, it has become necessary to use advanced optimization strategies for shader compilers.</abstract>
+    <description>This talks presents the ongoing work on integrating a compiling and optimizing framework (LLVM) with a 3D framework (Gallium 3D). We will discuss the main difficulties behind this work, the inner workings and the current developments.</description>
+    <persons>
+     <person id="230">Stéphane Marchesin</person>
+    </persons>
+    <links>
+    </links>
+   </event>
+   <event id="642">
+    <start>16:00</start>
+    <duration>01:00</duration>
+    <room>H.1309</room>
+    <tag>xorg_shader_opt</tag>
+    <title>Shader Compiler Optimisation Strategies</title>
+    <subtitle></subtitle>
+    <track>X.org</track>
+    <type>Podium</type>
+    <language>English</language>
+    <abstract>Different GPUs have different architectures and thus require different shader compiler optimisations for more optimal performance.</abstract>
+    <description>This talk explains some of the differences between both AMD, Nvidia and Intel GPUs and will present some compiler algorithms to optimise shaders accordingly.</description>
+    <persons>
+     <person id="280">Jerome Glisse</person>
+    </persons>
+    <links>
+    </links>
+   </event>
+  </room>
+  <room name="H.2213">
+   <event id="630">
+    <start>10:00</start>
+    <duration>01:00</duration>
+    <room>H.2213</room>
+    <tag>centos_intro</tag>
+    <title>Introduction to CentOS</title>
+    <subtitle></subtitle>
+    <track>Fedora+CentOS</track>
+    <type>Podium</type>
+    <language>English</language>
+    <abstract>The reasons why you need an enterprise Linux distro.</abstract>
+    <description>What is the CentOS project ? From where is it coming and where is it going ? Wanted to be involved ? What's cooking actually in the CentOS kitchen ? Let's have an interactive talk about that (and more).</description>
+    <persons>
+     <person id="186">Fabian Arrotin</person>
+    </persons>
+    <links>
+    </links>
+   </event>
+   <event id="631">
+    <start>11:00</start>
+    <duration>01:00</duration>
+    <room>H.2213</room>
+    <tag>centos_el_landscape</tag>
+    <title>Enterprise Linux Competitive Landscape</title>
+    <subtitle></subtitle>
+    <track>Fedora+CentOS</track>
+    <type>Podium</type>
+    <language>English</language>
+    <abstract></abstract>
+    <description></description>
+    <persons>
+     <person id="188">Dag Wieers</person>
+    </persons>
+    <links>
+    </links>
+   </event>
+   <event id="632">
+    <start>12:00</start>
+    <duration>00:30</duration>
+    <room>H.2213</room>
+    <tag>centos_desktop</tag>
+    <title>CentOS on the desktop</title>
+    <subtitle></subtitle>
+    <track>Fedora+CentOS</track>
+    <type>Podium</type>
+    <language>English</language>
+    <abstract>Why CentOS is a preferred choice on the desktops in the enterprise or even at home.</abstract>
+    <description></description>
+    <persons>
+     <person id="580">Toshaan Bharvani</person>
+    </persons>
+    <links>
+    </links>
+   </event>
+   <event id="634">
+    <start>12:30</start>
+    <duration>00:30</duration>
+    <room>H.2213</room>
+    <tag>centos_san</tag>
+    <title>Poor Man's SAN with CentOS and gPXE</title>
+    <subtitle></subtitle>
+    <track>Fedora+CentOS</track>
+    <type>Podium</type>
+    <language>English</language>
+    <abstract>How to boot from an iSCSI LUN.</abstract>
+    <description>CentOS can be installed onto an iSCSI LUN and you can boot from it if your hardware supports it. Usually that means you need an iSCSI HBA or at least some fancy Firmware extensions. However, it can also be done on standard-hardware by exploiting PXE.</description>
+    <persons>
+     <person id="581">Andreas Rogge</person>
+    </persons>
+    <links>
+     <link href="http://etherboot.org/">http://etherboot.org/</link>
+    </links>
+   </event>
+   <event id="633">
+    <start>13:00</start>
+    <duration>01:00</duration>
+    <room>H.2213</room>
+    <tag>centos_selinux</tag>
+    <title>Securing CentOS with SELinux</title>
+    <subtitle></subtitle>
+    <track>Fedora+CentOS</track>
+    <type>Podium</type>
+    <language>English</language>
+    <abstract>drwxr-x--x is still the normal means of security under linux, giving access rights to data to users, groups and anyone else. This method isn't very flexible, so access rights are either given for larger groups of people or the administrator is tearing out his hair because he is lost in a maze of user, file and directory structures, which make working more than complex, but don't make the system more secure. Enter SELinux, a security infrastructure which is integrated into the kernel and promises to make securing your system more flexible.</abstract>
+    <description>SELinux is a security framework which is included in the kernel of the Linux operating system. Under SELinux files don't only have the normal access rights or ACLs, but also have a context. You as a user or a program have to be able to use that context to get access - even if normal access rights would allow you to change the file. This talk gives a short overview of SELinux and talks about the tools in CentOS 5 (and Fedora) which enable you to change the behaviour of SELinux. In the second part we will secure a small daemon with the tools we learned about in part 1.</description>
+    <persons>
+     <person id="182">Ralph Angenendt</person>
+    </persons>
+    <links>
+    </links>
+   </event>
+   <event id="635">
+    <start>14:00</start>
+    <duration>01:00</duration>
+    <room>H.2213</room>
+    <tag>centos_ldap</tag>
+    <title>Large CentOS LDAP Deployments</title>
+    <subtitle></subtitle>
+    <track>Fedora+CentOS</track>
+    <type>Podium</type>
+    <language>English</language>
+    <abstract>How to support a huge number of users on a huge number of machines resulting in millions of user accounts.</abstract>
+    <description></description>
+    <persons>
+     <person id="582">Geerd-Dietger Hoffmann</person>
+    </persons>
+    <links>
+    </links>
+   </event>
+   <event id="623">
+    <start>15:00</start>
+    <duration>01:00</duration>
+    <room>H.2213</room>
+    <tag>fedora_cobbler_koan</tag>
+    <title>Cobbler &amp; Koan</title>
+    <subtitle></subtitle>
+    <track>Fedora+CentOS</track>
+    <type>Podium</type>
+    <language>English</language>
+    <abstract>Cobbler is a Linux installation server that allows for rapid setup of network installation environments.</abstract>
+    <description>Most deployments of Linux systems are very rarely just one or two systems. Once you get past just installing Linux on your home system or your workstation it is time to think about how you are going to manage installing, and if required re-installing, these groups of systems in a repeatable manner. This is where Cobbler and Koan come in.\r
+\r
+Cobbler is a next generation systems management tool designed to keep a track of not just your systems but the initial system deployment configuration, host networking and even the configuration management. Koan provides the same facilities in the new world of systemvirtualization. During this talk we aim to demonstrate just how easy Cobbler and Koan make keeping track of your Linux deployments and configurations.</description>
+    <persons>
+     <person id="573">Jasper Capel</person>
+     <person id="572">Robert Lazzurs</person>
+    </persons>
+    <links>
+     <link href="https://fedorahosted.org/cobbler/">Cobbler project</link>
+    </links>
+   </event>
+   <event id="624">
+    <start>16:00</start>
+    <duration>01:00</duration>
+    <room>H.2213</room>
+    <tag>fedora_freeipa</tag>
+    <title>FreeIPA</title>
+    <subtitle></subtitle>
+    <track>Fedora+CentOS</track>
+    <type>Podium</type>
+    <language>English</language>
+    <abstract>[http://www.freeipa.org/page/Main_Page FreeIPA] is an integrated security information management solution combining Linux (Fedora), Fedora Directory Server, MIT Kerberos, NTP, DNS.</abstract>
+    <description>It consists of a web interface and command-line administration tools. Currently it supports identity management with plans to support policy and auditing management.</description>
+    <persons>
+     <person id="468">Simo Sorce</person>
+    </persons>
+    <links>
+     <link href="http://www.freeipa.org/page/Main_Page">FreeIPA</link>
+    </links>
+   </event>
+  </room>
+  <room name="H.2214">
+   <event id="606">
+    <start>10:00</start>
+    <duration>00:45</duration>
+    <room>H.2214</room>
+    <tag>opensuse_education</tag>
+    <title>openSUSE education</title>
+    <subtitle></subtitle>
+    <track>openSUSE</track>
+    <type>Podium</type>
+    <language>English</language>
+    <abstract>The openSUSE education project has the goal is to support schools using openSUSE, create and describe additional software-packages for educational projects and create an "add-on" CD for the regular openSUSE distribution.</abstract>
+    <description>The talk gives you an overview about the project, where we are now and what has to be done.</description>
+    <persons>
+     <person id="552">Lars Vogdt</person>
+     <person id="650">Andrea Florio</person>
+    </persons>
+    <links>
+     <link href="http://www.opensuse-education.org/">openSUSE Education project</link>
+    </links>
+   </event>
+   <event id="607">
+    <start>10:45</start>
+    <duration>00:30</duration>
+    <room>H.2214</room>
+    <tag>opensuse_zypper</tag>
+    <title>Zypper - openSUSE's command line software manager</title>
+    <subtitle></subtitle>
+    <track>openSUSE</track>
+    <type>Podium</type>
+    <language>English</language>
+    <abstract>Zypper is a command line software management tool using the ZYpp library. It can be used to manage repositories, search for packages, install them, keep them up to date and more.</abstract>
+    <description>This talk will highlight it's most interesting features, tips &amp; tricks, and future plans.</description>
+    <persons>
+     <person id="553">Ján Kupec</person>
+    </persons>
+    <links>
+     <link href="http://en.opensuse.org/Zypper">Zypper</link>
+    </links>
+   </event>
+   <event id="608">
+    <start>11:15</start>
+    <duration>00:45</duration>
+    <room>H.2214</room>
+    <tag>opensuse_wine</tag>
+    <title>Wine - the free Windows Emulator</title>
+    <subtitle></subtitle>
+    <track>openSUSE</track>
+    <type>Podium</type>
+    <language>English</language>
+    <abstract>After 15 years of development Wine, the free Windows Emulator, has reached the level of completeness a 1.0 release, allowing users to now run a broad spectrum of applications between Office productivity applications, Games or speciality applications.</abstract>
+    <description>This talk will give an introduction on how Wine works, what is possible and how it all works together, why it is not slower, why emulating only the runtime environment is to a distinct advantage compared to virtual machines.</description>
+    <persons>
+     <person id="554">Marcus Meissner</person>
+    </persons>
+    <links>
+     <link href="http://winehq.org/">Wine website</link>
+    </links>
+   </event>
+   <event id="609">
+    <start>12:00</start>
+    <duration>00:45</duration>
+    <room>H.2214</room>
+    <tag>opensuse_mirrorbrain</tag>
+    <title>MirrorBrain - Free CDN for Free Software Projects</title>
+    <subtitle></subtitle>
+    <track>openSUSE</track>
+    <type>Podium</type>
+    <language>English</language>
+    <abstract>The MirrorBrain, a.k.a. the openSUSE download redirector, automatically redirects clients (web browsers, download programs) to a mirror server near them.</abstract>
+    <description>It works similar to the systems employed by sourceforge.net, mozilla.com or similar large organizations, which face a number of download requests which is too high to be practically handled by a single site. To find a mirror close to the client, the redirector "geolocates" the client by its IP address. If several mirrors are found to be suitable, the redirector load-balances requests to the mirrors based on their capabilities.</description>
+    <persons>
+     <person id="339">Peter Poeml</person>
+    </persons>
+    <links>
+     <link href="http://mirrorbrain.org/">Mirrorbrain website</link>
+    </links>
+   </event>
+   <event id="610">
+    <start>12:45</start>
+    <duration>00:45</duration>
+    <room>H.2214</room>
+    <tag>opensuse_netbooks</tag>
+    <title>openSUSE on Netbooks</title>
+    <subtitle></subtitle>
+    <track>openSUSE</track>
+    <type>Podium</type>
+    <language>English</language>
+    <abstract>Everybody loves Netbooks, so why don't use your favorite Linux distribution on it.</abstract>
+    <description>The talks shows what the pitfalls and limitations are and how to get openSUSE working on Netbooks.</description>
+    <persons>
+     <person id="336">Stefan Seyfried</person>
+    </persons>
+    <links>
+    </links>
+   </event>
+   <event id="783">
+    <start>13:30</start>
+    <duration>00:45</duration>
+    <room>H.2214</room>
+    <tag>opensuse_yast2_future</tag>
+    <title>YaST2 - Future Roadmap</title>
+    <subtitle></subtitle>
+    <track>openSUSE</track>
+    <type>Podium</type>
+    <language>English</language>
+    <abstract>On openSUSE 11.0, YaST came out with new features like a themable look and a robust &amp; fast package manager.\r
+11.1 came out with more robust solving and various minor features.</abstract>
+    <description>In this talk we will present all the features that have high priority for the next openSUSE release and areas where we are doing research that will eventually be features in future versions.</description>
+    <persons>
+     <person id="149">Duncan Mac-Vicar Prett</person>
+    </persons>
+    <links>
+    </links>
+   </event>
+   <event id="611">
+    <start>14:15</start>
+    <duration>00:30</duration>
+    <room>H.2214</room>
+    <tag>opensuse_openfate</tag>
+    <title>openFATE - How to get your most wanted features into openSUSE</title>
+    <subtitle></subtitle>
+    <track>openSUSE</track>
+    <type>Podium</type>
+    <language>English</language>
+    <abstract>Every distribution have features beside the usual version updates of packages. How to decide which feature should be in the next version, which are doable in the usually short timeframe, where to focus the energy and time of the developers? openfate makes the process more easy to track and more transparent.</abstract>
+    <description></description>
+    <persons>
+     <person id="555">Thomas Schmidt</person>
+    </persons>
+    <links>
+     <link href="https://features.opensuse.org/">openFATE project page</link>
+    </links>
+   </event>
+   <event id="612">
+    <start>14:45</start>
+    <duration>00:45</duration>
+    <room>H.2214</room>
+    <tag>opensuse_arch_collab</tag>
+    <title>Architecture of Collaboration</title>
+    <subtitle></subtitle>
+    <track>openSUSE</track>
+    <type>Podium</type>
+    <language>English</language>
+    <abstract>This session will focus on the "Architecture of Collaboration" implemented in the [http://www.kablink.org/ Kablink Open Collaboration project].</abstract>
+    <description>See how the Kablink platform allows you to build applications that solve problems while encouraging collaboration among your team members. During this session an application will be developed that takes advantage of the social networking features of Kablink while solving a common teamworking problem.</description>
+    <persons>
+     <person id="556">Brent McConnell</person>
+    </persons>
+    <links>
+     <link href="http://www.kablink.org/">Kablink website</link>
+    </links>
+   </event>
+   <event id="613">
+    <start>15:30</start>
+    <duration>00:45</duration>
+    <room>H.2214</room>
+    <tag>opensuse_gnome_team</tag>
+    <title>Bits from your GNOME team (with build service fun inside!)</title>
+    <subtitle></subtitle>
+    <track>openSUSE</track>
+    <type>Podium</type>
+    <language>English</language>
+    <abstract>At the last FOSDEM, JP Rosevear gave a good overview of what was going on the GNOME land of openSUSE. It turns out that since then, many things have happened and 2008 helped the team achieve a lot.</abstract>
+    <description>This talk will present some interesting technical changes on your desktop and how it affects the while distribution, but will also focus on the GNOME team and its processes, like for example our use of the build service.</description>
+    <persons>
+     <person id="558">Vincent Untz</person>
+    </persons>
+    <links>
+     <link href="http://en.opensuse.org/GNOME">openSUSE GNOME team</link>
+     <link href="http://en.opensuse.org/GNOME/OscGnome">osc-gnome</link>
+    </links>
+   </event>
+   <event id="614">
+    <start>16:15</start>
+    <duration>00:45</duration>
+    <room>H.2214</room>
+    <tag>opensuse_community_driven_kde</tag>
+    <title>Putting the 'open' in openSUSE : Community-driven KDE development</title>
+    <subtitle></subtitle>
+    <track>openSUSE</track>
+    <type>Podium</type>
+    <language>English</language>
+    <abstract>KDE, aka "the other desktop", is very popular in the openSUSE community. The talk will give you an overview about the KDE integration, what is new in KDE and what you will see in the next releases.</abstract>
+    <description></description>
+    <persons>
+     <person id="147">Will Stephenson</person>
+    </persons>
+    <links>
+     <link href="http://en.opensuse.org/Kde">openSUSE KDE team</link>
+    </links>
+   </event>
+  </room>
+  <room name="AW1.105">
+   <event id="722">
+    <start>09:00</start>
+    <duration>02:00</duration>
+    <room>AW1.105</room>
+    <tag>ooo_code_mac_port</tag>
+    <title>Traveling in OOo code and having Fun with the Mac port</title>
+    <subtitle></subtitle>
+    <track>OpenOffice.org</track>
+    <type>Workshop</type>
+    <language>English</language>
+    <abstract>In this workshop, I'd like to describe my recent contributions for the Mac OS X port of OpenOffice.org, and organize a travel in several modules (including one new module), explaining what we find in them, through little examples I wrote.</abstract>
+    <description>* Part1: describe the Apple Remote implementation, locate and show the involved code, explain the difficulties, the good and bad choices, how they have been improved in several child workspaces, and the future improvements. This feature does concern Mac OS X, but not only, and recent changes do concern all ports.\r
+\r
+* Part 2: I'll describe how I removed menu entries (macmenusquit child workspace) to match better with Aqua Human Interface Guidelines\r
+\r
+* Part 3 : describe the work in progress of the 3D OpenGL transitions in Impress for the Mac OS X port.\r
+\r
+Concerned languages :  C/C++ , objective C/C++, bash, perl and a bit of xsltproc\r
+Concerned modules will be: postprocess, apple_remote, vcl, sd, scp2, slideshow, config_office, officecfg</description>
+    <persons>
+     <person id="59">Eric Bachard</person>
+    </persons>
+    <links>
+    </links>
+   </event>
+   <event id="721">
+    <start>11:00</start>
+    <duration>02:00</duration>
+    <room>AW1.105</room>
+    <tag>ooo_calc_profiling</tag>
+    <title>OOoCalc Bug Hunting and Performance Profiling Workshop</title>
+    <subtitle></subtitle>
+    <track>OpenOffice.org</track>
+    <type>Workshop</type>
+    <language>English</language>
+    <abstract>The workshop will give an overview of how to dive into the OooCalc spreadsheet code for bug hunting, using a gdb debug session. If time permits we will fix an issue live during the workshop. The second part of the workshop will give an introduction to performance profiling using the valgrind and kcachegrind tools to spot performance bottlenecks.</abstract>
+    <description></description>
+    <persons>
+     <person id="621">Eike Rathke</person>
+    </persons>
+    <links>
+    </links>
+   </event>
+   <event id="793">
+    <start>14:00</start>
+    <duration>02:00</duration>
+    <room>AW1.105</room>
+    <tag>moz_marketing_cafe</tag>
+    <title>Mozilla Marketing Café</title>
+    <subtitle></subtitle>
+    <track>Mozilla</track>
+    <type>Meeting</type>
+    <language>English</language>
+    <abstract>Members of Mozilla's marketing team will lead an informal brainstorm/discussion on open source marketing over fresh coffee and biscuits.</abstract>
+    <description>This session is open to all those interested in talking about the marketing of open source projects and learning more about how Mozilla Communiy Marketing works.</description>
+    <persons>
+     <person id="641">John Slater</person>
+     <person id="654">William Quiviger</person>
+    </persons>
+    <links>
+    </links>
+   </event>
+  </room>
+  <room name="AW1.115">
+  </room>
+  <room name="AW1.117">
+   <event id="728">
+    <start>09:00</start>
+    <duration>01:00</duration>
+    <room>AW1.117</room>
+    <tag>geo_gc_objc</tag>
+    <title>Garbage collection with Objective-C</title>
+    <subtitle></subtitle>
+    <track>GNUstep+OpenGroupware+Etoile</track>
+    <type>Podium</type>
+    <language>English</language>
+    <abstract>The history of GC in Objective-C, how to develop garbage collected applications, and a review of how the venerable GNUstep implementation is going to be compatibile with the new Apple garbage collection implementation for MacOS-X/Cocoa.</abstract>
+    <description></description>
+    <persons>
+     <person id="623">Richard Frith-Macdonald</person>
+    </persons>
+    <links>
+    </links>
+   </event>
+   <event id="729">
+    <start>10:00</start>
+    <duration>01:00</duration>
+    <room>AW1.117</room>
+    <tag>geo_gap_price</tag>
+    <title>GAP Applications + PRICE</title>
+    <subtitle></subtitle>
+    <track>GNUstep+OpenGroupware+Etoile</track>
+    <type>Podium</type>
+    <language>English</language>
+    <abstract>[http://www.nongnu.org/gap/ GAP (GNUstep Application Project)] seeks to develop a comprehensive set of administration and user level tools to make using the GNUstep environment a very pleasant experience. \r
+\r
+[http://price.sourceforge.net/ PRICE (Precision Raster Image Convolution Engine)] is an application that is capable of filtering and processing images.</abstract>
+    <description>* Introduction to the GNUstep Application Project (GAP)\r
+* current status and future goals\r
+* Overview on some applications:\r
+ * FTP\r
+ * BatteryMonitor\r
+ * LaternaMagica\r
+ * Vespucci\r
+* PRICE capabilties and architecture</description>
+    <persons>
+     <person id="624">Riccardo Mottola</person>
+    </persons>
+    <links>
+    </links>
+   </event>
+   <event id="730">
+    <start>11:00</start>
+    <duration>01:00</duration>
+    <room>AW1.117</room>
+    <tag>geo_pragmatic_smalltalk</tag>
+    <title>Pragmatic Smalltalk</title>
+    <subtitle></subtitle>
+    <track>GNUstep+OpenGroupware+Etoile</track>
+    <type>Podium</type>
+    <language>English</language>
+    <abstract>Pragmatic Smalltalk is a new Smalltalk implementation for [http://etoileos.com/etoile/ Etoile], allowing developers to combine the power and flexibility of Smalltalk with the Etoile and GNUstep frameworks.\r
+\r
+It is based on LLVM and the GNU Objective-C runtime, allowing programmers to freely mix Objective-C and Smalltalk in their program.</abstract>
+    <description>I will present the current state of our implementation as well as the ongoing work on the development environment.</description>
+    <persons>
+     <person id="92">Nicolas Roard</person>
+    </persons>
+    <links>
+    </links>
+   </event>
+   <event id="731">
+    <start>12:00</start>
+    <duration>01:00</duration>
+    <room>AW1.117</room>
+    <tag>geo_server_apps</tag>
+    <title>Building Server Applications using Objective-C and GNUstep</title>
+    <subtitle></subtitle>
+    <track>GNUstep+OpenGroupware+Etoile</track>
+    <type>Podium</type>
+    <language>English</language>
+    <abstract>This presentation introduces server application development using Objective-C and GNUstep.</abstract>
+    <description>GNUstep provides a full, mature environment for building large-scale "enterprise" server software in Objective-C.\r
+\r
+The talk introduces the various components and discusses how to best take advantage of them in real-world projects.</description>
+    <persons>
+     <person id="86">Nicola Pero</person>
+    </persons>
+    <links>
+    </links>
+   </event>
+   <event id="732">
+    <start>14:00</start>
+    <duration>01:00</duration>
+    <room>AW1.117</room>
+    <tag>groupdav_caldav_meet</tag>
+    <title>GroupDAV/CalDAV Implementors Meeting</title>
+    <subtitle></subtitle>
+    <track>GNUstep+OpenGroupware+Etoile</track>
+    <type>Meeting</type>
+    <language>English</language>
+    <abstract>This is not a talk but a gathering of implementors of WebDAV based groupware protocols.</abstract>
+    <description>CalDAV, CardDAV and GroupDAV are HTTP/REST based client/server protocols for groupware systems. Prior CalDAV, every groupware system invented its own protocols for client/server communication. With CalDAV we finally have found a protocol which actually gets implemented by the majority of FOSS server and client projects.\r
+\r
+The GroupDAV/CalDAV implementor meeting attempts to bring to together developers from various groupware systems, including Kontact, Evolution, Mozilla Sunbird/Lightning, OGo, Horde, eGroupware, etc.\r
+\r
+Anyone with an interest in Groupware protocols is invited to join and discuss.</description>
+    <persons>
+     <person id="500">Helge Heß</person>
+    </persons>
+    <links>
+    </links>
+   </event>
+  </room>
+  <room name="AW1.120">
+   <event id="691">
+    <start>09:00</start>
+    <duration>00:15</duration>
+    <room>AW1.120</room>
+    <tag>ror_welcome</tag>
+    <title>Welcome to the Ruby and Rails devroom</title>
+    <subtitle></subtitle>
+    <track>Ruby and Rails</track>
+    <type>Other</type>
+    <language>English</language>
+    <abstract>Welcome to the Ruby and Rails developer room at FOSDEM 2009.</abstract>
+    <description></description>
+    <persons>
+     <person id="281">Peter Vandenabeele</person>
+    </persons>
+    <links>
+    </links>
+   </event>
+   <event id="692">
+    <start>09:15</start>
+    <duration>00:45</duration>
+    <room>AW1.120</room>
+    <tag>ror_ironruby</tag>
+    <title>IronRuby with .NET technologies</title>
+    <subtitle></subtitle>
+    <track>Ruby and Rails</track>
+    <type>Podium</type>
+    <language>English</language>
+    <abstract>* A brief discussion of what the DLR is and what it brings to the table in .NET/MONO.\r
+* Introduction on how IronRuby could possibly ease rails deployment on IIS Silverlight as cross-platform GUI toolkit. \r
+* How to use silverlight to run ruby in the browser much like javascript\r
+* Silverline: an integration for Silverlight with Rails.</abstract>
+    <description></description>
+    <persons>
+     <person id="601">Ivan Porto Carrero</person>
+    </persons>
+    <links>
+     <link href="http://www.ironruby.net/">IronRuby</link>
+    </links>
+   </event>
+   <event id="693">
+    <start>10:00</start>
+    <duration>00:30</duration>
+    <room>AW1.120</room>
+    <tag>ror_prawn</tag>
+    <title>Prawn</title>
+    <subtitle></subtitle>
+    <track>Ruby and Rails</track>
+    <type>Podium</type>
+    <language>English</language>
+    <abstract>[http://prawn.majesticseacreature.com/ Prawn] is Ruby's solution to generate PDF files.</abstract>
+    <description>In this talk, you'll get an overview of the history of the project, the direction it is going in, learn how to create PDFs with Ruby, and even get some code snippets to get you started!</description>
+    <persons>
+     <person id="602">Tom Klaasen</person>
+    </persons>
+    <links>
+     <link href="http://prawn.majesticseacreature.com/">Prawn website</link>
+    </links>
+   </event>
+   <event id="694">
+    <start>10:30</start>
+    <duration>00:30</duration>
+    <room>AW1.120</room>
+    <tag>ror_logilogi</tag>
+    <title>LogiLogi and Freedom on the Brave New Web</title>
+    <subtitle></subtitle>
+    <track>Ruby and Rails</track>
+    <type>Podium</type>
+    <language>English</language>
+    <abstract>[http://en.logilogi.org/ LogiLogi] is a hypertext platform featuring a rating-system that models peer review and other valuable social processes surrounding academic writing (in line with Bruno Latour). Contrary to early websystems it does not make use of forum-threads (avoiding their many problems), but of tags and links that can also be added to articles by others than the original author.</abstract>
+    <description>The talk will be on several topics; On LogiLogi.org, a webplatform for philosophers written in Rails and on the LogiLogi Foundation which thinks Web-Applications should be Free Software too, that is Affero GPLed, if Free Software is to have a future on the Brave New Web. That is we should think beyond Stallman's: one should not rely on another’s machine to “do calculations with ones data”.\r
+\r
+Also by the end of january we will have extracted and released some gems and Rails plugins, one for creating Spam-free forms without captchas (in this way http://nedbatchelder.com/text/stopbots.html) and yet another solution for the rounded corners problem (and scaling and resizing SVG back-ground images in general) using javascript and RMagick. We might at the end shortly demonstrate these too if the audience wishes.\r
+\r
+LogiLogi is a fully RESTfull Rails-app, which is Free Software.</description>
+    <persons>
+     <person id="603">Wybo Wiersma</person>
+    </persons>
+    <links>
+    </links>
+   </event>
+   <event id="695">
+    <start>11:15</start>
+    <duration>00:45</duration>
+    <room>AW1.120</room>
+    <tag>ror_myowndb</tag>
+    <title>MyOwnDB/Dedomenon</title>
+    <subtitle></subtitle>
+    <track>Ruby and Rails</track>
+    <type>Podium</type>
+    <language>English</language>
+    <abstract>[http://www.myowndb.com Myowndb] was launched early 2006 as one of the first Web databases exploiting Ajax to present its users with an easy to use interface.\r
+The software is based on Ruby on Rails and Postgresql, and is developed by Free and Open Source Software developers, who released the MyOwnDb.com engine under the AGPLv3 at [http://www.dedomenon.org dedomenon.org].</abstract>
+    <description>This session will introduce you to the software, show how it was developed with flexibility and extensibility in mind and how easy it is to adapt it to your own needs.</description>
+    <persons>
+     <person id="14">Raphaël Bauduin</person>
+    </persons>
+    <links>
+     <link href="http://www.dedomenon.org">Dedomenon</link>
+     <link href="http://www.myowndb.com">MyOwnDB</link>
+    </links>
+   </event>
+   <event id="697">
+    <start>12:00</start>
+    <duration>00:30</duration>
+    <room>AW1.120</room>
+    <tag>ror_wt_ruby</tag>
+    <title>Developing Web applications with Wt::Ruby</title>
+    <subtitle></subtitle>
+    <track>Ruby and Rails</track>
+    <type>Podium</type>
+    <language>English</language>
+    <abstract>The Wt toolkit allows programmers to develop web applications in C++. It abstracts away the details of coding in HTML, JavaScript and CSS so that the developer can just work with widgets in a similar manner to the Qt library for desktop applications. When Wt is combined with Ruby via the Wt::Ruby bindings, it offers a very different approach to the more traditional Rails or ASP style approach based on web pages, where program code is embedded into HTML.</abstract>
+    <description>The talk will discuss how Wt::Ruby works, give an overview of the api and how it can be used with FastCGI in an Apache server. There are many interesting possibilities to combine Rails technology, such as ActiveRecord or the ActiveSupport Ruby extensions, with Wt::Ruby and the talk would hope to inspire people to start experimenting. </description>
+    <persons>
+     <person id="604">Richard Dale</person>
+    </persons>
+    <links>
+     <link href="http://github.com/rdale/wtruby">Wt::Ruby</link>
+    </links>
+   </event>
+   <event id="696">
+    <start>13:30</start>
+    <duration>00:45</duration>
+    <room>AW1.120</room>
+    <tag>ror_objects</tag>
+    <title>On objects, classes, binding and scoping in Ruby</title>
+    <subtitle></subtitle>
+    <track>Ruby and Rails</track>
+    <type>Podium</type>
+    <language>English</language>
+    <abstract>This presentation delves into Ruby's object model.</abstract>
+    <description>Ruby's object model is class-based, so we cannot discuss objects without including classes. Next we discuss bindings and scoping in Ruby, which are somewhat related but still two different concepts. This presentation intends to go beyond the knowledge of the average Rubyist and aims to teach you more about the intricate details of how Ruby works and how you can exploit these to your advantage, even if just to wow (TM) your coworkers.</description>
+    <persons>
+     <person id="605">Peter Vanbroekhoven</person>
+    </persons>
+    <links>
+    </links>
+   </event>
+   <event id="698">
+    <start>14:15</start>
+    <duration>00:30</duration>
+    <room>AW1.120</room>
+    <tag>ror_sinatra</tag>
+    <title>Introduction to Sinatra</title>
+    <subtitle></subtitle>
+    <track>Ruby and Rails</track>
+    <type>Podium</type>
+    <language>English</language>
+    <abstract>[http://sinatra.rubyforge.org/ Sinatra] is a Domain Specific Language(DSL) for quickly creating web-applications in ruby. It keeps a minimal feature set, leaving the developer to use the tools that best suit them and their application.</abstract>
+    <description>With Sinatra you can build a web application in a single file, which makes it fun and easy to use.</description>
+    <persons>
+     <person id="282">Koen Van der Auwera</person>
+    </persons>
+    <links>
+     <link href="http://sinatra.rubyforge.org/">Sinatra</link>
+    </links>
+   </event>
+   <event id="699">
+    <start>14:45</start>
+    <duration>00:30</duration>
+    <room>AW1.120</room>
+    <tag>ror_ruby_and_java</tag>
+    <title>Ruby and Java: What are the differences?</title>
+    <subtitle></subtitle>
+    <track>Ruby and Rails</track>
+    <type>Podium</type>
+    <language>English</language>
+    <abstract>Ruby is quite often presented as the Java successor. This is a highly controversial purpose. However, when you start a new project it can be important to know what are the advantages of these two great languages. In this talk, we will present their differences.</abstract>
+    <description>Java is a well-established and well-known language. In opposite, Ruby is a rising star which is not mastered by everybody yet. When you start to develop a new project you have to make a language choice. It is not always easy to choose between learning an exciting new language or relying on a popular highly-used one.\r
+\r
+In this talk, I will discuss the pros and cons of Ruby and Java, what are the best trade-offs for your application and what are the performance differences. I will show that it is not that complicated to learn Ruby coming from Java. From a business point of view, I will also explain why a good language choice can help you saving money.\r
+\r
+Here is a brief talk summary :\r
+* Ruby vs. Java syntax\r
+* Interpreted or compiled languages\r
+* Dynamic typing\r
+* Metaprogramation\r
+* Language related philosophies\r
+* Performance comparison\r
+\r
+We will also have a quick peek at JRuby, the Ruby interpreter build upon JVM.</description>
+    <persons>
+     <person id="283">Jean-Baptiste Escoyez</person>
+    </persons>
+    <links>
+     <link href="http://www.rubyrailways.com/sometimes-less-is-more/">http://www.rubyrailways.com/sometimes-less-is-more/</link>
+     <link href="http://www.javaworld.com/javaworld/jw-07-2006/jw-0717-ruby.html">http://www.javaworld.com/javaworld/jw-07-2006/jw-0717-ruby.html</link>
+     <link href="http://www.dmh2000.com/cjpr/">http://www.dmh2000.com/cjpr/</link>
+    </links>
+   </event>
+   <event id="700">
+    <start>15:30</start>
+    <duration>00:45</duration>
+    <room>AW1.120</room>
+    <tag>ror_i18n_rails_2_2</tag>
+    <title>Internationalization in Rails 2.2</title>
+    <subtitle></subtitle>
+    <track>Ruby and Rails</track>
+    <type>Podium</type>
+    <language>English</language>
+    <abstract>This talk will discuss how the new i18n framework of Rails 2.2 eases the translation of rails applications in multiple languages.</abstract>
+    <description>Probably the biggest new feature of Rails 2.2, released in November 2008, is its integrated internationalization framework, which ends a complicated past of many incompatible solutions based on various gems and plugins.\r
+\r
+This talk will discuss the various following topics:\r
+* a brief recap of the history of i18n in rails\r
+* an explanation what the new framework does:\r
+** the API and its implementations\r
+** translation files\r
+** namespaces\r
+** interpolation and pluralization\r
+* a small demo of how to use the framework\r
+* a presentation of plugins available to extend the framework\r
+* a list of valuable external resources</description>
+    <persons>
+     <person id="606">Nicolas Jacobeus</person>
+    </persons>
+    <links>
+     <link href="http://rails-i18n.org/">http://rails-i18n.org/</link>
+    </links>
+   </event>
+   <event id="701">
+    <start>16:15</start>
+    <duration>00:45</duration>
+    <room>AW1.120</room>
+    <tag>ror_hosting</tag>
+    <title>Hosting ruby on rails</title>
+    <subtitle></subtitle>
+    <track>Ruby and Rails</track>
+    <type>Podium</type>
+    <language>English</language>
+    <abstract>Real-life experiences in designing, engineering and supporting hosting environments.</abstract>
+    <description>Choosing the right technologies, tying them together and debugging errors in the stacks. Practical examples, benchmarks and code-snippets to inform and entertain...</description>
+    <persons>
+     <person id="607">Bernard Grymonpon</person>
+    </persons>
+    <links>
+     <link href="http://www.wonko.be">http://www.wonko.be</link>
+     <link href="http://www.openminds.be">http://www.openminds.be</link>
+    </links>
+   </event>
+  </room>
+  <room name="AW1.121">
+   <event id="785">
+    <start>09:30</start>
+    <duration>00:30</duration>
+    <room>AW1.121</room>
+    <tag>debian_font_task_force</tag>
+    <title>Debian Font Task Force: overview and impact on the open font community</title>
+    <subtitle></subtitle>
+    <track>Debian</track>
+    <type>Podium</type>
+    <language>English</language>
+    <abstract>A quick overview of the work done by the Debian Fonts task force.</abstract>
+    <description>* the needs and challenges,\r
+* the growing body of open fonts available,\r
+* the impact on i18n,\r
+* some tips on finding/using/managing open fonts,\r
+* the toolkit for designing/contributing to existing projects and the wider open font community: OpenFontLibrary,\r
+* freedesktop.org,\r
+* cross-distro collaboration,\r
+* etc. \r
+\r
+And how you can help.</description>
+    <persons>
+     <person id="646">Nicolas Spalinger</person>
+    </persons>
+    <links>
+     <link href="http://pkg-fonts.alioth.debian.org/">http://pkg-fonts.alioth.debian.org/</link>
+    </links>
+   </event>
+   <event id="710">
+    <start>10:00</start>
+    <duration>01:00</duration>
+    <room>AW1.121</room>
+    <tag>debian_tdebs</tag>
+    <title>TDebs</title>
+    <subtitle></subtitle>
+    <track>Debian</track>
+    <type>Podium</type>
+    <language>English</language>
+    <abstract>Tdebs - translation packages. A guide to the draft TDeb specification and how this support can be implemented in Debian Squeeze with actual .tdebs arriving in Squeeze+1.</abstract>
+    <description>Includes a discussion to improve the specification itself.</description>
+    <persons>
+     <person id="318">Neil Williams</person>
+    </persons>
+    <links>
+     <link href="http://people.debian.org/~codehelp/tdeb/">http://people.debian.org/~codehelp/tdeb/</link>
+    </links>
+   </event>
+   <event id="711">
+    <start>11:00</start>
+    <duration>01:00</duration>
+    <room>AW1.121</room>
+    <tag>debian_i18n</tag>
+    <title>Internationalization in Debian: How to improve further?</title>
+    <subtitle></subtitle>
+    <track>Debian</track>
+    <type>Podium</type>
+    <language>English</language>
+    <abstract>Nicolas will present the status of the localization support for  Lenny. He will then present the tools and processes for translators, developers, and maintainers which permitted these achievements, and how they could be improved.</abstract>
+    <description></description>
+    <persons>
+     <person id="615">Nicolas François</person>
+    </persons>
+    <links>
+    </links>
+   </event>
+   <event id="712">
+    <start>12:00</start>
+    <duration>01:00</duration>
+    <room>AW1.121</room>
+    <tag>debian_cdbs</tag>
+    <title>The Common Debian Build System (CDBS)</title>
+    <subtitle></subtitle>
+    <track>Debian</track>
+    <type>Podium</type>
+    <language>English</language>
+    <abstract>CDBS is a set of makefile fragments that you can include into debian/rules to automate common routines for building Debian packages.</abstract>
+    <description>It has evenly divided the Debian community into lovers and haters. In this presentation, Peter will present the background and functionality of CDBS, discuss some of the criticisms, and muse about future plans.</description>
+    <persons>
+     <person id="616">Peter Eisentraut</person>
+    </persons>
+    <links>
+    </links>
+   </event>
+   <event id="713">
+    <start>13:00</start>
+    <duration>01:00</duration>
+    <room>AW1.121</room>
+    <tag>debian_release_mgmt</tag>
+    <title>Release management in Debian - can we do better?</title>
+    <subtitle></subtitle>
+    <track>Debian</track>
+    <type>Podium</type>
+    <language>English</language>
+    <abstract>Using some practical examples, mostly from personal experience,  of things that have not been handled optimaly during the lenny release cycle, I will give my view on how they could have been handled better. I will also take a more general look at the current role of release managers and the release team in Debian and look back on the Etch-and-a-half release.</abstract>
+    <description></description>
+    <persons>
+     <person id="162">Frans Pop</person>
+    </persons>
+    <links>
+    </links>
+   </event>
+   <event id="714">
+    <start>14:00</start>
+    <duration>01:00</duration>
+    <room>AW1.121</room>
+    <tag>debian_lenny_release</tag>
+    <title>Lenny - the road to release</title>
+    <subtitle></subtitle>
+    <track>Debian</track>
+    <type>Podium</type>
+    <language>English</language>
+    <abstract>With the archive now frozen, the Lenny release isn't far away. What does this mean for the average developer?</abstract>
+    <description>This talk introduces the Release Team, the policies behind freezes, removals, binNMUs, and general release management in Debian.</description>
+    <persons>
+     <person id="617">Neil McGovern</person>
+    </persons>
+    <links>
+    </links>
+   </event>
+   <event id="715">
+    <start>15:00</start>
+    <duration>01:00</duration>
+    <room>AW1.121</room>
+    <tag>debian_kde4</tag>
+    <title>The long road to KDE4 in Debian</title>
+    <subtitle></subtitle>
+    <track>Debian</track>
+    <type>Podium</type>
+    <language>English</language>
+    <abstract></abstract>
+    <description>This talk will handle a variety of topics, including but not limited to:\r
+* Packaging with cmake, and packaging KDE4 applications in general\r
+* Distributions' adapations of KDE: merging in patches, fixing up build systems, backporting features, and other such things\r
+* New KDE4 technologies for stale Debian people: why you need Java and MySQL for a proper desktop\r
+* The road to KDE4 in testing</description>
+    <persons>
+     <person id="618">Sune Vuorela</person>
+    </persons>
+    <links>
+    </links>
+   </event>
+   <event id="716">
+    <start>16:00</start>
+    <duration>01:00</duration>
+    <room>AW1.121</room>
+    <tag>debian_gsoc2008</tag>
+    <title>Debian and Google Summer of Code 2008: wrap-up and insights</title>
+    <subtitle></subtitle>
+    <track>Debian</track>
+    <type>Podium</type>
+    <language>English</language>
+    <abstract>Twelve Debian projects were funded this year ranging from network and package management to hardware support, QA and security.\r
+\r
+Let's have a look at the resulting software and give some insights for the next Summer of Code and student involvment.</abstract>
+    <description></description>
+    <persons>
+     <person id="619">Obey Arthur Liu</person>
+    </persons>
+    <links>
+    </links>
+   </event>
+  </room>
+  <room name="AW1.124">
+   <event id="542">
+    <start>10:00</start>
+    <duration>01:00</duration>
+    <room>AW1.124</room>
+    <tag>ada_gprbuild</tag>
+    <title>GPRBuild - A New Build Tool for Large-Scale Software Development</title>
+    <subtitle></subtitle>
+    <track>Ada</track>
+    <type>Podium</type>
+    <language>English</language>
+    <abstract>GPRBuild is a Free (GPL) modern multi-language builder from AdaCore.</abstract>
+    <description>It is a configurable tool that is able to drive a large number of tool chains, both native and cross, of many languages, such as Ada, C, C++, Fortran, Assembler, etc.  With GPRBuild, you are able to build systems written in one or several languages, with the main program in any language.\r
+\r
+GPRBuild (re)compiles sources, (re)builds libraries and (re)links executables.</description>
+    <persons>
+     <person id="503">Vincent Celier</person>
+    </persons>
+    <links>
+     <link href="http://www.adacore.com/2008/11/18/gprbuild-120">GPRBuild 1.2.0</link>
+    </links>
+   </event>
+   <event id="576">
+    <start>11:00</start>
+    <duration>01:00</duration>
+    <room>AW1.124</room>
+    <tag>ada_oop_model</tag>
+    <title>The Object-Oriented Programming Model in Ada 2005</title>
+    <subtitle></subtitle>
+    <track>Ada</track>
+    <type>Podium</type>
+    <language>English</language>
+    <abstract>This presentation exposes how Ada handles the object oriented paradigm, and especially how its model is different from what is commonly found in other languages. It discusses the benefits and drawbacks of this original approach.</abstract>
+    <description></description>
+    <persons>
+     <person id="502">Jean-Pierre Rosen</person>
+    </persons>
+    <links>
+     <link href="http://adaic.org/standards/95rat/RAThtml/rat95-p2-4.html">Ada Object Oriented Programming in Ada 2005</link>
+     <link href="http://adaic.org/standards/05rat/html/Rat-2.html">Rationale for Ada 2005: Object oriented model</link>
+    </links>
+   </event>
+   <event id="543">
+    <start>12:00</start>
+    <duration>01:00</duration>
+    <room>AW1.124</room>
+    <tag>ada_ast2cfg</tag>
+    <title>Ast2Cfg - A Framework for CFG-Based Analysis and Visualisation of Ada Programs</title>
+    <subtitle></subtitle>
+    <track>Ada</track>
+    <type>Podium</type>
+    <language>English</language>
+    <abstract>The control flow graph is the basis for many code optimisation and analysis techniques. [http://cfg.w3x.org/ast2cfg/ast2cfg.html Ast2Cfg] is a Free Software framework for the construction of powerful CFG-based representations of arbitrary Ada programs.</abstract>
+    <description>The generated data holds extensive information about the original Ada source, such as visibility, package structure and type definitions and provides means for complete interprocedural analysis.\r
+\r
+Ast2Cfg was developed exclusively with Free Software like GNAT, the GNU Ada Compiler, and ASIS-for-GNAT.  This presentation gives an overview on how to use the Ast2Cfg framework, and includes basics on the used data structures, an introduction to the architecture and a thorough coverage of the programming interface with numerous examples.</description>
+    <persons>
+     <person id="507">Georg Kienesberger</person>
+    </persons>
+    <links>
+    </links>
+   </event>
+   <event id="544">
+    <start>13:00</start>
+    <duration>01:00</duration>
+    <room>AW1.124</room>
+    <tag>ada_bof_1</tag>
+    <title>Ada informal discussions Lunch Time</title>
+    <subtitle></subtitle>
+    <track>Ada</track>
+    <type>Podium</type>
+    <language>English</language>
+    <abstract>Adalog and AdaCore Stands</abstract>
+    <description></description>
+    <persons>
+     <person id="622">Valentine Reboul</person>
+    </persons>
+    <links>
+    </links>
+   </event>
+   <event id="546">
+    <start>14:00</start>
+    <duration>01:00</duration>
+    <room>AW1.124</room>
+    <tag>ada_marte_os</tag>
+    <title>MaRTE-OS</title>
+    <subtitle></subtitle>
+    <track>Ada</track>
+    <type>Podium</type>
+    <language>English</language>
+    <abstract>MaRTE-OS, A Hard Real-Time Operating System for Embedded Devices.\r
+\r
+[http://marte.unican.es MaRTE-OS] is a Free (GPL) operating system developed in Ada that complies with the POSIX.13 minimal real-time subset (also known as "the toaster profile") and Ada Real-Time Systems Annex D.</abstract>
+    <description>It is thread based (no support for processes or different memory spaces and MMU's) and provides all synchronisation and timing features of the POSIX Real Time standard. It can run as stand-alone (providing full Real-Time capabilitiies with support for drivers and real-time networks) or as a\r
+Linux process (handling task scheduling itself and possibly interacting with Linux shared libraries and filesystems). Applications can be developed in Ada 2005, C or C++. The talk will present MaRTE features, the choice of Ada for Real-Time, developement environments and a demo from the [http://www.frescor.org FRESCOR project].</description>
+    <persons>
+     <person id="509">Daniel Sangorrín</person>
+     <person id="508">Miguel Telleria de Esteban</person>
+    </persons>
+    <links>
+     <link href="http://www.frescor.org/">FRESCOR</link>
+     <link href="http://marte.unican.es/">MaRTE OS</link>
+    </links>
+   </event>
+   <event id="547">
+    <start>15:00</start>
+    <duration>01:00</duration>
+    <room>AW1.124</room>
+    <tag>ada_gnatbench</tag>
+    <title>GNATBench: Ada programming with Eclipse</title>
+    <subtitle></subtitle>
+    <track>Ada</track>
+    <type>Podium</type>
+    <language>English</language>
+    <abstract>The [https://libre.adacore.com/GNATbench GNATbench plug-in for Eclipse] brings the advantages of AdaCore's GNAT toolset to Wind River's Workbench integrated development environment for embedded systems running VxWorks.</abstract>
+    <description></description>
+    <persons>
+     <person id="503">Vincent Celier</person>
+    </persons>
+    <links>
+     <link href="http://www.adacore.com/2008/10/02/gnatbench-220-211">GNATbench</link>
+    </links>
+   </event>
+  </room>
+  <room name="AW1.125">
+   <event id="657">
+    <start>10:00</start>
+    <duration>00:15</duration>
+    <room>AW1.125</room>
+    <tag>java_cacao</tag>
+    <title>Cacao</title>
+    <subtitle></subtitle>
+    <track>Free Java</track>
+    <type>Podium</type>
+    <language>English</language>
+    <abstract>This talk will give a short summary of what happened to [http://www.cacaovm.org/ Cacao] over the past year.</abstract>
+    <description>Michael will cover a selective overview of the most interesting topics and also present a short roadmap of things to \r
+come.</description>
+    <persons>
+     <person id="569">Michael Starzinger</person>
+    </persons>
+    <links>
+     <link href="http://www.cacaovm.org">http://www.cacaovm.org</link>
+    </links>
+   </event>
+   <event id="658">
+    <start>10:15</start>
+    <duration>00:30</duration>
+    <room>AW1.125</room>
+    <tag>java_vmkit</tag>
+    <title>VMKit</title>
+    <subtitle></subtitle>
+    <track>Free Java</track>
+    <type>Podium</type>
+    <language>English</language>
+    <abstract>The talk will describe [http://vmkit.llvm.org/ VMKit], a Java virtual machine and CLI implementation (.Net is Microsoft's implementation of the CLI) on top of the LLVM compiler infrastructure.</abstract>
+    <description>It will enlighten the benefits of using a shared compiler infrastructure such as LLVM as well as the current limitations. Finally, the talk will introduce VM experiments happening in the JVM implementation.</description>
+    <persons>
+     <person id="564">Nicolas Geoffray</person>
+    </persons>
+    <links>
+     <link href="http://vmkit.llvm.org/">VMKit website</link>
+    </links>
+   </event>
+   <event id="659">
+    <start>10:45</start>
+    <duration>00:15</duration>
+    <room>AW1.125</room>
+    <tag>java_jikes</tag>
+    <title>Jikes RVM 3</title>
+    <subtitle></subtitle>
+    <track>Free Java</track>
+    <type>Podium</type>
+    <language>English</language>
+    <abstract>Jikes RVM has turned ten years old and to wish it a happy birthday this talk will give a brief review of its history, notable events in its life time and where it is currently heading.</abstract>
+    <description></description>
+    <persons>
+     <person id="192">Ian Rogers</person>
+    </persons>
+    <links>
+    </links>
+   </event>
+   <event id="660">
+    <start>11:00</start>
+    <duration>00:30</duration>
+    <room>AW1.125</room>
+    <tag>java_phoneme_vm</tag>
+    <title>PhoneME CLDC and CDC VMs</title>
+    <subtitle></subtitle>
+    <track>Free Java</track>
+    <type>Podium</type>
+    <language>English</language>
+    <abstract>[http://www.mobileandembedded.org The Java Mobile &amp; Embedded Community] hosts Sun's GPL'ed Java ME VM projects called phoneME Feature and phoneME Advanced.</abstract>
+    <description>phoneME Feature is a product-quality, highly-optimized CLDC/MIDP stack designed for resource-constrained platforms such as mobile phones and embedded devices. The commercial version has shipped millions of times. \r
+\r
+phoneME Advanced is a product-quality, highly-optimized CDC/FP/PBP stack designed for advanced platforms such as smart-phones set-top boxes, IP TV, and other higher-end embedded applications. It is the base for many interesting projects and products, beating most other embedded VMs in performance, footprint, and robustness. \r
+\r
+Let us introduce you to both VMs, their communities and code bases, and show you some of the interesting projects they are being used in.</description>
+    <persons>
+     <person id="565">Terrence Barr</person>
+    </persons>
+    <links>
+    </links>
+   </event>
+   <event id="661">
+    <start>11:45</start>
+    <duration>00:30</duration>
+    <room>AW1.125</room>
+    <tag>java_grails_netbeans</tag>
+    <title>Groovy Grails for NetBeans</title>
+    <subtitle></subtitle>
+    <track>Free Java</track>
+    <type>Podium</type>
+    <language>English</language>
+    <abstract>This short talk should give Java/NetBeans developers an overview about how the [http://wiki.netbeans.org/Groovy Groovy and Grails support in NetBeans] works under the hood.</abstract>
+    <description></description>
+    <persons>
+     <person id="566">Matthias Schmidt</person>
+    </persons>
+    <links>
+    </links>
+   </event>
+   <event id="662">
+    <start>12:15</start>
+    <duration>00:30</duration>
+    <room>AW1.125</room>
+    <tag>java_universal_vm</tag>
+    <title>Towards a Universal VM</title>
+    <subtitle></subtitle>
+    <track>Free Java</track>
+    <type>Podium</type>
+    <language>English</language>
+    <abstract>The Java Virtual Machine is often assumed to  be tied to the Java programming language, but the success of Groovy, JRuby, and Jython shows there is more to the JVM than meets the eye.</abstract>
+    <description>This talk will look at aspects of the design of the JVM that make it suitable (or not) for non-Java languages, and explains how JSR 292 is designing new abstractions that can help the implementation of all languages.\r
+\r
+These include the "invokedynamic" instruction, interface injection, and lightweight methods. Ultimately, they might enable non-Java languages to run even faster on the JVM than Java itself.</description>
+    <persons>
+     <person id="568">Alex Buckley</person>
+    </persons>
+    <links>
+    </links>
+   </event>
+   <event id="663">
+    <start>12:45</start>
+    <duration>00:30</duration>
+    <room>AW1.125</room>
+    <tag>java_jsr292_dynamic_lang</tag>
+    <title>JSR292 - Supporting Dynamically Typed Languages</title>
+    <subtitle></subtitle>
+    <track>Free Java</track>
+    <type>Podium</type>
+    <language>English</language>
+    <abstract>JSR292 introduces VM supports that ease the implementation of dynamic languages on Java VM.</abstract>
+    <description>This talk will present the different parts of the spec (knowing that is a work in progress) and some details/strategies of\r
+the implementation of the JSR292 specification in hotspot.</description>
+    <persons>
+     <person id="567">Remi Forax</person>
+    </persons>
+    <links>
+    </links>
+   </event>
+   <event id="664">
+    <start>14:00</start>
+    <duration>00:15</duration>
+    <room>AW1.125</room>
+    <tag>java_jamvm</tag>
+    <title>JamVM</title>
+    <subtitle></subtitle>
+    <track>Free Java</track>
+    <type>Podium</type>
+    <language>English</language>
+    <abstract>Over the past year JamVM has been reworked to make it smaller, faster and more reliable. This talk will give a brief overview of the changes that have been made, and will indicate future directions for the coming year.</abstract>
+    <description></description>
+    <persons>
+     <person id="197">Robert Lougher</person>
+    </persons>
+    <links>
+    </links>
+   </event>
+   <event id="665">
+    <start>14:15</start>
+    <duration>00:30</duration>
+    <room>AW1.125</room>
+    <tag>java_hardware_accel</tag>
+    <title>Porting a Java VM to a Hardware Accelerator</title>
+    <subtitle></subtitle>
+    <track>Free Java</track>
+    <type>Podium</type>
+    <language>English</language>
+    <abstract>We'd like to present a project porting a Java Virtual Machine to a hardware Java accelerator.</abstract>
+    <description>Specifically, we are trying to port JamVM to AVR32's Java Extension Module. We'll briefly explain how hardware Java accelerators work, give motivation for our choice of a specific JVM and CPU platform, describe specifics of this port, its current state and future plans.</description>
+    <persons>
+     <person id="563">Guennadi Liakhovetski</person>
+    </persons>
+    <links>
+    </links>
+   </event>
+   <event id="666">
+    <start>14:45</start>
+    <duration>00:30</duration>
+    <room>AW1.125</room>
+    <tag>java_jnode</tag>
+    <title>JNode</title>
+    <subtitle></subtitle>
+    <track>Free Java</track>
+    <type>Podium</type>
+    <language>English</language>
+    <abstract>This talk will give an overview of [http://www.jnode.org/ JNode] and its current state.</abstract>
+    <description>JNode is an operating system based on Java technology. The overview of architecture, OpenJDK integration, progress during last year, current state and future directions will be covered, including a demo of the system.</description>
+    <persons>
+     <person id="301">Levente Sántha</person>
+    </persons>
+    <links>
+     <link href="http://www.jnode.org/">http://www.jnode.org/</link>
+    </links>
+   </event>
+   <event id="667">
+    <start>15:15</start>
+    <duration>00:15</duration>
+    <room>AW1.125</room>
+    <tag>java_zero_shark</tag>
+    <title>Zero/Shark</title>
+    <subtitle></subtitle>
+    <track>Free Java</track>
+    <type>Podium</type>
+    <language>English</language>
+    <abstract>OpenJDK only supports three processors, x86, x86-64 and SPARC, but Linux distributions typically support many more.  Zero is an interpreter-only port of OpenJDK that uses no assembler and therefore can trivially be built on any Linux system.</abstract>
+    <description>This talk will be about developments since the last FOSDEM.\r
+\r
+The build system has been improved to the point that building is as simple as "./configure &amp;&amp; make"; many new platforms\r
+have been tried and tested; and a platform-independent JIT called Shark has been developed that uses the LLVM compiler infrastructure to JIT compile Java methods without introducing system-specific code.</description>
+    <persons>
+     <person id="291">Gary Benson</person>
+    </persons>
+    <links>
+    </links>
+   </event>
+   <event id="668">
+    <start>15:45</start>
+    <duration>00:15</duration>
+    <room>AW1.125</room>
+    <tag>java_recruiting_foss</tag>
+    <title>Recruiting people to FOSS Java projects</title>
+    <subtitle></subtitle>
+    <track>Free Java</track>
+    <type>Podium</type>
+    <language>English</language>
+    <abstract>The talk will focus on experiences gathered during my time as the Gentoo Recruiters lead.</abstract>
+    <description>The aim is to share how we at the Gentoo Java project have succeeded or not in getting new people involved.</description>
+    <persons>
+     <person id="292">Petteri Räty</person>
+    </persons>
+    <links>
+     <link href="http://www.gentoo.org/proj/en/devrel/recruiters/">http://www.gentoo.org/proj/en/devrel/recruiters/</link>
+     <link href="http://www.gentoo.org/proj/en/java/">http://www.gentoo.org/proj/en/java/</link>
+    </links>
+   </event>
+   <event id="669">
+    <start>16:00</start>
+    <duration>00:30</duration>
+    <room>AW1.125</room>
+    <tag>java_openjdk_community</tag>
+    <title>OpenJDK Community Priorities</title>
+    <subtitle></subtitle>
+    <track>Free Java</track>
+    <type>Podium</type>
+    <language>English</language>
+    <abstract>An open discussion to chat about the current OpenJDK environment: technical, infrastructure, governance, transparency, contributions, policies, etc.</abstract>
+    <description>We all know there's still a lot of work to do, so the focus shouldn't be on gripes, but hopefully we can identify the top\r
+priorities and some easy-to-accomplish things that will have a big impact on community growth and contentment.</description>
+    <persons>
+     <person id="193">Dalibor Topic</person>
+    </persons>
+    <links>
+    </links>
+   </event>
+   <event id="670">
+    <start>16:30</start>
+    <duration>00:30</duration>
+    <room>AW1.125</room>
+    <tag>java_pure_gpl</tag>
+    <title>Pure GPL - Is it still up to date</title>
+    <subtitle></subtitle>
+    <track>Free Java</track>
+    <type>Podium</type>
+    <language>English</language>
+    <abstract>Many successful open source projects use pure GPL - true to the ideal of free software - requiring everyone to contribute under the same, open terms. \r
+\r
+But as open source increasingly becomes a foundation for core functionality used both in non-commercial as well as commercial ways the call for more liberal licenses is getting louder.</abstract>
+    <description>GPL with classpath exception, LGPL, BSD, Apache, Eclipse, and others allow adopters to build upon the open source code in proprietary ways - violating the true spirit of free software but giving developers more freedoms to chose the best approach for their project or product. \r
+\r
+This session aims to be a free-flowing discussion on the question whether pure GPL without any exceptions is still up to date with the changes occurring the software industry.</description>
+    <persons>
+     <person id="565">Terrence Barr</person>
+    </persons>
+    <links>
+    </links>
+   </event>
+  </room>
+  <room name="AW1.126">
+   <event id="588">
+    <start>09:00</start>
+    <duration>01:00</duration>
+    <room>AW1.126</room>
+    <tag>mysql_pbxt_storage</tag>
+    <title>Practicing DBA's Guide to the PBXT Storage Engine</title>
+    <subtitle></subtitle>
+    <track>MySQL</track>
+    <type>Podium</type>
+    <language>English</language>
+    <abstract>PBXT is an ACID-compliant storage engine for MySQL available for MySQL 5.1 and 6.0. PBXT is also available for Drizzle and is shipped as part of the OurDelta builds for MySQL.</abstract>
+    <description>PBXT is reaching GA state and now its a good time to learn how you as a DBA can benefit from this.\r
+\r
+During this session, attendees will learn about the best PBXT practices, including PBXT deployment architectures on various types of media, PBXT multicore performance, system variables and their tuning, startup parameters and run-time statistics. The session will also cover other practically important topics such as installation, compatibility with other storage engines, migration, monitoring, recovery of corrupted data, online backup.</description>
+    <persons>
+     <person id="539">Vladimir Kolesnikov</person>
+    </persons>
+    <links>
+    </links>
+   </event>
+   <event id="589">
+    <start>10:00</start>
+    <duration>01:00</duration>
+    <room>AW1.126</room>
+    <tag>mysql_monitoring</tag>
+    <title>Monitoring MySQL</title>
+    <subtitle></subtitle>
+    <track>MySQL</track>
+    <type>Podium</type>
+    <language>English</language>
+    <abstract>Over the past 18 months different open source monitoring solutions have popped up, some of them with a lot of potential. Zabbix, Zenoss and Hyperic are probably the most famous ones but other more specialized ones exist.</abstract>
+    <description>Last year we evaluated these Monitoring solutions and presented our findings at OLS. As we are MySQL users we obviously wanted to take a closer look at these tools regarding their integration with MySQL.\r
+\r
+This talk therefore will guide the MySQL users around in a selection of Open Source Monitoring tools that they could use to monitor MySQL as a part of a bigger infrastructure.</description>
+    <persons>
+     <person id="327">Kris Buytaert</person>
+    </persons>
+    <links>
+    </links>
+   </event>
+   <event id="590">
+    <start>11:00</start>
+    <duration>00:45</duration>
+    <room>AW1.126</room>
+    <tag>mysql_cluster</tag>
+    <title>MySQL Cluster</title>
+    <subtitle></subtitle>
+    <track>MySQL</track>
+    <type>Podium</type>
+    <language>English</language>
+    <abstract>MySQL Cluster became a new product in 2008, but little is still known about it.</abstract>
+    <description>This talk will show how MySQL Cluster works, and show some practical situations where it can be useful. Version 6.4, the next release, will also be presented with some great new features coming in.</description>
+    <persons>
+     <person id="541">Geert Vanderkelen</person>
+    </persons>
+    <links>
+    </links>
+   </event>
+   <event id="591">
+    <start>11:45</start>
+    <duration>01:00</duration>
+    <room>AW1.126</room>
+    <tag>mysql_plugins</tag>
+    <title>MySQL 5.1 Plugins</title>
+    <subtitle></subtitle>
+    <track>MySQL</track>
+    <type>Podium</type>
+    <language>English</language>
+    <abstract>MySQL 5.1 features the plugin API. In essence, the MySQL plugin API provides a generic extension point to the MySQL server. It allows users to load a shared library into the server to extend its functionality.</abstract>
+    <description>A key feature is that this process is completely dynamic - the server need not be re-compiled and need not be stopped in order to benefit from the functionality of a new plugin. Hence, new functionality can be added without suffering any downtime.\r
+\r
+This session provides an overview of the plugin architecture. The different plugin types will be described. Then, the process of creating your own plugins will be described. This will be illustrated with code examples.</description>
+    <persons>
+     <person id="542">Roland Bouman</person>
+    </persons>
+    <links>
+    </links>
+   </event>
+   <event id="592">
+    <start>13:15</start>
+    <duration>01:00</duration>
+    <room>AW1.126</room>
+    <tag>mysql_social_networks</tag>
+    <title>MySQL, powering and using Social Networks</title>
+    <subtitle></subtitle>
+    <track>MySQL</track>
+    <type>Podium</type>
+    <language>English</language>
+    <abstract>MySQL runs a large number of the social networks of today. LinkedIn, Facebook, Flickr, Dopplr, Doodle and many other social websites run on MySQL.</abstract>
+    <description>It's a privilege for MySQL to be part of the fabric of tomorrow. However, MySQL is still not *using* these social networks in an optimal way. For his overview, Kaj has guinea-pig tested a number of social networks and shares his experiences, with a particular emphasis on what the social network in question can do for MySQL users, customers and employees.</description>
+    <persons>
+     <person id="543">Kaj Arnö</person>
+    </persons>
+    <links>
+    </links>
+   </event>
+   <event id="593">
+    <start>14:15</start>
+    <duration>00:45</duration>
+    <room>AW1.126</room>
+    <tag>mysql_xtradb_storage</tag>
+    <title>Percona MySQL patches and the XtraDB storage engine</title>
+    <subtitle></subtitle>
+    <track>MySQL</track>
+    <type>Podium</type>
+    <language>English</language>
+    <abstract>Percona builds binaries that contain recent versions of the MySQL database server, plus additional popular patches not included in the official binaries from MySQL/Sun.</abstract>
+    <description>Some patches improve InnoDB performance under high loads. Others provide diagnostic tools useful to DBAs. The patches are authored by MySQL users like Google, Proven Scaling, Open Query, and Percona itself. This talk is a guide to why we do it, our current patches and our plans for the future. Additionally, this talk will cover the XtraDB storage engine, a recent project started by Percona.</description>
+    <persons>
+     <person id="544">Ewen Fortune</person>
+    </persons>
+    <links>
+    </links>
+   </event>
+   <event id="594">
+    <start>15:00</start>
+    <duration>01:00</duration>
+    <room>AW1.126</room>
+    <tag>mysql_partitions</tag>
+    <title>Boost performance with MySQL 5.1 partitions</title>
+    <subtitle></subtitle>
+    <track>MySQL</track>
+    <type>Podium</type>
+    <language>English</language>
+    <abstract>MySQL 5.1 introduces partitioning – a very useful feature for databases with large tables. This session explains the benefits of partitioning and shows in practice how to take advantage of its features.</abstract>
+    <description>Topics include:\r
+* Benefits and limits of partitioning\r
+* Understanding the partitioning types (RANGE, LIST, HASH and KEY)\r
+* Partitioning pruning and EXPLAIN additions\r
+* Benchmarking partitions\r
+* How to partition by dates\r
+* Partitioning with MyISAM tables\r
+* Partitioning with InnoDB tables\r
+* Partitioning with Archive tables\r
+* Use cases\r
+* Partition maintenance:\r
+** converting partitioned tables to normal ones;\r
+** adding and dropping partitions\r
+** reorganizing partitions\r
+** checking and repairing partitions</description>
+    <persons>
+     <person id="545">Giuseppe Maxia</person>
+    </persons>
+    <links>
+    </links>
+   </event>
+   <event id="595">
+    <start>16:00</start>
+    <duration>01:00</duration>
+    <room>AW1.126</room>
+    <tag>mysql_sharding</tag>
+    <title>Database Sharding</title>
+    <subtitle></subtitle>
+    <track>MySQL</track>
+    <type>Podium</type>
+    <language>English</language>
+    <abstract>Database sharding is an approach to horizontally scale databases by federating data over different servers. The talk will give an overview of the different approaches we have had and still have at Netlog, and how we came to the current solution.</abstract>
+    <description>Experiences, tips and remarks from having worked on the Netlog implementation of sharding with mySQL and PHP, in a high availability and high performance focused environment, will be shared in this session. Related technologies include memcached and the Sphinx search engine, that are being used to tackle some of sharding's difficulties.</description>
+    <persons>
+     <person id="546">Jurriaan Persyn</person>
+    </persons>
+    <links>
+    </links>
+   </event>
+  </room>
+  <room name="H.3227">
+  </room>
+  <room name="Guillissen">
+   <event id="531">
+    <start>10:30</start>
+    <duration>01:30</duration>
+    <room>Guillissen</room>
+    <tag>lpi_3</tag>
+    <title>LPI exam session 3</title>
+    <subtitle></subtitle>
+    <track>LPI Certification</track>
+    <type>Other</type>
+    <language>English</language>
+    <abstract>LPI exam session #3</abstract>
+    <description></description>
+    <persons>
+     <person id="42">Klaus Behrla</person>
+    </persons>
+    <links>
+    </links>
+   </event>
+   <event id="532">
+    <start>13:00</start>
+    <duration>01:30</duration>
+    <room>Guillissen</room>
+    <tag>lpi_4</tag>
+    <title>LPI exam session 4</title>
+    <subtitle></subtitle>
+    <track>LPI Certification</track>
+    <type>Other</type>
+    <language>English</language>
+    <abstract>LPI exam session #4</abstract>
+    <description></description>
+    <persons>
+     <person id="42">Klaus Behrla</person>
+    </persons>
+    <links>
+    </links>
+   </event>
+   <event id="533">
+    <start>15:00</start>
+    <duration>01:30</duration>
+    <room>Guillissen</room>
+    <tag>lpi_5</tag>
+    <title>LPI exam session 5</title>
+    <subtitle></subtitle>
+    <track>LPI Certification</track>
+    <type>Podium</type>
+    <language>English</language>
+    <abstract>LPI exam session #5</abstract>
+    <description></description>
+    <persons>
+     <person id="42">Klaus Behrla</person>
+    </persons>
+    <links>
+    </links>
+   </event>
+  </room>
+ </day>
+</schedule>
diff --git a/src/sql/schedulexmlparser.cpp b/src/sql/schedulexmlparser.cpp
new file mode 100644 (file)
index 0000000..1c5ebec
--- /dev/null
@@ -0,0 +1,137 @@
+\r
+#include <QDomDocument>\r
+#include <QHash>\r
+\r
+#include "schedulexmlparser.h"\r
+#include "sqlengine.h"\r
+\r
+#include <QDebug>\r
+\r
+ScheduleXmlParser::ScheduleXmlParser(QObject *aParent)\r
+    : QObject(aParent)\r
+{\r
+}\r
+\r
+void ScheduleXmlParser::parseData(const QByteArray &aData, SqlEngine *aDBEngine)\r
+{\r
+    Q_ASSERT(NULL != aDBEngine);\r
+\r
+    QDomDocument document;\r
+    document.setContent (aData, false);\r
+\r
+    QDomElement scheduleElement = document.firstChildElement("schedule");\r
+\r
+    if (!scheduleElement.isNull())\r
+    {\r
+        // TODO: assign conferenceID based on eg. title\r
+        int conferenceID = 1; // HARD-WIRED for now to '1' - only one Conference\r
+\r
+        QDomElement conferenceElement = scheduleElement.firstChildElement("conference");\r
+        if (!conferenceElement.isNull())\r
+        {\r
+            QHash<QString,QString> conference;\r
+            conference["id"] = QString::number(conferenceID,10);\r
+            conference["title"] = conferenceElement.firstChildElement("title").text();\r
+            conference["subtitle"] = conferenceElement.firstChildElement("subtitle").text();\r
+            conference["venue"] = conferenceElement.firstChildElement("venue").text();\r
+            conference["city"] = conferenceElement.firstChildElement("city").text();\r
+            conference["start"] = conferenceElement.firstChildElement("start").text(); // date\r
+            conference["end"] = conferenceElement.firstChildElement("end").text(); // date\r
+            conference["days"] = conferenceElement.firstChildElement("days").text(); // int\r
+            conference["day_change"] = conferenceElement.firstChildElement("day_change").text(); // time\r
+            conference["timeslot_duration"] = conferenceElement.firstChildElement("timeslot_duration").text(); // time\r
+            aDBEngine->addConferenceToDB(conference);\r
+        }\r
+\r
+        // we need to get count of all events in order to emit 'progressStatus' signal\r
+        int totalEventsCount = scheduleElement.elementsByTagName("event").count();\r
+\r
+        // parsing day elements\r
+        int currentEvent = 0; // hold global idx of processed event\r
+        QDomNodeList dayList = scheduleElement.elementsByTagName("day");\r
+        for (int i=0; i<dayList.count(); i++)\r
+        {\r
+            QDomElement dayElement = dayList.at(i).toElement();\r
+            //QDate dayDate = QDate::fromString(dayElement.attribute("date"),DATE_FORMAT);\r
+            //int dayIndex = dayElement.attribute("index").toInt();\r
+\r
+            // parsing room elements\r
+            QDomNodeList roomList = dayElement.elementsByTagName("room");\r
+            for (int i=0; i<roomList.count(); i++)\r
+            {\r
+                QDomElement roomElement = roomList.at(i).toElement();\r
+                // roomElement has to be 'Element' and it has to have 'name' attribute\r
+                // TODO: 'event' has also 'room' node, so it can be unstable if that node has also 'name' attribute\r
+                if(roomElement.hasAttribute("name"))\r
+                {\r
+                    // parsing event elements\r
+                    QDomNodeList eventList = roomElement.elementsByTagName("event");\r
+                    for (int i=0; i<eventList.count(); i++)\r
+                    {\r
+                        currentEvent++;\r
+                        QDomElement eventElement = eventList.at(i).toElement();\r
+\r
+                        // now we have all info to create ROOM/EVENT_ROOM record(s)\r
+                        QHash<QString,QString> room;\r
+                        room["name"] = roomElement.attribute("name");\r
+                        room["event_id"] = eventElement.attribute("id");\r
+                        room["conference_id"] = QString::number(conferenceID,10);\r
+                        room["picture"] = "NOT DEFINED YET"; // TODO: implement some mapping to assign correct picture to specified room_name\r
+                        aDBEngine->addRoomToDB(room);\r
+\r
+                        // process event's nodes\r
+                        QHash<QString,QString> event;\r
+                        event["id"] = eventElement.attribute("id");\r
+                        event["conference_id"] = QString::number(conferenceID,10);\r
+                        event["start"] = eventElement.firstChildElement("start").text(); // time eg. 10:00\r
+                        event["date"] = dayElement.attribute("date"); // date eg. 2009-02-07\r
+                        event["duration"] = eventElement.firstChildElement("duration").text(); // time eg. 00:30\r
+                        event["room_name"] = eventElement.firstChildElement("room").text(); // string eg. "Janson"\r
+                        event["tag"] = eventElement.firstChildElement("tag").text(); // string eg. "welcome"\r
+                        event["title"] = eventElement.firstChildElement("title").text(); // string eg. "Welcome"\r
+                        event["subtitle"] = eventElement.firstChildElement("subtitle").text(); // string\r
+                        event["track"] = eventElement.firstChildElement("track").text(); // string eg. "Keynotes"\r
+                        event["type"] = eventElement.firstChildElement("type").text(); // string eg. "Podium"\r
+                        event["language"] = eventElement.firstChildElement("language").text(); // language eg. "English"\r
+                        event["abstract"] = eventElement.firstChildElement("abstract").text(); // string\r
+                        event["description"] = eventElement.firstChildElement("description").text(); // string\r
+                        aDBEngine->addEventToDB(event);\r
+\r
+                        // process persons' nodes\r
+                        QList<QString> persons;\r
+                        QDomElement personsElement = eventElement.firstChildElement("persons");\r
+                        QDomNodeList personList = personsElement.elementsByTagName("person");\r
+                        for (int i=0; i<personList.count(); i++)\r
+                        {\r
+                            QHash<QString,QString> person;\r
+                            person["id"] = personList.at(i).toElement().attribute("id");\r
+                            person["name"] = personList.at(i).toElement().text();\r
+                            person["event_id"] = eventElement.attribute("id");\r
+                            person["conference_id"] = QString::number(conferenceID,10);\r
+                            //qDebug() << "adding Person: " << person["name"];\r
+                            aDBEngine->addPersonToDB(person);\r
+                        }\r
+\r
+                        // process links' nodes\r
+                        QDomElement linksElement = eventElement.firstChildElement("links");\r
+                        QDomNodeList linkList = linksElement.elementsByTagName("link");\r
+                        for (int i=0; i<linkList.count(); i++)\r
+                        {\r
+                            QHash<QString,QString> link;\r
+                            link["name"] = linkList.at(i).toElement().text();\r
+                            link["url"] = linkList.at(i).toElement().attribute("href");\r
+                            link["event_id"] = eventElement.attribute("id");\r
+                            link["conference_id"] = QString::number(conferenceID,10);\r
+                            aDBEngine->addLinkToDB(link);\r
+                        }\r
+\r
+                        // emit signal to inform the user about the current status (how many events are parsed so far - expressed in %)\r
+                        int status=currentEvent*100/totalEventsCount;\r
+                        emit progressStatus(status);\r
+                    } // parsing event elements\r
+                }\r
+            } // parsing room elements\r
+        } // parsing day elements\r
+    } // schedule element\r
+}\r
+\r
diff --git a/src/sql/schedulexmlparser.h b/src/sql/schedulexmlparser.h
new file mode 100644 (file)
index 0000000..13df2a9
--- /dev/null
@@ -0,0 +1,22 @@
+#ifndef SCHEDULEXMLPARSER_H_\r
+#define SCHEDULEXMLPARSER_H_\r
+\r
+#include <QObject>\r
+\r
+class SqlEngine;\r
+\r
+class ScheduleXmlParser : public QObject\r
+{\r
+    Q_OBJECT\r
+    public:\r
+        ScheduleXmlParser (QObject *aParent = NULL);\r
+\r
+    public slots:\r
+        void parseData(const QByteArray &aData, SqlEngine *aDBEngine);\r
+\r
+    signals:\r
+        void progressStatus(int aStatus);\r
+};\r
+\r
+#endif /* SCHEDULEXMLPARSER_H_ */\r
+\r
diff --git a/src/sql/sql.pro b/src/sql/sql.pro
new file mode 100644 (file)
index 0000000..2d0ac8c
--- /dev/null
@@ -0,0 +1,15 @@
+TEMPLATE = lib
+TARGET = sql
+DESTDIR = ../bin
+CONFIG += static
+QT += sql xml
+
+# module dependencies
+DEPENDPATH += .
+
+HEADERS += sqlengine.h \
+           schedulexmlparser.h
+
+SOURCES += sqlengine.cpp \
+           schedulexmlparser.cpp
+           
diff --git a/src/sql/sqlengine.cpp b/src/sql/sqlengine.cpp
new file mode 100644 (file)
index 0000000..b77729f
--- /dev/null
@@ -0,0 +1,272 @@
+
+#include <QSqlError>
+#include <QSqlQuery>
+#include <QSqlRecord>
+#include <QVariant>
+#include <QDateTime>
+
+#include <QDir>
+#include "sqlengine.h"
+
+#include <QDebug>
+
+const QString DATE_FORMAT ("yyyy-MM-dd");
+const QString TIME_FORMAT ("hh:mm");
+
+SqlEngine::SqlEngine(QObject *aParent)
+    : QObject(aParent)
+{
+}
+
+SqlEngine::~SqlEngine()
+{
+}
+
+QString SqlEngine::login(const QString &aDatabaseType, const QString &aDatabaseName)
+{
+    QSqlDatabase database = QSqlDatabase::addDatabase(aDatabaseType);
+    database.setDatabaseName(aDatabaseName);
+
+    bool result = false;
+    if(!QFile::exists(aDatabaseName)) // the DB (tables) doesn't exists, and so we have to create one
+    {
+        // creating empty DB + tables
+        // ??? what is the best way of creating new empty DB ???
+        // we can either:
+        //  - create new DB + tables by issuing corresponding queries (used solution)
+        //  - create new DB from resource, which contains empty DB with tables
+        result = createTables(database);
+    }
+
+    database.open();
+
+    //LOG_INFO(QString("Opening '%1' database '%2'").arg(aDatabaseType).arg(aDatabaseName));
+
+    return result ? QString() : database.lastError().text();
+}
+
+void SqlEngine::initialize()
+{
+    QString databaseName;
+    if(!QDir::home().exists(".fosdem"))
+        QDir::home().mkdir(".fosdem");
+    databaseName = QDir::homePath() + "/.fosdem/" + "fosdem.sqlite";
+
+    login("QSQLITE",databaseName);
+}
+
+void SqlEngine::addConferenceToDB(QHash<QString,QString> &aConference)
+{
+    QSqlDatabase db = QSqlDatabase::database();
+
+    if (db.isValid() && db.isOpen())
+    {
+        QString values = QString("'%1', '%2', '%3', '%4', '%5', '%6', '%7', '%8', '%9', '%10'") \
+                         .arg(aConference["id"]) \
+                         .arg(aConference["title"]) \
+                         .arg(aConference["subtitle"]) \
+                         .arg(aConference["venue"]) \
+                         .arg(aConference["city"]) \
+                         .arg(aConference["start"]) \
+                         .arg(aConference["end"]) \
+                         .arg(aConference["days"]) \
+                         .arg(aConference["day_change"]) \
+                         .arg(aConference["timeslot_duration"]);
+
+        QString query = QString("INSERT INTO CONFERENCE (id,title,subtitle,venue,city,start,end,days,day_change,timeslot_duration) VALUES (%1)").arg(values);
+        QSqlQuery result (query, db);
+        //LOG_AUTOTEST(query);
+    }
+}
+
+void SqlEngine::addEventToDB(QHash<QString,QString> &aEvent)
+{
+    //LOG_DEBUG(QString("Adding event '%1' to DB").arg(*aEvent));
+
+    QSqlDatabase db = QSqlDatabase::database();
+
+    if (db.isValid() && db.isOpen())
+    {
+        // The items of the Event are divided into the two tables EVENT and VIRTUAL_EVENT
+        // VIRTUAL_EVENT is for Full-Text-Serach Support
+        QTime duration = QTime::fromString(aEvent["duration"],TIME_FORMAT);
+        QDateTime startDateTime = QDateTime(QDate::fromString(aEvent["date"],DATE_FORMAT),QTime::fromString(aEvent["start"],TIME_FORMAT));
+        QString values = QString("'%1', '%2', '%3', '%4', '%5', '%6', '%7'") \
+                         .arg(aEvent["conference_id"]) \
+                         .arg(aEvent["id"]) \
+                         .arg(QString::number(startDateTime.toTime_t())) \
+                         .arg(QString::number(duration.hour()*3600 + duration.minute()*60 + duration.second())) \
+                         .arg("123456") \
+                         .arg(aEvent["type"]) \
+                         .arg(aEvent["language"]);
+
+        QString query = QString("INSERT INTO EVENT (xid_conference, id, start, duration, xid_activity, type, language) VALUES (%1)").arg(values);
+        QSqlQuery result (query, db);
+        //LOG_AUTOTEST(query);
+
+        // add some(text related) Event's items to VIRTUAL_EVENT table
+        QString values2 = QString("'%1', '%2', '%3', '%4', '%5', '%6', '%7'") \
+                          .arg(aEvent["conference_id"]) \
+                          .arg(aEvent["id"]) \
+                          .arg(aEvent["tag"]) \
+                          .arg(aEvent["title"]) \
+                          .arg(aEvent["subtitle"]) \
+                          .arg(aEvent["abstract"]) \
+                          .arg(aEvent["description"]);
+
+        QString query2 = QString("INSERT INTO VIRTUAL_EVENT (xid_conference, id, tag, title, subtitle, abstract, description) VALUES (%1)").arg(values2);
+        QSqlQuery result2 (query2, db);
+        //LOG_AUTOTEST(query2);
+    }
+}
+
+void SqlEngine::addPersonToDB(QHash<QString,QString> &aPerson)
+{
+    QSqlDatabase db = QSqlDatabase::database();
+
+    //TODO: check if the person doesn't exist before inserting
+    if (db.isValid() && db.isOpen())
+    {
+        QString values = QString("'%1', '%2'").arg(aPerson["id"],aPerson["name"]);
+        QString query = QString("INSERT INTO PERSON (id,name) VALUES (%1)").arg(values);
+        QSqlQuery result (query, db);
+        //LOG_AUTOTEST(query);
+
+        values = QString("'%1', '%2', '%3'").arg(aPerson["conference_id"],aPerson["event_id"],aPerson["id"]);
+        query = QString("INSERT INTO EVENT_PERSON (xid_conference,xid_event,xid_person) VALUES (%1)").arg(values);
+        QSqlQuery resultEventPerson (query, db);
+        //LOG_AUTOTEST(query);
+    }
+}
+
+void SqlEngine::addRoomToDB(QHash<QString,QString> &aRoom)
+{
+    QSqlDatabase db = QSqlDatabase::database();
+
+    if (db.isValid() && db.isOpen())
+    {
+        QString queryExist = QString("SELECT id FROM ROOM WHERE name='%1'").arg(aRoom["name"]);
+        QSqlQuery resultExist(queryExist,db);
+        // now we have to check whether ROOM record with 'name' exists or not,
+        // - if it doesn't exist yet, then we have to add that record to 'ROOM' table
+        //   and assign autoincremented 'id' to aRoom
+        // - if it exists, then we need to get its 'id' and assign it to aRoom
+        int roomId = -1;
+        if(resultExist.next()) // ROOM record with 'name' already exists: we need to get its 'id'
+        {
+            roomId = resultExist.value(0).toInt();
+        }
+        else // ROOM record doesn't exist yet, need to create it
+        {
+            QString values = QString("'%1', '%2'").arg(aRoom["name"],aRoom["picture"]);
+            QString query = QString("INSERT INTO ROOM (name,picture) VALUES (%1)").arg(values);
+            QSqlQuery result (query, db);
+            roomId = result.lastInsertId().toInt(); // 'id' is assigned automatically
+            //LOG_AUTOTEST(query);
+        }
+
+        QString values = QString("'%1', '%2', '%3'").arg(aRoom["conference_id"],aRoom["event_id"],QString::number(roomId));
+        QString query = QString("INSERT INTO EVENT_ROOM (xid_conference,xid_event,xid_room) VALUES (%1)").arg(values);
+        QSqlQuery result (query, db);
+        //LOG_AUTOTEST(query);
+    }
+}
+
+void SqlEngine::addLinkToDB(QHash<QString,QString> &aLink)
+{
+    QSqlDatabase db = QSqlDatabase::database();
+
+    //TODO: check if the link doesn't exist before inserting
+    if (db.isValid() && db.isOpen())
+    {
+        QString values = QString("'%1', '%2', '%3', '%4'").arg(aLink["event_id"],aLink["conference_id"],aLink["name"],aLink["url"]);
+        QString query = QString("INSERT INTO LINK (xid_event, xid_conference, name, url) VALUES (%1)").arg(values);
+        QSqlQuery result(query, db);
+        //LOG_AUTOTEST(query);
+    }
+}
+
+bool SqlEngine::createTables(QSqlDatabase &aDatabase)
+{
+    bool result = aDatabase.open();
+
+    if (aDatabase.isValid() && aDatabase.isOpen())
+    {
+        QSqlQuery query(aDatabase);
+
+        query.exec("CREATE TABLE CONFERENCE ( \
+            id INTEGER PRIMARY KEY  AUTOINCREMENT  NOT NULL , \
+            title VARCHAR NOT NULL , \
+            subtitle VARCHAR, \
+            venue VARCHAR, \
+            city VARCHAR NOT NULL , \
+            start DATETIME NOT NULL , \
+            end DATETIME NOT NULL , \
+            days INTEGER, \
+            day_change DATETIME, \
+            timeslot_duration DATETIME)");
+
+        query.exec("CREATE TABLE ACTIVITY ( \
+            id INTEGER  PRIMARY KEY AUTOINCREMENT  NOT NULL , \
+            name VARCHAR NOT NULL )");
+
+        query.exec("CREATE TABLE ROOM ( \
+            id INTEGER PRIMARY KEY  AUTOINCREMENT  NOT NULL , \
+            name VARCHAR NOT NULL , \
+            picture VARCHAR NOT NULL)");
+
+        query.exec("CREATE TABLE PERSON ( \
+            id INTEGER PRIMARY KEY  NOT NULL , \
+            name VARCHAR NOT NULL)");
+
+        query.exec("CREATE TABLE EVENT ( \
+            xid_conference INTEGER  NOT NULL, \
+            id INTEGER NOT NULL , \
+            start INTEGER NOT NULL , \
+            duration INTEGER NOT NULL , \
+            xid_activity INTEGER NOT NULL REFERENCES ACTIVITY(id), \
+            type VARCHAR, \
+            language VARCHAR, \
+            PRIMARY KEY (xid_conference,id), \
+            FOREIGN KEY(xid_conference) REFERENCES CONFERENCE(id) \
+            FOREIGN KEY(xid_activity) REFERENCES ACTIVITY(id))");
+
+        query.exec("CREATE VIRTUAL TABLE VIRTUAL_EVENT using fts3 ( \
+            xid_conference INTEGER  NOT NULL, \
+            id INTEGER NOT NULL , \
+            tag VARCHAR,title VARCHAR NOT NULL , \
+            subtitle VARCHAR, \
+            abstract VARCHAR, \
+            description VARCHAR, \
+            PRIMARY KEY (xid_conference,id))");
+
+        query.exec("CREATE TABLE EVENT_PERSON ( \
+            xid_conference INTEGER NOT NULL , \
+            xid_event INTEGER NOT NULL , \
+            xid_person INTEGER NOT NULL, \
+            FOREIGN KEY(xid_conference, xid_event) REFERENCES EVENT(xid_conference, id), \
+            FOREIGN KEY(xid_person) REFERENCES PERSON(id))");
+
+        query.exec("CREATE TABLE EVENT_ROOM ( \
+            xid_conference INTEGER NOT NULL , \
+            xid_event INTEGER NOT NULL , \
+            xid_room INTEGER NOT NULL, \
+            FOREIGN KEY(xid_conference, xid_event) REFERENCES EVENT(xid_conference, id), \
+            FOREIGN KEY(xid_room) REFERENCES ROOM(id))");
+
+        query.exec("CREATE TABLE LINK ( \
+            id INTEGER PRIMARY KEY  AUTOINCREMENT  NOT NULL, \
+            xid_conference INTEGER NOT NULL, \
+            xid_event INTEGER NOT NULL, \
+            name VARCHAR, \
+            url VARCHAR NOT NULL, \
+            FOREIGN KEY(xid_conference, xid_event) REFERENCES EVENT(xid_conference, id))");
+    }
+    else
+    {
+        //LOG_WARNING("Database is not opened");
+    }
+
+    return result;
+}
+
diff --git a/src/sql/sqlengine.h b/src/sql/sqlengine.h
new file mode 100644 (file)
index 0000000..afad5ae
--- /dev/null
@@ -0,0 +1,27 @@
+#ifndef SQLENGINE_H
+#define SQLENGINE_H
+
+#include <QObject>
+#include <QHash>
+
+class QSqlDatabase;
+
+class SqlEngine : public QObject
+{
+    Q_OBJECT
+    public:
+        SqlEngine(QObject *aParent = NULL);
+        ~SqlEngine();
+        void initialize();
+        void addConferenceToDB(QHash<QString,QString> &aConference);
+        void addEventToDB(QHash<QString,QString> &aEvent);
+        void addPersonToDB(QHash<QString,QString> &aPerson);
+        void addLinkToDB(QHash<QString,QString> &aLink);
+        void addRoomToDB(QHash<QString,QString> &aRoom);
+    private:
+        QString login(const QString &aDatabaseType, const QString &aDatabaseName);
+        bool createTables(QSqlDatabase &aDatabase);
+};
+
+#endif /* SQLENGINE_H */
+