Openbravo World Conference 2009 presentations available
There are also some pictures available from the event.
Enjoy!

// as we read all entities, be an administrator to prevent
// security exceptions
OBContext.getOBContext().setInAdministratorMode(true);
// iterate over all entities
for (Entity entity : ModelProvider.getInstance().getModel()) {
// query for all objects of the entity and iterate over them
final List businessObjects = OBDal.getInstance().createCriteria(
entity.getName()).list();
for (BaseOBObject businessObject : businessObjects) {
final StringBuilder line = new StringBuilder();
// place the entity name so for each line it is known what type is exported there
line.append(entity.getName());
// and iterate over all the properties of the entity
for (Property property : entity.getProperties()) {
// ignore these type of properties, as the children are exported separately
if (property.isOneToMany()) {
continue;
}
line.append(SEPARATOR);
// get the current value
final Object value = businessObject.get(property.getName());
// handle null
if (value == null) {
continue;
}
// export primitives in the same way as xml primitives
if (property.isPrimitive()) {
line.append(XMLTypeConverter.getInstance().toXML(value));
} else {
// export the id of a referenced business object
line.append(((BaseOBObject) value).getId());
}
}
writer.append(line + "\n");
}
}
The data is appended to the writer object (which can be a FileWriter), with the BigBazaar Openbravo sample data this results in a file of about 13mb. The XMLTypeConverter is an Openbravo class which correctly converts primitive types such as a Date, a number, etc. to a String.There are lots of definitions of open source. Most of them focus on the pragmatic consequences associated with open source. I would like to share with you the principles I believe lie behind open source.
People
People is the most important asset in open source. It is even more important than code. Code is just a response to the needs of people. The core of open source projects is communication between people: discussions in irc, issue reporting in bug tracker, support through forums, polls… The ‘release early, release often’ policy is a way of getting users feedback as soon as possible. Users are important. Developers are important. Everything rotates around people.
Values
Open source projects share a common set of values. These values have evolved into some tools and processes. Having a clear set of values makes taking decisions easier, leads you through a coherent path and allows the rest of the people know what to expect from you. The more loyal you are to your values, the smoother the path is. The difficult part could be choosing the right values, but that is already done in open source. You can find some of those values in the Openbravo Manifesto. You can search in google for more values (e.g., consensus, distributed model, legitimacy).
Abundance
Probably the main trait of open source is the abundance mentality of the people participating. The opposite of abundance mentality is scarcity mentality. People with scarcity mentality think that they are what they do and know; that if they give away what they do and share their knowledge, they are losing value. Scarcity mentality sees everything as a zero sum game. On the other hand, people with abundance mentality think they are what they can do; therefore, if they give away what they do, they are not losing value. The more value they create and deliver, the better. Abundance mentality means betting on your capacity of creating and delivering more value.
These principles are not unique to open source. Open source is just one possible implementation of these principles, but any business or project (open or not) could take advantage of these principles. You could use these principles to analyze your own business/project. Are you giving enough importance to all people involved in your project? Do you have a clear set of values that is shared by everyone in the project? Are you measuring your project by the capacity of creating and delivering value?
Openbravo ERP has replaced its installers with virtual appliances and source code tarballs. We believe this is a major step forward. Why? This post explains the rationale behind this decision.
In 2.1x and 2.2x Openbravo ERP was deployed using Ant Installer. In 2.3x and 2.40 we switched to a binary installer technology. Starting from 2.50, Openbravo ERP has changed its packaging formats.
I remember having a brainstorming session with a project colleague, analyzing what we could improve in the overall installation and release process. That is, from the moment Release Management takes the code from QA, till users install it in their computers. The discussion led to the following conclusions:
ant diagnostic ant install.source
Advanced users know what they’re doing and they prefer running these 2 commands by hand. Hiding this behind a GUI does not help them at all. In fact they dislike it.
So having a look at the 4 points, we realized the installer failed in all of them. It doesn’t matter what installer technology we used, it just was not the right tool for us. Some of the problems of 1) and 2) could be solved by creating a one-click installer that deployed and configured all the technology stack plus Openbravo ERP. But this has mainly 2 problems:
So the virtual appliances solve the problems for the average computer users (points 1 and 2), and also the release problems (point 4). For advanced users (point 3) we offer them detailed installation instructions and the source code in two formats: tarballs and direct access to the main Mercurial repository.
Wondering how this affects the upgraders? Good news, starting from 2.50 upgrades are managed through the Module Management Console. In other words, Openbravo ERP is capable of updating itself and there is no need to have external upgraders.
Next steps? Package and include Openbravo ERP in all the possible Linux/BSD official repositories (Debian, Fedora/Centos/RedHat, FreeBSD, Gentoo, openSUSE, Ubuntu, etc).

Open Sistemas after receiving their award

Richard Daley during his key note.