[sugar] [Localization] Multiple branches and translation of strings - seeking suggestions for best practices

Sayamindu Dasgupta sayamindu at gmail.com
Mon Sep 22 17:06:53 EDT 2008


On Mon, Sep 22, 2008 at 11:26 PM, Arjun Sarwal <arjun at laptop.org> wrote:
> Hi,
>
> For the Activity that I maintain,  I maintain two branches - devel and
> stable. At the time of a release contents of devel=stable.
>
> I am realizing that I am not implementing the best practice.
>
> As time passes stable continues to remain the same while I do
> development in devel. Thus devel becomes very divergent from stable.
> This also causes a large amount of strings to remain untranslated
> because stable is being translated and perhaps it doesnt make sense
> (?) to translate devel until a release into stable is made.
>
> So I want to ask,
>
> 1. Is there any use of maintaining such branches  ? Or should I have
> just one development branch and 'tag' it at a release ?
>
> 2. If I do maintain such branches, should one undergo a cycle of
> localization(Translation) after each release of code from devel branch
> is made ?
>

Arjun,
I notice from your repository that you maintain two separate
directories as your branch. Normally a branch is created with the
command git branch. For the specifics, I suggest
http://blogs.gnome.org/shaunm/2007/09/17/git-for-gnome/ which covers
most of the basics.

The usuual workflow followed by activities is attained by having two
or more branches. The fun stuff (which is the cutting edge
development)  happens in the master branch. However, as the release
time comes close (eg: for 8.2, around the middle of August), in order
to stabilize stuff, you create a branch and continue the
experimentation in master, and try to stabilize the stuff in the new
branch you have created. This branch may also become string frozen,
allowing translators to attain complete coverage in the time for
release.

For example, you'll notice that most activities have now a branch
called sucrose-0.82. That branch is the current stable branch
targetting 8.2, while the experimentation goes on in master. Releases
for 8.2 is made from the sucrose-0.82 branch. As soon as the process
for 9.1 begins, the releases will be made from master, so that people
can play with the experimental code and find bugs. (however, if you
think carefully, to implement this properly, we really need to have a
more elaborate versioning scheme for activities - otherwise there is
no way of figuring out whether a bundle is experimental code or not
from looking at the version number)

When you branch, you should announce it in the sugar as well as in the
localization list. As soon as you branch, a new project will be
created in Pootle (this is done by me right now) to handle
translations for your branch. For example, in Pootle, the sucrose-0.82
branch stuff is being translated through the projects Fructose-82 and
Sucrose-82.


Some other stuff which you might find useful:
----------------------------------------------------
When you make a release, you should normally tag your code. This will
serve as milestones in your repository history, and in case any
confusion arises after the packaging, you can always ask git to fetch
the files for a particular tag. We normally use a tagging scheme like
v12, v13, v14, v15, etc

To get an understanding of how all this works, I would also highly
suggest that you try out a tool called giggle (or gitk), which will
show you all the branching and tagging in a nice graphical manner,
which should make it even more easier for you to get an idea of what
is going on.

Hope that helped (and I didn't confuse you ;-). Feel free to ask more questions.

Cheers,
Sayamindu

-- 
Sayamindu Dasgupta
[http://sayamindu.randomink.org/ramblings]


More information about the Sugar mailing list