Archive for April, 2008

FLISOL 2008 in Lima was good for two reasons

OK so, for those who follow this blog, I went to the FLISOL event here in Lima, or should I say eventS as in the end I was scheduled for a talk on both sides of the city, with a one-hour interval to run from one to the other.

The first talk, happening in the Universidad Tecnológica del Perú (UTP) was good because there were non-educational people there, meaning some business people that actually wanted to know about e-learning because their companies are looking into it. 3 contacts left me their business cards, but also mentionned they were really interested, which is the kind of stuff that smells like healthy business. I also met Diego Escalante again (I think he was giving a talk on GNOME, of course, a little bit earlier). It’s a small world.

The second talk, although moot in terms of business, was really interesting technically. I had to *face* a few Moodle-savvy (not hostile though) that were comparing Dokeos to Moodle. Although I had done some research the day before about the current features set of Moodle, I was surprised that there was so many things that seem to keep them interested in Dokeos. Not that Dokeos is not as good as Moodle, but the products are different and people tending to choose between Moodle and Dokeos initially are generally reticent to open up to the Dokeos advantages (less permissions for the user, a stricter support and development infrastructure, a clearer interface, …).

During the questions/answers session, two of them mentionned a US medic had actually worked on a modified version of the new Dokeos videoconference system to plug it to Moodle, which kind of took me completely by surprise. After more than two hours of research on the internet, I still couldn’t find the forum post they were referring to, although I did find a very old thread that was mentionning that someone modified the *old* Dokeos videoconference to make it work with Moodle. Considering the incredible amount of changes that has gone through our videoconference application since then, this isn’t really interesting to me…

Anyway, so basically the two talks were nice (for me, as a speaker) and I ended up paying 17 soles for a taxi home, which could have been 12, most probably, if I had discussed the price a little more, but in his defense the taxi driver was really good (same driving style as me, actually, so even if it wasn’t really good, it felt really good to me).

Categories: Development, English

Dokeos 1.8.5 Beta – Now available

… it’s been a long (set of) week(s) working on the first really acceptable version of Dokeos 1.8.5. Initially, we didn’t really want to put so much in there. There are not so many new features, yet we’ve made it so that it adds a set of commonly asked-for features.

Just half an hour ago, I tagged the 1.8.5 Beta release, so it’s officially out there. You can download it here:

The first that comes to my mind is LDAP. I’ve personally reviewed the whole thing so now it’s just a matter of uncommenting two lines in a config file and you can pretty much configure everything from the web panel. You can even import users into the platform, a course or a session directly from LDAP.

The second is user fields. User fields allow you to add virtually any information about users. You just configure which one you want from the admin panel, and then users get additional fields in their profile page, which they can still choose not to fill if they don’t want to. For example, you could ask for a date of birth, a city of birth, a country of residence, a mother tongue, and so on. You can also export these values from (non anonymous) surveys or exercises results.

The third is a review of forums usability, we the ability to show your avatar next to your post (like in the big forums around) and attach documents to your posts.

There are many small features like that in Dokeos 1.8.5, yet we are still in Beta, so we need your help to make the stable release a thoroughly tested release.

Now for useful information…

  1. We will put a testable campus on shortly (this week-end) so you can try it out without the need for a local installation
  2. Dokeos 1.8.5 Beta is a *beta* version. It is NOT meant for production. You’ve been warned
  3. We are planning on releasing a stable in one month from now (end of May)
  4. You can report bugs that you find in Dokeos 1.8.5 Beta in the Dokeos forum, or if you are experienced in reporting bugs, you can create an account and start opening tasks in our BTS
  5. LDAP has been completely revamped, but I lack the experience with LDAP servers (particularly authenticated ones), so if you can help, please TEST, TEST, TEST, and report in the BTS or directly to me
  6. The developments that are quite new are likely to be more unstable. These include: LDAP, User Fields, HR Manager role, XLS export of survey and exercises results, audio recorder (although this one *is* still buggy), Woogie, Gradebook (not easy to understand without documentation), new Videoconference server (much easier to install)

One month is short for our manpower and the product we have to get a very stable release, so we are counting on you to help us get there!

I’ll probably make some additions over the next few days, but for now I must spend some time preparing my presentation of Dokeos, tomorrow at the FLISOL (see previous post about that).

Categories: Development, English

How to configure HTTPS on Apache 2

April 25, 2008 35 comments


Setting up several VirtualHost’s on an Apache2 server is easy.

Setting up several VirtualHost’s on an Apache 2 server, some of them using SSL (HTTPS) is considerably less easy. The main problem is the documentation, not really easy to find, with examples of such configurations.

Here, we will intend to give all the steps to get there, remaining at a minimal level of complexity.

If you want more details, I suggest you have a look at this nice article by Artur Maj. This is where most of the inspiration comes from for the current article, together with real tests on a Debian Etch server. Thanks to his article, We will allow ourselves to skip the HTTPS, SSL and TLS definitions and prerequisites. We will consider that you have already installed SSL on your server installation, but haven’t enabled it with VirtualHost’s just yet.

Generating a key

To get things started, you will need a key. This key will be used by the VirtualHost you will define, only if you ask it to.
To generate the key, create an ssl directory in your /etc/apache2/ directory (on a Debian Etch, that is)
Then move inside that directory (cd ssl) and do the following:

mkdir crt
mkdir key
openssl req -new -x509 -days 365 -keyout key/vhost1.key -out crt/vhost1.crt -nodes -subj  ‘/O=VirtualHost Website Company name/OU=Virtual Host Website department/’

This operation will create two files, crt/vhost1.crt and key/vhost1.key, that you will use in your VirtualHost definition to enable SSL encryption using that key.

Changing the VirtualHost config

Now move on to your Apache sites configuration. In most cases, you should have something like an /etc/apache2/sites-available/ and an /etc/apache2/sites-enabled directory. As sites-enabled should only contain links to sites-available, we are only interested in sites-available. So go there.

Now you should have one default file there, as well as one file that defines the configuration of the VirtualHost you would like to setup to use HTTPS.

Open the default config file. It should start with something like

NameVirtualHost *:80


NameVirtualHost *

Either way, change it to:

NameVirtualHost *:80
NameVirtualHost *:443

Now you have just told your webserver to accept both requests on port 443 and 80. *if* you restart your webserver at this point, you should get a warning message saying that no host is using the port 443. This is normal for me: I never really got around how to configure the whole thing correctly to avoid it throwing warnings at reload, but it is definitely not a big problem. Now let’s proceed to the config of the VirtualHost itself.

Open your VirtualHost config file. You should have something along the lines of:

<VirtualHost *>
DocumentRoot /var/www/vhost1
DirectoryIndex index.php
ErrorLog /var/log/apache2/vhost1-error.log
CustomLog /var/log/apache2/vhost1-access.log combined
<Location />
Options Indexes FollowSymLinks
AllowOverride All


Together with the new config, this should look like that:

<VirtualHost *:80>
DocumentRoot /var/www/vhost1
DirectoryIndex index.php
ErrorLog /var/log/apache2/vhost1-error.log
<Location />
RewriteEngine on
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R]
<VirtualHost *:443>
DocumentRoot /var/www/vhost1
DirectoryIndex index.php
ErrorLog /var/log/apache2/vhost1-error.log
CustomLog /var/log/apache2/vhost1-access.log combined
SSLEngine On
SSLCertificateFile /etc/apache2/ssl/crt/vhost1.crt
SSLCertificateKeyFile /etc/apache2/ssl/key/vhost1.key
<Location />
SSLRequireSSL On
SSLVerifyClient optional
SSLVerifyDepth 1
SSLOptions +StdEnvVars +StrictRequire


Now if you restart your web server, you should be able to make it work straight away.

Note that if you do that on a fresh server, you might receive a “Configtest failed” error message. This is most likely to be due to the Rewrite or SSL modules not being enabled. Just enable them:

sudo a2enmod rewrite

sudo a2enmod ssl

sudo /etc/init.d/apache2 restart


2012-10-15 edit: as indicated by Gerard H. Pille in the comments to this article, Apache needs to be configured to answer on port 443 as well. This is generally a default setting in Debian/Ubuntu, but if you need to enable it, just locate the “Listen 80” in your Apache configuration directory and add a “Listen 443” on the next line. Restart Apache, and you should be done with it.

Categories: English, OSS Solutions Tags: ,

Dokeos – Drupal link planning

April 23, 2008 7 comments

I had an interesting talk with Marco Antonio Villegas Vega the morning of 19th April 2008 about a possible link between Drupal and Dokeos in the medium-term future (a few months).

The idea is that Dokeos lacks one thing that Moodle has (but that we don’t want in Dokeos itself): the possibility to build a widget-based website with your content.

Dokeos has a strong structure, which Moodle lacks of, making it simpler for new users to get around and learn. And learning is about the major thing users do in Dokeos, so if they can’t understand how the platform works, they’re in a bad position to start learning the real stuff.

So, Dokeos wants to remain like that, but at the same time a considerable amount of clients are asking us to better integrate Dokeos into their website or web portal. The idea is thus to start small, by first providing a Drupal module that will allow user to:

  • log directly and automatically (if using openID at first) into Dokeos from their Drupal site
  • get a list of events from their personal agenda in Dokeos (and possibly display it in the Events module in Drupal)
  • get a list of direct links to courses they’re subscribed to (will open in a new window though, to let them continue using Drupal)
  • get a list of certificates (more a Business Network feature)
  • get a list of documents from inside the courses, to which they have access (will also open in a new window)

Dokeos would then become almost invisible for the most frequent interactions (open documents, check agenda and announcements), and would remain as a separate window/tab for the most thorough interactions.

This would most certainly imply starting to use web services as a largely-implemented feature. To do this, I’ve been thinking for quite a long time about integrating PECL’s package SCA_SDO which provides a nice way to re-use existing functions to provide web-services. This would hugely reduce implementation costs for Dokeos while providing the web services we need quickly and efficiently.

What do you think about it? Don’t hesitate to leave your comments, it’s still in discussion…

mbstring vs iconv

April 22, 2008 10 comments

I was wondering today why use mbstring rather than iconv in Dokeos, and honestly I didn’t remember exactly why I had chosen mbstring in the past, but finding information about the *differences* between the two.

mbstring is a library that deals with multi-byte character strings

iconv is also a library that deals with multi-byte character strings

However, their respective documentation doesn’t mention the other one.

Searching a bit more, I found a PPT presentation from Carlos Hoyos on Google
saying this:

PHP supports multi byte in two extensions: iconv  and mbstring
* iconv uses an external library (supports more encodings but less portable)
* mbstring has the library bundled with PHP (less encodings but more portable)

If that’s the case (I assume he’s right as he was giving that conference at NewYork PHP) then the choice I made a few years ago was the right one. We want maximum portability, so we’re going to continue using mbstring until there is a major reason not to.

Although asking for more info on the general PHP list (which has traffic of a few thousand mails per months), I only got one personal opinion answer, so I guess the difference is really boiling down to a few minor things (including the licence), making this article almost useless, or at least in the sense of comparing the libraries.

Categories: Development, English, Techie

Installing OpenLDAP on Ubuntu 7.10

For professional testing, I needed a test installation of an LDAP server.

This has never been easier on an Ubuntu (and it’s as easy on Debian Etch):

sudo apt-get install slapd

The installer asks you for a password twice (I’ve put “ldap” as it’s just a test install) and then writes a config file in /etc/ldap/slapd.conf and starts the service.

If you go into the config file, you will see that, by default (if it didn’t find any domain name definition) it will put you a cn=admin,dc=nodomain.

To use it easily, why not install phpldapadmin?

sudo apt-get install phpldapadmin

Now get your browser to http://localhost/phpldapadmin/, enter cn=admin,dc=nodomain as a connection string, and the password you gave to the package installer (in my case, ldap) and there you go, full access to your test LDAP directory. Enjoy!

Categories: English, OSS Solutions

Beta release pushed back (just a little)

April 14, 2008 1 comment

I’ve updated the 1.8.5 page, basically to mention that although I had initially planned the beta to be released last Friday, I failed on that predicament and I’m trying to make it ready for tomorrow or Wednesday the 16th. Obviously, the official release date for Dokeos 1.8.5 stable will be pushed back (a lot more, this one) as we want to have a beta, then a release candidate, then a stable release, each of them separated by at least one week to let you guys try it out and report things that are *still* not working.

Dokeos Latinoamérica at FLISOL 2008, Lima

My presentation of Dokeos, which was supposed to happen at 6pm, and then has been set to be at 4pm is actually split in two. So I will be at the UTP at 4pm and at the UNI at 6pm, one hour each side… Funny stuff!

I will be giving a speech at FLISOL 2008, Lima, Perú, on Saturday the 26th of April, around 4pm (and for around 1 hour).

You might want to have a look at the program if you intend to come…

Considering the main topic of the FLISOL 2008 (Festival Latinoamericano de Instalación de
Software Libre) is the open-source software in education, it seems quite essential for me to be part of it. I’m currently discussing having a stand over there. The primary objective being to find new clients, I am not sure it’s the right event for that.

If you want to see a demo of a fresh Dokeos 1.8.5 or to discuss the development of Dokeos, feel free to come around.

Spanish version

Estaré dando una charla en el evento FLISOL 2008 de Lima este 26 de Abril 2008, en la Universidad Tecnológica del Perú, cerca de las 4pm. Como el téma es sobre el software libre en la educación, era bastante importante para mi de participar.

Estoy conversando tambien en este momento para tener un stand en el evento.

New features in Dokeos 1.8.5 – part 1

April 9, 2008 2 comments

I’ve already touched the topic slightly earlier, and there is a nice Dokeos 1.8.5 page in the tabs above that give a global idea, but Dokeos 1.8.5 comes packed with a lot of tiny but practical new features, and tiny but practical improvements.

Some of the things we are working on at the moment are listed below

Regional Managers and Human Resources Managers

It’s been a repeated complaint among our users that the flexibility of Dokeos roles was not complete enough for medium to large-size companies. Well this should be solved by those two new statuses.
Regional Managers will be able to deal with a subset of the administration settings (manage users and courses), while the Human Resources Managers will be able to analyse the reporting globally, of all sessions and all users.

Improved works, forum and blog tools

These three tools have been reviewed to offer better cohesion as a whole and to give more information to the user (alignment of icons that were otherwise moving depending on the item, dates display when has a directory been updated last, …). The forum and blog tools have been re-added the feature to attach documents, which had been available in Dokeos 1.6 at some point, and then removed because it was unsecure. The security problems have now been taken care of and you will be able to attach your favorite documents, provided they play along with the filtering policies of the Dokeos platform administrator.

User fields

There was a well-hidden feature to add user metadata in a course until now. We’ve left that one in (although its usefulness could be discussed now) but added a global way of adding data about a user. You can now add a user’s country, age, native language or whatever data you would like the users to add about themselves. These data will then be available on request in the survey results and exercises results exports, which will allow you to export more detailed CSV files that will be the key to extended statistics on your users base.

Word documents conversion (Woogie©)

You will now be able to import Word documents directly into a learning path, as an intent to provide you with more possibilities to quick-build the bases of a course. For our hosted clients, this is an additional service though, as it requires considerable server load capacity. The component is totally free and open-source, as usual, so you will be able to download it from our website.


You don’t really know how easy or practical OpenID can be until you start using it for more than one of your usual applications, but if that’s the case, OpenID is a real time-saver and security feat.

Survey without e-mail

You will now be able to take a survey through your course’s homepage, without needing an e-mail invitation. That’s something we’ve been asked for quite a lot.
That’s all for now. In part 2, I will talk about the features we will have but that are not completely finished yet (audio recording, videoconference, LDAP dynamical connectivity and more)


April 6, 2008 2 comments

A few days ago, after talking with Manuel Ruiz Hurtado and Ernesto Quiñones Azcárate in a small meeting to see what was the current status of large e-learning push projects in Peru, I realised the importance of having an e-commerce tool related to course contents for Dokeos and other e-learning systems. E-commerce, yes, but most of all C2C (Customer to Customer or Consumer to Consumer depending on taste), in the likes of e-bay.
Selling an e-learning portal doesn’t go without selling courses, at least for a large company or institution.

At the same time, open-source projects in the field of e-commerce are pretty much limited to b2c (Business to Consumer). OSCommerce or various plugins for Drupal or Joomla are all oriented at B2C whereas I want to develop a product for C2C (Consumer to Consumer) in the sort of e-bay. Apparently, this hasn’t been thought of until now.

So I’ve decided I would dedicate what’s left of my time to develop this project. The objective is to have a first working version ready at the end of May and start implementing it to sell courses.
I also think it would be good to use CakePHP or even better, Akelos, for that, so all that’s missing until now is a plan of action.

Talking about a plan of action, I’m starting to think about the database design for the project. It should manage users and products, as well as amounts of money held for each user, votes, product formats, language and categories…

Open-source essentials:

  • A nice name (OpenC2C doesn’t seem to be taken, which is a good start)
  • API documentation
  • Public website (Sourceforge for starters)
  • Clear CSS division/screen map
  • 2 basic CSS themes
  • Database diagram
  • Easy install
  • Object-oriented structure


  • Each table must have a unique ID/primary key
  • Use CakePHP/Akelos naming conventions to avoid problems (alphabetic order, plural names, …)
  • Make large tables non-dynamic in size (no varchar)
  • Use database layer (at least MySQL and PostgreSQL must be supported)
  • Use a timestamp and a user ID for *everything* (maybe use a separate table for that, to make sure the load on the main tables is not too important)

I have started working on this with Akelos and I’m about to finish the initial database structure. After that (and once I understand Akelos a bit better) I will start adding putting all this into the SourceForge SVN account I created for that.

%d bloggers like this: