University of Orleans LIFO LIFO

David Teller: Open-Source

What is Free Software ?

Near the beginning of 2007, I mentioned Free Software to a few students. Some have never heard about it, while the others answered that yes, it was "freeware", that is software one may download for free. Well, they were wrong.

Free Software is free not because of its cost but because of its freedom — that is, the rights granted to the users.

The right to use the software

Foolishly, one may believe that buying some software grants you the right to use it. Unfortunately, that is not true. Don't you believe me ? Take a look at the End User Licence Agreement of Windows XP (hint: you may only use it on a computer with only one CPU) or Windows Server 2003 (hint: it may be called "server", but you need to pay an additional fee-per-client if you want to use it on your server). Read the licence of your scanning software, which you probably aren't allowed to use with a different scanner. Read the licence of the fonts provided with MacOS, which contain some symbols you are not allowed to use.

Free Software is software you are allowed to use.

The right to study the software

What is the common point between World of Warcraft, Windows XP SP2, AOL Instant Messenger 2005, EDonkey 2000 and possibly Skype ? These are all proprietary software, which means that you are not allowed to study how they work, under penalty of 3 years of jail (in France). Oh, and all these contain spyware. Ok, maybe not all of them, because no one is sure of what Skype really does, but suspicions are high enough that state departments forbid the use of Skype. Because it's forbidden to check. By the way, what does your voting machine do ? Same problem: you aren't allowed to check if it's faulty or malicious. Nobody is.

By the way, are you using a word processor ? Do you have old files ? I hope that's not an old version of, say, Word, WordStar or WordPerfect, because at the moment, no recent word processor can read these files. All these are proprietary software, using proprietary file formats, which means that you're also not allowed to try and study these software or formats to recover your files. The penalty, again, is 3 years of jail.

Free Software is software you are allowed to study.

The right to spread the software

Whenever you buy Adobe Photoshop or Wolfram Mathematica, you are entitled to use these on your computer. If you have several computers, you need to decide on which computer you're going to do that, because you're only allowed one computer. What about your mom's computer or your children's computer ? Nope, they'll have to pay again. What about your students, how do you teach them ? The university will have to pay. What if they want to use it at home, for homework ? Well, they'll have to pay again. What if it weren't Photoshop but a proprietary e-Book ? Forget the free town library, you'll have to pay one licence per reader.

By definition, Free Software doesn't have this kind of restriction. Once you have acquired your software, you can spread it as much as you want. Note the can: you don't have to. In particular, if you are interested, you can sell the software -- which probaly makes sense only if you have written or improved it in the first place.

The right to improve or adapt the software

Have you just upgraded to Windows Vista or Apple Leopard and found out that one of your old (proprietary) software has stopped working ? Well, let's hope that the editor still exists, still edits new versions, hasn't decided to raise the prices and that the new versions are compatible with the old versions. Oh, you are an administration and this software was custom made for you ? Well, then you'd better get ready to pay again. Or maybe you found a bug ? Let's hope that the company decides to fix it some day, because if you do it yourself, you're in for 3 years of jail again.

With Free Software, on the contrary, you are allowed to modify the software. If, as most users, you can't do it yourself, you can always ask (or pay) someone knowledgeable to do it for you.

While this right may not seem important, it is actually critical for the industry, for science and for the whole of society. Indeed, once a piece of software hsa been written once by a laboratory, a company or an administration, the next lab/company/administration needing the same features will not need to rewrite everything from scratch, wait a few years and pay. Rather, they will only need to wait and pay for the time necessary to add whichever specific features are specific to their case.

The right to be considered innocent until proved

Per itself, this is not a right. Rather, this is a consequence of everything mentioned above. As you are allowed to distribute and use your Free Software without restrictions, there is no need for laws preventing you from doing so, for spyware watching that you're not breaking the law, nor for laws to prevent you from breaking the spyware, nor from hardware to prevent you from removing it. Yeah, that's happening in the world of proprietary software, from the operating system to video games. You also don't need to register using a unique password during installation, then connect every so often to the editor's website to prove that you're still honnest and haven't given that password to others. Yes, this is also happening in proprietary land, from operating systems to video games. Of course, if you can't manage to prove your innocence, you risk your deactivation of your product, if not more. Oh, and accidents happen quite regularly.

Free Software doesn't hold you guilty by default

OpenBerg

Objective

The OpenBerg projet aims to develop open-source tools for reading, writing and publishing e-books using open standards. The first subproject, OpenBerg reader, is similar to Adobe Acrobat in its purpose. The main differences are that

  • OpenBerg uses the open standard OEBPS 1.2 rather than the publically available but closed standard PDF
  • OpenBerg reader supports semantic author annotations, semantic and visual user annotations and semantic-based search
  • OpenBerg is open-source and fully extendable
  • OpenBerg does not depend on Microsoft Passport, as opposed to the recent versions of Adobe Acrobat.

Role

I am the project manager.

Status

OpenBerg Reader is now in version 0.5, available for Windows, MacOS X and Linux, and has been downloaded about 20,000 times. OpenBerg Reader was one of the three finalist candidates for inclusion as a textbook reader for Third-World children by the One Laptop Per Child project.

Mozilla, XULFr

Objective

The main objective of the Mozilla community is to promote free tools and open standards for the web, starting with the Firefox web browser.

Role

I am a member of the Mozilla community and, in particular, the XULFr community of French-speaking Mozilla developers. As such, I provide free support for developers of extensions for Firefox and other Mozilla tools.

In addition to this, I have recently launched two student projects related to the security of the Mozilla platform:

SEFirefox (Student project, ENSI Bourges)
Security Extensions for Firefox extensions.
MLS for Thunderbird (Student project, ENSI Bourges)
Support for confidentiality inside Thunderbird.

Static Analysis for JavaScript

Objective

The JavaScript language is a nice, often misunderstood, prototype-based object-oriented programming language, used most often to add interactivity to web pages. With the development of the Firefox platform, the hype surrounding Ajax techniques, the appearance of Prism, Air and Silverlight, and the upcoming JavaScript 2 update, this language is a good candidate for becoming a major contender in the field of both web and desktop development.

Fortunately or unfortunately, this language is very dynamic and offers little in the way of static verifiability. The JStify project aims to add static type checking to JavaScript 2.

Role

JStify is my research project as part of team SDS.

OCaml Standards Recommendations

Objective

Objective Caml is a programming language supporting both high-level functional programming, impure imperative primitives, and high-performance computing. Unfortunately, despite the dynamism of the OCaml community, a lack of standards hinders the development of reusable and combinable libraries, hence the adoption of the language. The OSR is a process for the community to discuss and adopt standards of libraries, language extensions and practices.

Role

I am one of the initiators of the OSR.

Stuff Comprehension for OCaml

Objective

Out-of-the-box, Objective Caml offers a comfortable syntax for creating lists, arrays, streams... as well as to perform pattern-matching upon these data structures. Unfortunately, it lacks such a comfortable syntax for managing transforming or converting data structures such as what may be found in Python or F#.

Well, not anymore.

Exception monads for OCaml

Objective

As most languages of the ML family -- and most modern languages indeed -- OCaml permits the management of exceptional situations using exceptions. Strangely, while Java's exceptions are checked fully statically, this is not the case in OCaml. While there are good reasons for this choice, insofar as some exceptions are fatal and should not be handled by the programmer, there are circumstances in which being certain that all exceptions are handled is necessary.

Solutions do exist. On the one hand, we have one tool, OCamlExc, to provide such coverage. It requires no change to OCaml programs, as well as no run-time penalty. Unfortunately, this tool is not up-to-date with recent evolutions of the language. On the other hand, we have the Exception Monad design pattern, widely used in the world of Haskell, which provides a discipline to design and implement programs in which the compiler guarantees staticall that all exceptions must be covered. Unfortunately, this comes with a heavy run-time penalty and this won't discriminate between exceptions which deal with recoverable runtime situations and exceptions which deal with unrecoverable fatal errors and are probably better left uncaught.

With this library, we provide an alternative to both, by introducing fast exception monads for OCaml. The interface is essentially the same as Haskell's exception monads but the programmer is allowed to decide which exceptions must be guaranteed by the library and which exceptions must be left unchecked. In addition, the internal implementation makes use of exceptions, resulting in programs that execute much faster than their Haskell counterpart. Another benefit of this library is that it permits polymorphic exception types, a long-time impossibility in OCaml, which are necessary in numerous circumstances, for instance to implement Java-style return or coroutines, which in turn make the implementation of cooperative multi-threading trivial.

No animals have been harmed and no Camlp4 has been used. More details in the documentation.

Well, not anymore.

Role

I'm the single developer on this project.


Chalk

Objective

Chalk is the Concurrent Hierarchical Architectures/Language of Kells, an implementation of a component-based, distributed language based on the calculus of Kells. Chalk supports distribution, concurrency, non-blocking system calls, process freezing, process and data migration, ...

Role

Co-developer, with Philippe Bidinger.

The first version of Chalk is complete and has served as a testbed for the calculus of Kells. Work on the second version of Chalk will begin when the second generation of the underlying formalism reaches a stable state.

MonoConnect

Objective

MonoConnect attempts to provide a bridge between the worlds of Mozilla and .Net. The Mozilla platform and the .Net platform provide two frameworks for cross-platform, cross-language, component-based programming. Although these frameworks are similar in their purpose, they are absolutely incompatible. MonoConnect attempts to provide a two-way bridge between these worlds, hence permitting the development of .Net component and applications using Mozilla tools and libraries, as well as the development of Mozilla (XPCom) components and extensions using .Net languages and libraries.

Role

Former contributor.

wxMozilla

Objective

The wxWidgets toolkit is a cross-platform meta-toolkit. Applications developped using wxWidgets can be compiled under a number of operating systems and environments and use native user-interface controls on each platform.

This toolkit offers an obsolete wxHTML control to display a subset of Html 4. The wxMozilla component is a replacement of wxHTML, using Mozilla's state-of-the-art Gecko rendering engine instead of wxHTML's ad-hoc widget. With this component, any programmer can add a customizable Mozilla-based mini-browser to a user-interface.

Contribution

I am the original author of the custom protocols handler, which permits to add or replace internet protocols in the wxMozilla component.

Mozilla

I am the author of a patch to permit dynamic management of DTDs by Mozilla extensions with user priviledges but without administration priviledges. This patch should permit easier internationalisation of Ajax-style client/server applications and make life easier for the implementation of a number of Xml dialects.

Wikipedia

Objective

The Wikipedia is an initiative to build a free (as in freedom) on-line encyclopedia in a growing number of languages.

Contribution

I have contributed to a few dozens of Wikipedia items, both in French and in English (π-calculus, π-calcul, XPCom, OCaml …)

I am also the main author of a WikiBook on OCaml.

Site maintained by: David Teller. Content is my responsibility. Works way better with any decent browser (Firefox, Safari, Konqueror, Opera...). Last updated in January 2008.