[haiku] Re: [gsoc] Request for application pre-review

  • From: Michael Bridgers <michaelbridgers@xxxxxxxxxxxxx>
  • To: haiku@xxxxxxxxxxxxx
  • Date: Sun, 22 Mar 2009 11:35:12 -0400

My name is Michael Bridgers. I work in the software globalization
department of a major software vendor. I understand the interest in
developing native locale support from scratch for Haiku, but I think
there is a much better choice.

Many software vendors, including mine, use an open source
internationalization library that provides anything we could develop
from scratch, plus MUCH more. This library is Internationalization
Components for Unicode (ICU). Here is the main documentation page.

I have been working on porting this library to Haiku for the past couple
of months, and have it compiling for both the 2.9xx and 4.xx gcc
versions of Haiku.

Now, with that said, I think there are a LOT of areas that need work for
Haiku to be fully internationalized. Here is a list of the main areas
where Haiku is missing support:

- Right-to-left (RTL) layout of windows
- RTL UI components (such as scrolling lists, combo boxes, etc)
- Fonts for more languages
- Resource bundles for localization
- Linguistic collation
- Encoding conversion
- Locale sensitive date/time, calendars, etc...
- Locale sensitive number formatting and parsing
- Text boundary detection

In addition, we need a preferences application to set the locale and
other regional settings, like currency symbol, date preferences, etc...

RTL layout is needed for Hebrew, Arabic and a few other languages.

RTL UI components display differently in RTL layouts. For example,
scrolling lists will have the vertical scroll bar on the left side.
Combo boxes will have the chevron on the left side.

Haiku has resources, but they aren't up to the task of easily supporting
localization of applications and the OS.

Linguistic collation sorts text based upon rules that are different for
each locale.

Text boundary detection is needed for text layout.

The first two items in my list have to be done by adding support to
Haiku. Additional fonts are available.  The remainder of the items are
supported by an open source library, ICU (Internationalization
Components for Unicode). http://site.icu-project.org/

The code that makes up ICU started at Taligent in the 1980s. It was
ported to Java in the mid 1990s to provide their locale support. When
Taligent went under, IBM took over ICU and eventually released it open
source.  It is actively supported by IBM and other companies. ICU is
used by many global companies to provide internationalization support to
their applications or OS. Some of the places that include ICU are Linux
and Eclipse.

ICU supports the current version of Unicode and provides support for the
last 6 items in my list (plus other things).

I have been doing some tests of ICU in Haiku. I have built ICU
successfully using both versions of GCC (2.95.3 and 4.x). ICU has
extensive tests for all features. Not all of the ICU tests compile
successfully with 2.95.3, but with small changes, they do compile. When
the ICU tests are run in Haiku, there are a few failures, but the
majority of the tests run successfully.  There are also a few minor
changes that are needed to the Haiku headers to allow ICU to compile.
Those changes to the Haiku headers don't affect the compilation of
anything else in Haiku.

--- Proposal ---
My proposal is that Haiku add ICU to the core of the OS.

There are a few problems in Haiku that ICU exposes. For example, the
atof function returns incorrect values in some cases, and produces a
segmentation fault in some of the Haiku tests. These problems can be
corrected over time. They won't prevent Haiku from using ICU for many
tasks immediately.

I currently working out an approach to using the resource bundle support
in ICU to provide support for localizing both Haiku applications and the
OS itself.  I am planning to provide articles describing this (including
example code) and other features of ICU.

On Sun, 2009-03-22 at 14:40 +0100, PulkoMandy wrote:
> Hello,
> here is my application for this year GSoC.
> I am looking for your advice before i submit it officially.
> What do you think of the project ? Can you point me to some
> documentation about Zeta's locale kit or other information i may have
> missed ?
> I have already submitted some patches to the haiku sourcecode in the
> past : see commits 24663, 24866, 25685 and 29449. Is that enough or
> should I fix some more things ?
> Thanks for your help,
> PulkoMandy / Adrien
> ### Personal Profile ###
> Full name : Adrien Destugues
> Preferred email address : pulkomandy@xxxxxxxxx
> Summer Education : my regular classes ends around 15 of june. Nothing
> else planned for the summer.
> Employment : if i am selected for GSoC this year, it will be my only
> employment. If not, I will have to find something else...
> Schedule : Nothing else particular is planned.
> Time Allocated : Full time (40 hours a week or more if i feel
> motivated) from 15 of june to end of august. Probably less than that
> before 15 of june, but I will try to spend as much time as possible on
> my project.
> Brief bio :
> I'm studying computer science and electronics at the ENSSAT
> engineering school, Lannion, France. This is my 3rd year in the field
> of Computer Science. I have also quite a good experience in opensource
> programming, being the manager of the Grafx2 project
> (http://code.google.com/p/grafx2).
> I used to run BeOS as my main operating system for some time, but
> switched to linux because I missed some applications. I hope to get
> back to haiku and its clean appearance and usability as soon as
> possible. I already tried to get into GSoC last year, but my
> application was rejected. I hope i'll make it this time.
> ### Project idea information ###
> Project title  : Internationalization support for Haiku
> Project description :
> As an operating system oriented towards users, it feels strange that
> Haiku has no support for internationalization and is only available in
> english. The goal of this project is to add a Locale Kit to the
> system, allowing all the bundled applications, tools and preflets to
> be translated to the correct language at runtime. The translation
> should be made simple with the use of a graphical tool, and the user
> should be able to select his language easily when installing the
> system, then switch to another one at runtime.
> On the technical side, there are some libraries allowing translations
> like that, for example GNU gettext. Having some kind of compatibility
> with them would be nice. However, it should be noted that there is
> also some support for internationalization in zeta, and a project was
> started in OpenTracker to duplicate it. The sources could be used as a
> base for Haiku i18n support. It is important to note that the layout
> management in Haiku will cause less problems with strings not fitting
> the intended space.
> The locale kit may also provide support for correct formatting of
> date, time, numbers and currencies.
> Why do you want to work on this project? What makes you the best
> person to work on it?
> I think this project is very important for Haiku, and I would be happy
> to contribute in an usefull way. I hope to use Haiku as my main
> operating system and it will be better for me if it is localized.
> It also seems to be a good way to learn both the inner workings of the
> API and the way to use it in some GUI applications.
> List of project goals :
> - Design the translation API for applications, the file format for
> storing the localized strings
> - Create an example localizable application and test it
> - Design and create a preflet for changing the language
> - Design and create the "translation helper" application allowing easy
> translation of all applications
> - Modify the code of all the preflets and applications in haiku so
> they use the localization system (if there is some time left at the
> end of summer ;))

Other related posts: