• This site uses cookies. By continuing to use this site, you are agreeing to our use of cookies. Learn more.

This is how I like open source

Not open for further replies.



While OpenSource Operating System are different, have different views on how things should be implemented. That does not prevent collaboration, collaboration can happen in various areas:
  • Just discussion: share the how and the why that particular problem has been addressed in this OS. So if someone implement a different way he can learn from failures and successes from other implementation.
  • Sharing code: it is often good to just grab code from an other OS if someone has already done the work, port it, debug it, send back patches, etc.
Here I want to talk about the second point. While it is "easy" when we speak about third party tools: simple binaries, etc., it is a bit more complicated when we speak about components that are low level or has an impact on the whole system like libc.

The story I want to talk about is how FreeBSD, DragonflyBSD and Illumos has collaborated to get a good support for String Collation and improved support for locales.

It all started on Illumos. Garrett d'Amore implemented Unicode string collation on Illumos while working for Nexenta and made it BSD license (the choice of this license allowed us to be able to grab the code more easily).

Few years later, John Marino (from Dragonfly) imported the work done on Illumos into Dragonfly, while he was doing that he decided, it was probably a good idea to rework how locales are handled.

He discovered that Edwin Groothuis (from FreeBSD) started long ago a project to simplify locales handling on FreeBSD: edwin's project.

He extended the tools written by Edwin and has been able to update Dragonfly to the latest (v27 so far) Unicode definition from cldr.

John and I already work together on multiple projects so he came to me to talk about his project, I jumped on it and decided to merge that work on FreeBSD (Unicode string collation was a long overdue project in FreeBSD, and beside several attempts via Summer of Codes, none of it managed to get far enough to be mergeable).

What I did was merging the code from Dragonfly, I spotted a couple of bugs and worked with John on fixing them: issues with eucJP encoding, issues with Russian encoding (John did most of the work on tracking down and fixing the bugs), I also converted localedef (the tool to generate the locales) into using BSD license only code (original version used the CDDL libavl library which I modified to use tree(3)), fixed issues. I also took the locale generation from Edwin (extended by John).

This work resulted in a nice flow of patches going from Dragonfly to FreeBSD and from FreeBSD to Dragonfly.

And now Garrett is interested in grabbing back our patches into Illumos!

The result of this collaboration is that now 3 OS share the same implementation for collation support! This is very good because when one discovers a bug the 3 of them benefit the fix!

Concerning the locales we have ended up with different definitions (different policies or views) but the tools and code are the same so we can benefit from each other improvements.

This collaboration also allowed us to quickly get a working implementation for a tough subject: "string collation", and we helped improving Dragonfly and Illumos implementation.

Continue reading...
Not open for further replies.