<?xml version="1.0" encoding="UTF-8"?>
<!-- name="generator" content="pyblosxom/1.4.1 7/27/2007" -->
<!DOCTYPE rss PUBLIC "-//Netscape Communications//DTD RSS 0.91//EN" "http://my.netscape.com/publish/formats/rss-0.91.dtd">

<rss version="0.91">
<channel>
<title>Блогчетање   </title>
<link>https://danilo.segan.org/blog</link>
<description>Данилово блогче</description>
<language>en</language>
<item>
  <title>Launchpad meet-up in Prague</title>
  <link>https://danilo.segan.org/blog/launchpad/launchpad-meetup-prague</link>
  <description><![CDATA[
<p>
  <a href="http://launchpad.net">Launchpad</a> team is together in Prague,
  and we are meeting tonight at around 19h at <a href="http://www.jamapub.cz/en/">Jama Steakhouse</a> (<a href="http://maps.google.co.uk/maps?f=d&source=s_d&saddr=V+Celnici+7,+111+21+Prague,+Czech+Republic+(Hilton+Prague+Old+Town+Hotel)&daddr=v+jame+7+prague&hl=en&geocode=FWpK_AIdxzXcACHfbMW-AM8Arynv87Q5lZQLRzEWPiPx7l43aA%3BFTkp_AIdeh3cACkHxeGl8pQLRzFUDnl1uAUEXw&mra=pe&mrcr=0&dirflg=w&sll=50.084314,14.428724&sspn=0.015641,0.038581&ie=UTF8&ll=50.084408,14.428225&spn=0.015641,0.038581&t=h&z=15">V Jámě 7</a>).
</p>
<p>
  Anyone interested in meeting up with a bunch of Ubuntu/Launchpad/free
  software people is welcome to join us.  You can probably pick us up from
  the crowd by the t-shirts. :)
</p>

]]></description>
</item>

<item>
  <title>Upstream translations in Ubuntu</title>
  <link>https://danilo.segan.org/blog/launchpad/automatic-translations-sharing</link>
  <description><![CDATA[
<p>
  Last year we introduced a feature we internally called 'message
  sharing': basically a mechanism to directly share translations
  between different releases of a same project or of the same
  distribution.
</p>

<p>
  That was a huge improvement in both usability (IMO, at least: you
  translate a string in one release and it's instantly translated in
  all the others) and allowed us to make Launchpad Translations much
  more scalable (this one is very tangible).  Eg. compared to one full
  week it took us to "open" a new Ubuntu release for translations, it
  took us full 25 minutes to do that for Karmic and 45 minutes for
  Lucid.
</p>

<p>
  However, while 'message sharing' has reduced duplication of efforts
  a lot, it still happens: translators work at the same time upstream
  and in Ubuntu, and might be translating exactly the same strings.
</p>

<p><em>What can we do to solve that?</em></p>

<h3>Importing latest upstream translations</h3>

<p>
  Well, first off, Launchpad doesn't even know about latest upstream
  translations.  What it gets is upstream translations as they were
  packaged in a tarball that is the base of an Ubuntu package.
</p>

<p>
  However, that might mean very old translations.  For instance,
  perhaps there was no Ubuntu package re-upload for 3 months.
  Translations upstream usually get committed directly to a VCS.
  They'll flow into Ubuntu only when they get packaged into tarballs,
  and those tarballs become basis for a new package in Ubuntu.
</p>

<center>
  <img src="http://danilo.segan.org/slike/blog/translations-flow-today.png"
  /><br />
  <em>Today, maintainers decide when to release translations to the
  world, and packagers decide what upstream releases go to Ubuntu
  users</em>
</center>

<p>
  This means that there are two high bars for translations to flow
  over before they can get into Ubuntu:
</p>

<ul>
  <li>
    Upstream maintainers need to release a tarball with updated
    translations
  </li>
  <li>
    Ubuntu packagers need to prepare updated packages from these
    tarballs, and sometimes they can't even do that (without merging
    from VCS directly, because upstream might not be releasing
    'translations updates' tarballs)
  </li>
</ul>

<p><em>How about we eliminate these blockers with Launchpad?</em></p>

<p>
  So, we want Launchpad to directly import upstream translations from
  their VCS of choice.  Luckily, we can depend on our
  amazing <a href="https://launchpad.net/launchpad-code">Launchpad
  Code</a> team and <a href="http://bazaar-vcs.org">Bazaar
  community</a> to provide us with a bzr branch no matter what the
  upstream VCS of choice is.  And we already
  have <a href="http://blog.launchpad.net/translations/screencast-importing-translation-templates-from-a-bazaar-branch">imports
  from bzr branches</a>, so we are all set, right?
</p>

<p>
  Well, not exactly.  Projects don't like to keep their generated
  files in their repos.  And for upstream projects, we can't really
  ask them to (since we know it's a bad idea anyway).  So, we need to
  be able to generate templates (POT files) on the fly.
</p>

<p>
  However, that is a very touchy job which depends on the upstream.
  I.e. it's not the same thing if you are generating a template for
  GNOME, KDE or regular GNU (gettext-using) project.  And many a
  script that needs to be run to do this could be very risky: intltool
  itself has a number of obvious implementation details such that any
  upstream committer would be able to take over the machine it was run
  on.  So, this has to happen in a safe, sandboxed environment.
</p>

<p>
  Not surprisingly, Launchpad already has this
  with <a href="https://launchpad.net/soyuz">Soyuz</a>.   We just need
  to <em>slightly</em> modify it so we can run template generation
  jobs on it.
</p>

<p>
  We've split this into two separate steps: developing a library that
  allows us to generate templates for a particular source code layout
  (module named "pottery" inside the LP tree, currently only
  supporting intltool layouts), and working on the infrastructure to
  run these on the existing Launchpad build farm.
</p>


<center>
  <img src="http://danilo.segan.org/slike/blog/translations-flow-phase1.png"
  /><br />
  <em>After translations are committed to upstream VCS, we should
  import them into Launchpad asap</em>
</center>

<p>
  We are in the process of doing extensive QA on this code, and we
  expect to roll it out next week.  But, this is just a step of our
  bigger vision.
</p>

<p><small>
    As a side-note, this feature will also be useful for
    intltool-based projects hosting their code and translations in
    Launchpad: they won't have to keep POT files committed either.
</small></p>

<h3>In Ubuntu or in Launchpad</h3>

<p>
  We could have gone one route and simply imported these upstream
  translations directly into Ubuntu.  It'd be a big win, but it
  wouldn't work very well for those upstreams which are already in
  Launchpad.  And, since we are looking a bit further into the future,
  there are other drawbacks to that approach as well (like being able
  to send translations back upstream).
</p>

<p>
  So, we decided that it's best to import them directly into Launchpad
  projects, keep their upstream templates there for the future, but
  keep those translations read-only.
</p>

<p>
  Now, Launchpad internal database model already has a sort of
  definition of "upstream", though it was never exactly so (which is
  why we always struggled with the name: over time, the term went
  from "published" to "imported", and now finally to "upstream").
</p>

<p>
  Through many discussions
  <a href="https://dev.launchpad.net/Translations/Specs/UpstreamImportIntoUbuntu"
     >on different approaches</a>, we decided to go
  with the
  <a href="https://dev.launchpad.net/Translations/Specs/UpstreamImportIntoUbuntu/FixingIsImported"
     >fix is_imported flag</a> one.
</p>

<p>
  This will enable us to share translations directly between upstreams
  in LP (and because of the feature that we are QAing right now, we'll
  have latest upstream translations in there already, no matter where
  project is hosted) and Ubuntu source packages.
</p>

<p>
  The way we are going about this is very similar to message sharing
  we have today.  It's just that now different privileges come into
  action as well, making it all suitably more complex to handle.
</p>

<p>
  This is something that we
  are <a href="https://blueprints.launchpad.net/rosetta/+spec/import-upstream-translations-into-ubuntu">actively
  working on</a>, and something that we hope to deliver in May.
</p>

<center>
  <img src="http://danilo.segan.org/slike/blog/translations-flow-phase2.png"
  /><br />
  <em>Pushing latest imported translations into regular Ubuntu
  language pack updates is the final stage</em>
</center>


<p>
  Before we can even consider calling this done, we'll have to do a
  lot of testing.  And we'll need help from community to get
  everything set-up.  First thing to do is to go around Launchpad and
  make sure that for every source package with translations in Ubuntu
  there is a linked upstream project, and that upstream project has a
  trunk branch that syncs with the latest upstream source code.
</p>

<p>
  Next, we'll really need some serious QA to happen.  If you are no
  stranger to Python code, checking
  out <a href="https://dev.launchpad.net/Getting">Launchpad tree</a>
  and trying out pottery on all the intltool branches you can think of
  would be very useful input.
</p>

<p>
  Or, if there is your favourite i18n layout that you'd like us to
  support, extending pottery and our auto-approver to deal with it
  would be a very welcome addition.
</p>

<p>
  Even going ahead and splitting pottery into a separate branch and
  module would be nice, because it would make it more re-usable (for
  instance, it could then be used in GNOME's damned-lies) and easier
  to extend for people not directly interested in Launchpad.
</p>

<h3>And... How about giving back?</h3>

<p>
  Ubuntu will get latest translations from upstreams then, which is
  all pretty neat.  But, how about contributing the translation fixes
  back as well?
</p>

<p>
  That is a natural next step.  Having the latest templates and
  translations in Launchpad will allow us to generate very precise
  diffs between Ubuntu and upstream translations (i.e. we'll know what
  string is Ubuntu-specific, and we'll know which translations are
  newer).  Then, we'll have to figure out how to submit those
  upstream?
</p>

<p>
  Should that happen automatically or should it be user-initiated?
  How will Launchpad talk to each of the upsterams?  Launchpad should
  talk to every upstream as they prefer it, and that may mean
  per-project, per-translation-team policies.  But, I'll come
  back to this topic once we have the foundation done with getting
  latest upstream translations into Ubuntu.
</p>

]]></description>
</item>

<item>
  <title>Launchpad in Google Summer Of Code</title>
  <link>https://danilo.segan.org/blog/launchpad/launchpad-in-google-soc</link>
  <description><![CDATA[
<p>
  This is the first time you'll be able to work on Launchpad as part
  of <a href="http://code.google.com/soc/">Google SoC</a>:
  last year, it has been released under AGPL, thus making 
  it a free software project.  It is done as part of Ubuntu SoC,
  though, so your project has to benefit Ubuntu.
</p>

<p>
  I invite all students interested in getting some serious experience
  with developing a large web application to apply with their project ideas
  for <a href="https://launchpad.net">Launchpad</a>, as long as they
  relate to Ubuntu as well.
  See <a href="https://help.launchpad.net">Launchpad
  help</a> or <a href="https://dev.launchpad.net/">development
  wiki</a> to get a feeling of what is Launchpad about.
</p>

<p>
  I'll be happy to mentor anyone interested in doing some work on
  Launchpad
  Translations.  <a href="http://davidplanella.wordpress.com/">David</a>
  has already posted
  a <a href="http://davidplanella.wordpress.com/2010/03/24/launchpad-translations-projects-in-google-summer-of-code-2010/"
       >few ideas to consider</a> that will benefit Ubuntu, but if you
  have your own, don't hesitate
  but <a href="https://wiki.ubuntu.com/GoogleSoC2010/Students">apply</a>!
</p>

<p>
  <strong>Deadline to apply is April 9th, so hurry up!</strong>
</p>

]]></description>
</item>

<item>
  <title>What benefits are there in GNOME using Launchpad?</title>
  <link>https://danilo.segan.org/blog/launchpad/launchpad-for-gnome</link>
  <description><![CDATA[

<p><strong>Warning:</strong> This is not a plea to move GNOME
  translations to Launchpad.  I am just publishing an analysis I
  did about how suitable Launchpad is for translating a big
  project <em>like</em> GNOME.  I am using GNOME as an example because
  that's a big project I am most familiar with.</p>

<p>If GNOME was to switch translations to Launchpad today, this is
  what would happen: I am listing all the benefits, status-quos
  and missing features compared to what GNOME does today.</p>

<h3>Benefits</h3>

<dl>
  <dt>Easy to use web interface</dd>
  <dd>Some would debate this, but Launchpad web interface is easy to start
    with, and good for maintaining translations as well: global
    suggestions help maintain consistency and speed up the work,
    review mechanism allows someone to ask for a peer review, etc.</dd>

  <dt>Translations sharing between different releases</dt>
  <dd>No need to put in extra effort to do identical translations for
    both GNOME 2.28 and latest trunk when all the GNOME modules branch
    for the 2.28 release;  also, translation fixes can automatically
    go to 2.26, 2.24,... for any distributor's benefit who wants to
    keep using those older versions</dd>

  <dt>Automatic commits of merged translations</dt>
  <dd>Launchpad can provide automatic export of all translations
    merged with latest translation template as a bazaar branch (this
    can easily be used to automate commits to a git branch as
    well); there is one big caveat here, though (see below)</dd>

  <dt>Maturity</dt>
  <dd>Not saying that GNOME's damned-lies are immature, but Launchpad is a
    complex system that is capable of delivering translations for
    entire Ubuntu which has over 300k translatable messages.  It also
    does many things like taking care of conflicts between multiple
    translators working at the same time, etc.
  </dd>
</dl>

<h3>Stays the same</h3>

<dl>
  <dt>Ability to work on PO files off-line</dt>
  <dd>One can easily download a PO file from Launchpad, work on it
    using their favourite tools like Gtranslator, KBabel or po-mode, and
    upload it back when they are done</dd>

  <dt>Ability to control who can do the translation for each
    language</dt>
  <dd>Project in Launchpad can decide to let only translation team
    members for a particular language review translation suggestions
    (which anybody can submit); if there's no team for a language,
    project can decide either to lock those translations out, or to
    let anybody submit them;  if needed, even translation suggestions
    can be limited to team members only</dd>

  <dt>Ability to directly submit translations to git repos without
    going through the web interface</dt>
  <dd>Launchpad will automatically pick these up as well, and import
    them pretty quickly, and the chance of conflicting translations
    will be minimal; even if conflicts happen, Launchpad will handle
    them gracefully but letting the last submitter review all the
    conflicts</dd>

  <dt>Communication</dt>
  <dd>Communication between translators still stays outside actual
    translations — this is not a good thing, and would be great to add
    to Launchpad; still, external mailing lists and forums is what
    everyone is using anyway, and Launchpad can even host mailing
    lists.</dd>
</dl>

<h3>Would suffer</h3>

<dl>
  <dt>Statistics and regenerating POT files</dt>
  <dd>Today, Launchpad can't regenerate POT files for GNOME modules,
  meaning that we can't import the latest POT files automatically —
  this is what Damned Lies is doing for GNOME today (however, without
  this, it'd be worthless to try to do automated commits), and
  up-to-date statistics are impossible without it</dd>

  <dt>Workflow management</dt>
  <dd>Launchpad has a slightly different concept of workflow
  management compared to damned-lies, and it's missing some core
  features like PO file assignment, and PO file submission for review
  (while it has even better review capabilities when translations are
  submitted through the web interface, there's nothing to allow
  submission of PO files for review: they are either rejected or
  accepted)</dd>

  <dt>GNOME specifics</dt>
  <dd>Damned Lies is heavily geared toward GNOME and thus can do
    things for GNOME that no other platform can.  For instance, it's
    able to track string freezes for GNOME and email gnome-i18n about
    any problems.  Or, report about intltool setup problems.</dd>

  <dt>Complete control</dt>
  <dd>Even though software behind
    <a href="https://launchpad.net">Launchpad.net</a>
    is free software, Canonical is still the major driver behind it.
    However, GNOME community would be able to implement any
    features they need (like the above workflow management or string
    freeze support) without anyone complaining :)
  </dd>
</dl>

<p>
  After this analysis, I feel reasonably confident that Launchpad is
  already pretty good for large projects wanting to manage their
  translations.   Yes, there's always room for improvement, but
  there's already some workflow management, and one can live without
  built-in string freeze support.
</p>

<p>
  And, since it's already "decent",
  the <a href="http://blog.launchpad.net/general/launchpad-the-next-six-months">new
  focus</a> for Launchpad is going to be slightly different from what
  it was in the past few years.  That means that we will not
  concentrate on improving Launchpad for projects hosting their
  translations in Launchpad, but instead on having a two way
  communication between Launchpad and upstreams (especially upstreams
  living elsewhere).
</p>

<p>
  As such, we will definitely not work on improving the Launchpad to
  provide string freeze abilities for a project, or to improve workflow
  management.  We will, however, work on regenerating POT files
  because that's implicitely related.  But more on that in the next
  few days.
</p>

]]></description>
</item>

<item>
  <title>Launchpad is free software</title>
  <link>https://danilo.segan.org/blog/launchpad/launchpad-is-free</link>
  <description><![CDATA[

<p>For anyone living under a rock: <a
href="https://launchpad.net">Launchpad.net</a> software has been
published under AGPL 3.0 license on
<a href="http://blog.launchpad.net/general/launchpad-is-now-open-source">July 21st</a>.</p>

<p>But, we didn't just push out the code out to check a box on our
'good free software ecosystem participant' list.  We want the
community of Launchpad.net users to help us improve it and take
Launchpad.net even further as the best free software development
platform.</p>

<p>As we are learning to be a good community project, do try us out
and go for your favourite bug or feature: <a
href="https://dev.launchpad.net/">get involved!</a></p>

]]></description>
</item>

<item>
  <title>Launchpad Translations: Online Session</title>
  <link>https://danilo.segan.org/blog/launchpad/launchpad-translations-session</link>
  <description><![CDATA[
<p>As part of <a href="https://wiki.ubuntu.com/UbuntuOpenWeek">Ubuntu
Open Week</a>, there are also a couple of <a
href="https://launchpad.net">Launchpad</a> sessions, including one on
Launchpad Translations by <a href="http://carlos.pemas.net">Carlos</a>
and myself today.</p>

<p>To learn how you can benefit from <a
href="https://translations.launchpad.net">Launchpad Translations</a>
if you are maintainer, developer or translator, join in
#ubuntu-classroom on FreeNode today (April 26th) at 18:00 UTC (20:00h
for me :).</p>


<p><small>PS. There is one question I probably won't be answering, and that's
why Launchpad is not free software: I don't know more than <a
href="https://launchpad.net/faq">FAQ</a> can tell you, and I hope it will
become free software in the (again, I hope near) future, or I wouldn't
be recommending it for your free software development either.</small></p>

]]></description>
</item>

</channel>
</rss>
