The roads I take...

KaiRo's weBlog

April 2007
1
2345678
9101112131415
16171819202122
23242526272829
30

Zeige Beiträge veröffentlicht im April 2007 und mit "L10n" gekennzeichnet an. Zurück zu allen aktuellen Beiträgen

Populäre Tags: Mozilla, SeaMonkey, L10n, Status, Firefox

Verwendete Sprachen: Deutsch, Englisch

Archiv:

Juli 2023

Februar 2022

März 2021

weitere...

30. April 2007

Weekly Status Report, W17/2007

As SeaMonkey continues to be my primary source of income, I feel I should give the community some feedback about what I'm doing for the project in return for the money German users are channeling to me through their Google ad clicks.

This was one of the reasons why I created this blog and started posting various news about SeaMonkey here - but reading the weekly MoFo status reports of F. Hecker, Gerv and Zak, I realized it's interesting to see what's going on in those organizational areas, and doing most SeaMonkey organizational work, it might be interesting to community members to get a glance on that as well (comment if you think otherwise or you want to know more about some specific SeaMonkey behind-the-scenes topics).

So, here's what I've been doing in week 17, 2007 (April 23 - 29):
  • Upcoming branch releases:
    Triaging approval/blocking flags for the upcoming 1.0.9 and 1.1.2 releases, pinging people about remaining blockers, bumping version numbers on branches in preparation of the releases, blogging about 1.0 EOL
  • Tinderbox/FTP work:
    Cleaned up old builds from tinderbox/build systems, made hoshi tinderbox build again (basically with a reboot) after a strange compiler failure, cleaned up old builds from ftp.m.o tinderbox-builds and nightly/latest-* directories
  • Investigated 1.1/1.1.1 AMO dictionary URL issue (see bug 367500, talking about a possible redirect with AMO people, fixed our side of this, which required breaking the branch L10n freeze to some extent, notified m.d.l10n newsgroup about this.
  • suiterunner:
    Continued poking of people about the missing links we still need for switching to suiterunner - Mark ("Standard8") is still working on finishing profile migrator (creating the list of prefs to migrate is tedious work) and thinking about download manager (can we borrow code from somewhere else?); Frank ("mcsmurf") is waiting on Rob Strong re-reviewing the NSIS installer patch.
  • SeaMonkey Marketing Shop:
    I finally created a shop at cafepress, created some designs for stuff to sell there and did order some items myself for a test run. Expect this to hit the public soon!
  • Mozilla Planning/Governance:
    I'm trying to take a very active role in Mozilla planning and governance newsgroup discussions to figure out the best ways to deal with various issues for the whole Mozilla community and in particular for the SeaMonkey project. This week, it's pretty silent there, but some Mozilla2 repository discussions are ongoing, as well as some bugzilla organization discussions.
  • L20n:
    In a small circle of people, we started talking about a possible PHP implementation of L20n so that we get really working code on top of the current spec proposal and see how it acts in practice. This is in a very early stage, we're currently discussion license issues - I'll tell you more once we have some actual code in place.
  • Various discussions:
    As always, lots of my time spent on SeaMonkey gets investigated in lots of discussions on IRC, in newsgroups and in bugs - topics this week included various issues affecting suiterunner, e.g. mac theming issues, the possibility of toolbar customization, mcsmurf's new CVS account (congrats!) and policy issues we encountered on the way there (what does an area of a super-reviewer mean?), wording of junk prefs, file locations of tab/sidebar close buttons, the suiterunner switch, page info, and others.

Tasks without progress I want to work on next week:
  • SeaMonkey slogan(s):
    Need to filter out well-recieved proposals from the newsgroup thread and get some clue how to decide on which one(s) we will be using for marketing material in the immediate future. For the first round of stuff in our new shop, I'm using the www.seamonkey-project.org URL instead of a slogan though, which redirects to our main project site.
  • Trademark policy:
    For posting marketing material, we need to have a useful trademark policy. A proposal is in review with MoFo, need to poke Gerv once again about that.

Von KaiRo, um 12:35 | Tags: L10n, Mozilla, SeaMonkey, Status | 2 Kommentare | TrackBack: 1

27. April 2007

Earning money in surprising ways

Some people might wonder what I'm working to earn my money - esp. as I'm available on IRC most of the day (unless I'm asleep) and usually always have time to discuss SeaMonkey topics, esp. when it comes down to project coordination issues.
OK, a few people might know me as a student, and theoretically I still am, but I haven't seen university (from the inside) for quite some time (though I probably should take my 4 missing exams some time soon and finally actually write up my diploma thesis). But I always feel I need to give some work back for the money I'm earning, and studying is actually not the most attractive distraction from that work...

But, what is this work then, which I earn my money with, if I have time for SeaMonkey most of the time? Well, most surprisingly, SeaMonkey actually is that work. How, you might ask? Well, I stumbled into that the same way I stumbled into the whole Mozilla project...

When I had done the first German Mozilla localization in early 2000, I realized I needed a web page for it and set that up as a sub-page on my personal website www.kairo.at, later transferring it to its own site of mozilla.kairo.at (or, nowadays, www.seamonkey.at). I had to pay for the kairo.at domain from the beginning, but hosting it on the dedicated web server of a friend of mine was cheap, and so the Mozilla localization website did not actually cause additional costs. Traffic on those pages exploded as more and more German users became aware of it, and as time passed, I had to redefine my agreement with that friend to make me co-owner of the server and be paying half of its hostings costs. I still was reluctant to throwing some random web banners to people just to pay for hosting, especially as I felt that what banner ad services displayed to people at that time was not what I wanted to put up on an open source software page.

In summer 2002, with traffic still exploding (the default start page of German Mozilla was this website after all) and a new hosting option for our server needed, I decided to do a poll about sponsoring solutions among site visitors, and as a result, created a donation system that allowed people to specifically sponsor my Mozilla German website with non-intrusive ads (this is still running there today). It was accepted well enough that I could at least pay my web hosting costs as intended - at least when evening out good and bad months. Still, all the time I was investing in Mozilla work was not paid for, though it started competing with the time I had to spend studying.

In 2004, I realized not only that a more modern redesign of the German website was needed (based on the new CBSM website system I had written), but also that with Google AdSense, there was finally a solution to display mostly non-intrusive banners for and by decent businesses and be sure they pay well enough - and my new design, based on mozilla.org's "cavendish" design, happened to have space in its top bar for a standard banner. Because of that, I decided to try an AdSense banner on the site and see how it works out.

And there, something astonishing happened: In the first month, AdSense earned me a few hundred dollars - introduction of a special suite start page with a Google search field in March 2005 made that even jump into the four-digit range! Suddenly, I started to earn money with Mozilla! Not that this made me feel completely comfortable though, as it put some personal pressure on me to give back this value to the community by dedicating even more time to the project and the community.
After a continuing rise of AdSense income, I finally founded my own one-man-business around that and my CBSM webhosting system in January 2006. Even though income declined since April 2006 (no, never saw 5 digits there, but it's still a few thousand dollars) I'm still able to live off what the community channels to me through clicks on AdSense ads on the SeaMonkey German web page and on search results from that Google field on the default start page.

And that's one additional reason why I'm donating as much time as possible to the project - it's where my primary income stream is originated. Thanks to Google for their great AdSense system and thanks to all German SeaMonkey users as well as the SeaMonkey community, who make it possible to have SeaMonkey as a part of my business! And, I guess it's not really bad if someone like me is having commercial interest in addition to personal liking to spread SeaMonkey as well as possible. You can be sure I'm trying to pay back every cent with the time I'm investing in the project. Unfortunately, giving money away to others is not easy to do legally (there's always the problem that it might mean that legally that person is considered as "working for you", which means you need contracts and pay taxes), but for example, I could pay biesi's recent FOSDEM visits from my business as I can state need him for technical advice there. :)
I may still find other possible ways to contribute, but mainly I will contribute my time, as time is money after all ;-)

It's always nice to hear someone's found a way to make a living from open source development, it's really nice though to be one of those people - esp. if you're not working on one of the really big products. As long as that income is flowing, be sure to hear a lot about me in this project. Oh, and don't forget to spread SeaMonkey! :D

Von KaiRo, um 15:46 | Tags: business, history, L10n, Mozilla, SeaMonkey | keine Kommentare | TrackBack: 0

Stumblin' in: My Mozilla career

A few people in the Mozilla community have known the project for many years already, newer "family members" might not have experienced the pre-Firefox days at all, others are just entering or visiting this steadily growing crowd of people as testers or bug reporters - or "just" interested users.
Some of those might read my name as a "SeaMonkey Council member", i.e. one of the five people steering the SeaMonkey project, working on keeping the integrated suite alive (that has its own long history, reaching back to when Netscape still dominated the Web market).

So, how does one grow from a student and web user to one of the SeaMonkey project leaders? For me, it was mostly a matter of stumblin' in - or actually seeing that "something needs to be done" - and trying to help make it happen.

Just for some background, my father entered the computer sales business early on, bought a PC quite early on, back in the 80s (a then quite modern 8086 with 12 MHz, 640K RAM, CGA monochrome display and a 20 MB harddisk) and so I learned working with PCs quite early while going to school (ah, those DOS days... and programming with GWBASIC ;-) ). Following that, we probably were among the first people who had Internet in a private household around here - and, of course, Web and Netscape were almost synonyms in those days.

So, as an always-proud Netscape user, hating how Microsoft used their Monopoly to drive the market leader off the browser market, I started wondering in 1999 if my favorite browser producer is working anything new and stumbled over mozilla.org, trying their Mozilla M5 milestone build (made available for download under something called "the Seamonkey project"). Somehow even that early stage felt promising and cleaner in design (esp. when it came down to website rendering) than Communicator 4 to me, but clearly it was very experimental. My first post to a Mozilla newsgroup already clearly tells what I felt about the Gecko-based product: "I am convinced the final release will be the best existing browser software by far." - along with some bugs I encountered ;-) Following the advice of some Netscape employee, I filed my first bugs in Bugzilla for those issues.

I decided to remember that project and check back later for newer milestones - as a beginner physics/chemistry student, long-time DOS/Windows user and (Visual)Basic developer I didn't feel I could help in any other way than testing that new technology. Starting with M7, I tried to use this product for browsing more and more and after some time I got interested what this XUL technology is that is said to build up Mozilla's user interface. Back then, all chrome files were unpacked plain files in the app directory and I quickly discovered that that was just something like the HTML I knew from creating web pages (I still had to learn what XML really was), being styled with CSS (which I really did know) and with strings in some simple-looking plain text format (not knowing XML, I didn't know those DTD entity definitions either). Intrigued but not yet convinced by all that stuff being simple text files, I decided to try out if they really make up what I'm seeing, replacing some colors in CSS with some Star -Trek-style colors, and replacing a few English strings with German variants - and then I was really impressed: It just did work!
While I decided that Star Trek styling was nice for playing around personally (later my LCARStrek theme based on that), the translated strings could potentially be useful to others, and so I posted a message to n.p.m.l10n in December, telling that I'd like to help with the German localization of Mozilla. As Tao Cheng from Netscape, the L10n head at that time, replied "If you have no objection, I'll put you as the German translation contributor." (note him saying "the" contributor), I realized I had just more or less taken over the responsibility of creating a full localization. I tried to live up to that and on December 31 I managed to release M12 as the first "fully" (as in: as far as possible) localized German Mozilla version.
In late January of 2000, I opened up a website (The SeaMonkey German website still has old news and downloads that I ported to the new site to archive them) and since then, practically every release of the suite has been made available in German language by me. Ah, and in September I got to know some people of our community personally for the first time when we had the first Mozilla Europe Developer Meeting near Frankfurt, Germany (organized by someone by the name of Axel Hecht, BTW).

For a some time, I contributed to the project as the main German localizer, and reported bugs here and there. In April 2002, I got a mozilla.org CVS account, originally for getting German L10n into CVS (it should take years to actually have a working model for locales in CVS and then even a different repository - seaMonkey is even still on the road to that currently). This was some kind of milestone for me personally, as I began to do some small fixes for problems in the L10n area, like some locale switching fixes, followed by the per-release localeVersion updates until I finally automated that. And suddenly I had become a code contributor (still proud it was me who made about:plugins localizable and themeable back then, which is code that can even be seen in Firefox), and I started using that CVS account for those few, mostly minor, code fixes.

In the summer of 2004, after the demise of Netscape in 2003 and the only contributor who had write access to the FTP staging server and the mozilla.org web pages being AWOL, the L10n community realized more than before that a new lead is needed: For one thing, localized builds had to go up onto mozilla.org servers again, and we needed someone to improve communications of localizers with Mozilla Foundation. As I saw someone had to make that happen, I brought forward a proposal for a new Mozilla Localization Project (MLP) staff team and tried to collect people who wanted to help there. When we got such a new team together, those people asked me to take the position as official MLP project lead - and in this I ended up as being the main L10n contact in talks and teleconferences about Firefox 1.0 release planning, even though I didn't localize Firefox myself (a different German localizer was working on that while I continued to do the suite part). The current MoCo L10n lead, Axel Hecht, also did care a lot about L10n issues there - even though he was no active Mozilla localizer himself. When Axel rose into that position, my being the MLP lead got less important, but other challenges were already waiting for me (BTW, despite trying to step down as MLP lead later on, nobody volunteered to take over, so I'm more or less still in this position).

Finally, in early 2005, the future of my beloved Mozilla suite became more and more uncertain and when bz asked MoFo for clarity on that, I also undersigned his open letter to staff and experienced the suite "Big Bang" first hand. When the transition plan laid out a way for the future of the suite as a volunteer project, I once again figured a project leading group is needed, and tried to figure out people willing to help in that team. After extensive discussions, mostly on IRC, Neil, biesi, IanN, CTho and me agreed to form that steering committee, which we later named the "SeaMonkey Council".
Once again, in a repeating pattern, my strong will to make something happen and putting my contribution where my mouth is made me stumble into being a leading contributor in the respective area.

In this role as a SeaMonkey Council member, I'm mainly concentrating on the organizational matters of the project, while the other members are more focused on doing actual development, along with our broader community of SeaMonkey contributors. Next to that, I'm trying to contribute some code myself, still work with the L10n community and, of course, keep the German localization of the suite alive and kicking.

It's been a great ride so far, I'm still eager to get stuff done, and I hope to continue the story of how I got here with some great future success stories of the SeaMonkey project!

Von KaiRo, um 02:02 | Tags: history, L10n, Mozilla, SeaMonkey | keine Kommentare | TrackBack: 1

17. April 2007

suiterunner and "source L10n"

As bug 286110 states, we're working on getting the so-called "source L10n" approach working for SeaMonkey. This means that in the future, we want to be able to build localized SeaMonkey builds directly with localized strings taken from a mozilla.org repository, just with checking out the right l10n/ dir (usually via MOZ_CO_LOCALES) and adding the --enable-ui-locale configure switch.

We're planning to support that on the new, toolkit-based SeaMonkey configuration dubbed "suiterunner", and I have had "my" German suite localization in the tree for testing purposes for quite some time now. As MailNews locale files are in suite/ now and mozldap is as well, I tried building a German suiterunner test build this way recently, and the results look pretty good: A de.jar is placed in the chrome directory, containing almost all needed locale files that previously were in en-US.jar. That latter JAR file is mostly deserted in such a build now. We still need to sort out the few files that are left there though: P3P, for one, will be removed soon (I hope), wallet should get replaced by satchel, so those two are no big issues (and just turn up in the wrong language anyways). Files that lead to XML errors and breakage in the UI because they're not available consistetly in the selected language are the bookmarks UI files, for which I filed bug 377799 now, as well as global-platform/win/nsWindowsHooks.properties and global/typeaheadfind.properties are still there, we should get those out of global and somewhere into suite/, for which I filed bug 377801 due to this round of testing.
The built-in extensions like Reporter, DOM Inspector, ChatZilla and venkman stay untranslated for now, they can be cared about once the main suite works.

The good thing is that apart from those small issues, source L10n is about to start working for the toolkit-based "suiterunner" SeaMonkey builds on trunk.
Finally, an easier solution for localizers gets in sight also for the reborn suite application :)

Von KaiRo, um 21:38 | Tags: L10n, Mozilla, SeaMonkey | keine Kommentare | TrackBack: 1

7. April 2007

A Localizer's Nightmare: Security Backend Error Messages

Today I decided to do some work on the German L10n of nsserrors.properties, which hit the trunk 3 weeks ago and nobody in the German team has dared to localize so far (we have a version in l10n/de trunk that only carries the original English strings).
And there are good reasons why it hasn't been touched for a longer time, as the hardest strings to localize correctly probably fall into three categories: backend messages, technical error messages and security strings. And this files consists of 262 new security backend error messages. Yay! :(
This means that highly technical terms, often from security areas, like "Certificate Request handshake message" get mixed with hard-to-localize phrases like "experience an error" and untranslatable names like "PKCS#11 token" and/or cryptic (pun intended) abbreviations like OCSP,ASN.1,CA,CKL,SSL,MAC-SHA1,MD5, etc.
Even messages that look innocent like "SSL received a record with bad block padding." can be very challenging for localizers. You might not want to translate that as "SSL hat einen Rekord mit schlechter Klotz-Polsterung empfangen." (thanks to Martin for that suggestion ;-) ) or not even someone who actually knows the technology would understand it. Even my current try of "SSL hat einen Eintrag mit falscher Block-Auffüllung erhalten." may not be understood by novices (just like the original) but I hope it will give a clue to most people who read it.
"Unable to digitally sign data required to verify your certificate." is almost a welcome and easy to translate message within a pile of such strings. I hope to find more of those while continuing to dig through that file...

Von KaiRo, um 16:07 | Tags: L10n, Mozilla | 7 Kommentare | TrackBack: 0

1. April 2007

Why I'm eager for L20n

Mozilla 2 is to be started soon, and as you might have read, there are thoughts of creating a new localization infrastructure for that future generation of Mozilla software. Currently this is named L20n, driven by MoCo's L10n lead Axel Hecht, and though it's in a draft stage, I can't await to use this technology.

When Axel talked about L20n at FOSDEM, I was hoping people would tell us how they love it - unfortunately time for the talk was over before he could get to the interesting part - examples. Discussions there in Brussels were pretty interesting though, as I can't remember objections to the need of this or the general approach, only some criticism of the lol file format semantics. Oh, yes, it looks like localizing will be much fun in the future, having L10n info in ".lol" (Localizable Object List) files :)
I actually think that the proposed syntax of those file is good, as it feel familiar to most developers but is different enough from other languages to realize you're not in JS, XML but in a lol file.

The good thing is that L20n is a format that is growing out of knowledge about problems in current L10n approaches, both of the Mozilla approach(es) and the gettext/PO approach. People who have worked with both on a developer and localizer side know they all have their problems. While Mozilla lacks language fallbacks and plural handling, gettext/PO lacks good VCS compatibility and needs long original strings in the source code, while both lack flexible support for declension and other grammatical specialities. L20n is an effort to learn from the strengths and weaknesses of those, and esp. from the problem of their users, to create an L10n toolkit that satisfies developers, localizers and users the same - also across programming language boundaries. Axel has contacted other L10n communities than the Mozilla one to get feedback and, from what I heard, has received positive feedback and wishes for collaboration.

As an active SeaMonkey localizer, I heard about this new approach soon, bing in the Mozilla L10n newsgroup, I was more or less there when it was born (or the ideas for it were gathered) and actively took part in those discussions.
I'm more eager to working with L20n from a developer's perspective than from a localizer's perspective though: While "my" language (German) doesn't differ from English that much that I regularly run into the big problem of current approaches, L20n could simplify the code I write as a developer a lot:

Let's take this "simple" snippet of PHP code and German .po file to print out a number of comments (simplified source of this blog):

blog.php:
if ($postCount < 1) { print(gettext('no comments')); }
elseif ($postCount == 1) { print(sprintf(gettext('%s comment'), $postCount)); }
else { print(sprintf(gettext('%s comments'), $postCount)); }

blog.po:
msgid "no comments"
msgstr "keine Kommentare"

#, php-format
msgid "%s comment"
msgstr "%s Kommentar"

#, php-format
msgid "%s comments"
msgstr "%s Kommentare"

Now let's look at how it might look (in principle, I could be using wrong function names here) with L20n:

blog.php:
print($l20n_context->getValue('comm_cnt', array('num'=>$postCount)));

blog.lol:
<plural0: (n) -> {n == 0 ? 0 : (n == 1 ? 1 : 2 ) }>
<comm_cnt[plural0(num)]: ["keine Kommentare", "${num}i Kommentar", "${num}i Kommentare"]>

Note that I'm not sure that $postCount would be passed as an array like this, but it would probably be similar to that - and I hope I got the "plural0" macro right.
There are multiple good things about that approach: First, the actual code is much shorter and easier to read (even more so if I don't have short strings but long sentences there). Second, there is no "original string" in the source, just an ID ("comm_cnt"), it actually doesn't matter which language I'm doing first, while writing the code, as L20n doesn't care. Third, while writing the code, I could just define the string as <comm_cnt[num]: "${n}i Kommentare"> to make things simple, and I could refine it to better values later (when the code is stable). Fourth, if some localizer comes along and tells me he need 5 different plural forms depending on the numbers, he can just do that in the lol file, I as a developer don't need to know or care. Fifth, the localization file is shorter. Sixth, I as a developer am actually writing a first localization along with the code, which a localizer can use as an example for his work. And there are probably more.
(And yes, I know, gettext probably knows plurals in some way, so those might be a bad example. It's one if the easiest to grasp for a developer who doesn't speak Finnish, Polish or other grammatically more complicated languages though.)

It would be so nice to simplify code and get all those long strings out of the source (which often require horizontal scrolling here) - and that's only speaking as a PHP dev doing two languages that don't need declensions or other specialties. It must be even more compelling for a localizer of some language like that who can finally give his users a linguistically correct user experience.

Von KaiRo, um 00:58 | Tags: L10n, L20n, Mozilla | 6 Kommentare | TrackBack: 0

Feeds: RSS/Atom