Pleasant experiences and project loyalty

As a general case, my experience with most of the FOSS projects whose products I consume or, contribute to, have been very pleasant. Feedback has generally been well received, requests listened to. So, what I am going to write is not very special. But, they are striking by themselves.

Sometime ago, I was shopping for an off-line translation tool. I was fed up with Lokalize’s issues and, the fact that it wasn’t letting me do what I wanted to do at that point in time – translate. Additionally, I wasn’t in the mood to actually install a translation content management system to do stuff. Face it, I am an individual translator and, calling in the heavy shots to get the job done was a bit silly. So, I turned to virtaal. Actually, I think I was goaded into giving it a try by Runa.

Virtaal was, at that point in time, not really a good tool 😉 And, you can figure from the blog link above that I wasn’t interested in it too much. However, since I ended up giving it a chance (you cannot simply ignore a recommendation from her) I ended up running into two issues. One was predominantly more annoying than the other and, in effect was what was putting me off the tool. However, the developers took interest to get it fixed and, in the latest release have resolved it.

The other bug was resolved in an even more interesting way – over IRC with hand-holding to obtain the appropriate debug information and, then on to editing the file to put in the fix. At the end, the fix might be trivial. But the level of interest and care taken by the team to listen to their users is what makes me happy. In this aspect, the other development crew I can mention is Transifex. I haven’t met most of them and yet they keep taking suggestions, reports via every communication channel they are on – blogs, micro-blogs, IMs, IRC and trac. That makes them visible, gets them into the shoes of the users and, I am sure it earns them invaluable karma points.

Yesterday, while helping (I just did the file editing while Walter did all the brain muscling) to close the other bug, I felt incredibly happy to be part of a system where it isn’t important who you are or, where you are from. What is important that you have a real desire to develop better software and, make useful artifacts for all.

As it goes – “Your mother was right, it is better to sharelink to video.

The post is brought to you by lekhonee v0.8

GSoC and beyond…

Karsten has a nice blog post and, an even nicer report on GSoC 2009 from the perspective of The Fedora Project-JBoss umbrella organization. If you haven’t already gone through it, it would be good to read it up and, provide feedback.

An immediate benefit of any project participating in the Summer of Code is the ability to get exciting extensions or, innovations via a group of highly talented individuals – both mentors and, contributors. Having had the opportunity to look at the projects from fairly close quarters over a period of years, there are a couple of things that stood out. Some of them are listed on my wiki page. I’d say that the most important thing is to “have a plan“. A stage of proper planning which sets the expectations and deliverables for a GSoC proposal goes a long way in becoming a successful proposal. That, coupled with a scheduled update-review cycle makes it a proposal that has a constant communication channel. I was reminded of the this fantastic mentoring how-to today while reading the latest issue of The GNOME Journal (as an aside, you should read this issue).

If you look at the wiki page I pointed out earlier, you’ll note that I mention an “annual round-up”. This by itself is very trivial to do and yet very important.. It provides an yardstick by which to measure the success or, failure of a GSoC experience of being able to generate sustained and relevant participation. For example, if projects did more of this kind of “where are they now ?” series, it provides upcoming and potential contributors with role-models they can look up to or, be like.

That single act of being able to have role models makes for a tremendous motivation to become a sustained contributor to Free and Open Source Software.

Context,subtext and inter-text

There are two points with which I’d like to begin:

  • One, in their Credits to Contributors section, Mozilla (for both Firefox and Thunderbird) state that “We would like to thank our contributors, whose efforts make this software what it is. These people have helped by writing code and documentation, and by testing. They have created and maintained this product, its associated development kits, our build tools and our web sites.” (Open Firefox, go to Help -> About Mozilla Firefox -> Credits, and click on the Contributors hyperlink)
  • Two, whether with design or, with inadvertent serendipity, projects using Transifex tend to end up defining their portals as “translate.<insert_project_name>.domain_name”. Translation, as an aesthetic requirement is squarely in the forefront. And, in addition to the enmeshed meaning with localization, the mere usage of the word translation provides an elevated meaning to the action and, the end result.

A quick use of the Dictionary applet in GNOME provides the following definition of the word ‘translation’:

The act of rendering into another language;  interpretation; as, the translation of idioms is  difficult. [1913 Webster]

With each passing day innovative software is released under the umbrella of various Free and Open Source Software (FOSS) projects. For software that is to be consumed as a desktop application, the ability to be localized into various languages makes the difference in wide adoption and usage. Localization (or, translation) projects form important and integral sub-projects of various upstream software development projects.

In somewhat trivial off-the-cuff remarks which make translation appear easier than it actually is, it is often said that translation is the act of rendering into a target language the content available in the source language. However, localization and translation are not merely replacing the appropriate word or phrases from one language (mostly English) to another language. It requires an understanding of the context, the form, the function and most importantly the idiom of the target language ie. the local language. And yet, in addition to this, there is the fine requirement of the localized interface being usable, while being able to appropriate communicate the message to users of the software – technical and non-technical alike.

There are multiple areas that were briefly touched in the above paragraph. The most important of them being the interplay of contextsubtext and inter-text. Translation, by all accounts, provides a referential equivalence. This is because languages and, word forms evolve separately. And, in spite of adoption and assimilation of words from languages, the core framework of a language remains remarkably unique. Add to this mix the extent with which various themes (technology, knowledge, education, social studies, religion) organically evolve and, there is a distinct chance that idioms and meta-data of words,phrases which are so commonplace in a source language, may not be relevant or, present at all in the target language.

This brings about two different problems. The first, whether to stay true to the source language or, whether to adapt the form to the target language. And, the second, as to how far would losses in translations be acceptable. The second is somewhat unique – translations, by their very nature have the capacity to add/augment to the content, to take away/subtract from the content thereby creating a ‘loss’ or, they can adjust and hence provide an arbitrary measure of compensation. The amount of improvement or, comprehension a piece of translated term can bring forward is completely dependent on the strength of the local language and, the grasp over the idiomatic usage of the same that the translator brings to the task at hand. More importantly, it becomes a paramount necessity that the translator be very well versed in the idioms of the source language in additional to being colloquially fluent in the target language.

The first problem is somewhat more delicate – it differs when doing translations for content as opposed to when translating strings of the UI. Additionally, it can differ when doing translations for a desktop environment like, for example, Sugar. The known user model of such a desktop provides a reference, a context that can be used easily when thinking through the context of words/strings that need to be translated. A trivial example is the need to stress on terms that are more prevalent or, commonly used. A pit-fall is of course it might make the desktop “colloquial”. And yet, that would perhaps be what makes it more user-friendly. This paradox of whether to be source-centric or, target-friendly is amplified when it comes to terms which are yet to evolve their local equivalents in common usage. For example, terms like “Emulator” or, “Tooltip” or, “Iconify”being some of the trivial and quick examples.

I can pick up the recent example of “Unmove” from PDFMod to illustrate a need to appreciate the evolution of English as a language and, to point to the need for the developers to listen to the translators and localization communities. The currently available tools and, processes do not allow a proper elaboration of the context of the word. In English, within the context of an action word “move” it is fairly easy to take a guess at what “Unmove” would mean. In languages where the usage of the action word “move” in the context of an operation on a computer desktop (here’s a quirk – the desktop is a metaphor that is being adopted to be used within the context of a computation device) is evolving, Unmove itself would not lend itself well to translation. Such “absent contexts” are the ones which create a “loss in translation”.

The singularity here is that the source language strings can evolve beautifully if feedback is obtained from the translated language in terms of what does improve the software. The trick is perhaps how best to document the context of the words and phrases to enable a much richer and useful translated UI. And, work on tooling that can include and incorporate such feedback. For example, there are enormous enhancements that can be trivially (and sometimes non-trivially) made to translation memory or, machine translation software so as to enable a much sharper equivalence.

(The above is a somewhat blog representation of what I planned to talk about at GNOME.Asia had my travel agent not made a major mess of the visa papers.)

FAmSCo elections and so forth

This is the season of elections and, the one that I’d like to talk about is the FAmSCo one. This time around all the 7 seats are up for elections and, an ensemble cast of Fedora folks have put their hats into the ring.

The FAmSCo, along with the other *SCo in Fedora land offer the finest opportunity to demonstrate leadership, show commitment and, work in one of the front-line roles of the project. I took sometime in reading up the statements of the candidates and, one of things that struck me (besides those mentioned here) was the recurring theme of making the FAmSCo process more “open” and “transparent”. Among the important duties which are owned by FAmSCo, encouraging communication is a noteworthy one. I hope that the candidates, once part of FAmSCo, will take time to bring about a change in the way communication is handled. I am sure that there are ways it could be made better and relevant.

The other aspect is the need to have goals or plans that are measurable. I hope that this comes up in the town-hall, and, the candidates think over how they would like to measure their impact on FAmSCo in specific and The Fedora Project in general terms based on their plans. From a personal perspective, I have been incredibly pleased to see FAmSCo initiate plans and processes that would lead to the most awesome bunch of Fedora Ambassadors – be it a structured mentoring program or, through a follow-up on learning from events. I’d like to see that continue with more vigor. Working with folks to facilitate bringing out the best in them has its own reward.

This time around there are a lot of friends in the fray and, that makes me very happy. It is always good to see folks stepping up and desiring to do what they are really good at. So, mark the calendar and, remember to vote.

Glitches in collecting book data based on ISBNs

Over the weekend I snagged a somewhat cheap and, easily available hand-held barcode scanner – an iBall LS-162. Fairly nifty device and, works plug-n-play on Fedora.

The reason behind this was to finally collect and collate information about all the books that is stashed around me and, create a nice list based on the ISBN data. Which is here I ran into a glitch I did not anticipate. A number of the technical books which I buy (yes, in spite of the Safari, ACM and IEEE subscriptions, sometimes I do buy books) are Indian reprints and, using the ISBN to look-up the metadata isn’t working out as planned.

Does anyone have a pointer to what I should be looking the data up against ? Additionally, does anyone know of a small tool which can take in a list of ISBN numbers and, pull down the metadata for the books to output to a CSV ? I tried traditional tools like Alexandria, it did not work out. If you want a sample list of the ISBNs, leave a comment on this entry and, I’ll point you to a download link or send it over email.

The post is brought to you by lekhonee v0.8

Looking forward to some improvements

I have been using Transifex based systems for a couple of days/weeks now. And, in line with what I did mention on my micro-blog, Transifex and Lotte make things really easy. The coolest devel crew makes that happen. And, since they lurk online and engage with their users, every little tweak or, improvement that is suggested and considered makes the consumers feel part of the good work they are doing. Good karma and awesome excitement all around.

At some point in time during the week, I’d put them in the tickets as feature enhancements. However, for the time being, here’s a couple:

  • Lotte should allow me to click on a file that is not yet translated for my language and, add it to the collection. If I recall correctly, the current way to add it is to download the .pot, convert to the appropriate .po and, upload it with comments etc
  • Lotte needs to allow “Copy from Source”. This should accelerate translation by removing the extra step of having to actually select, copy and paste. This comes in handy when translating strings within tags or, brands/trademarks and so forth
  • Handling and using translation memory could be built into Lotte. For a particular file in a specific language within a project, it could perhaps provide suggestions of translated words. In the future, allowing teams to add their glossaries would make it a more powerful tool too. Having said that, I’ve always wondered what happens when team glossaries are created from files across various projects – is there a license compatibility soup problem that could crop up ?
  • A Transifex installation could provide notifications of new files or, updated files for the language. This could be limited to the files for which the last translator is the person receiving the notices or, ideally, could be for the language itself.
  • Statistics – providing each language a visual representation of commits over time or, per contributor commits would also be a nice addition

So much for Transifex, in fact, I need to write out all of that in a nicer way so as to allow the possibility of these turning into GSoC projects within Transifex.

Coming to Virtaal. With lokalize being unbearably useless for me (it adds garbled text or whitespaces into files when using the stock F11 supplied one) and, before it is commented, no I haven’t filed a bug yet, getting the files done was a bit more important at that specific point. So, mea culpa. But I do check with every yum update and, it is still the same. The specific issue with Virtaal is that each time one gets a new string loaded for translation, the text input area loses the input method details. Which means that it is a constant game of switch back and forth between the inputs. Sadly enough, this is the only software that currently works for me (I don’t want to set up a local pootle/transifex instance and, do web based translation)