Index ¦ Archives ¦ RSS > Tag: en

Free Software Conference 2012

Estimated read time: 1 minutes

The Free Software Conference 2012 — orginized by FSF.hu — was held today @ Budapest. I gave a talk about hacking on new Writer features (slides).

We (with Andras) also ran the LibreOffice booth, and in idle cycles I also had time to kill this annoying bug. This year speakers got a t-shirt and a fine lunch, thanks for the organizers! :)


LibreOffice Hackfest in Munich, 2012

Estimated read time: 2 minutes

During the weekend I was in Munich to visit our second LibreOffice hackfest this year. The archivements are detailed here. Here are a few interestings details I learned during this event:

  • Laszlo explained on the train to Munich that single line spacing is 15% of the font size, by definition. That finally explains why it is that the height of a 12pt single-line paragraph in Writer is not 240 but 276 twips.

  • Finally Michael motivated (and also helped!) me to improve the copy&paste in the new RTF filter, so it seems that removing the old filter completely is near.

  • The ability to sign each other’s gpg key was a great idea. I didn’t know too much about this topic, so I read up on this here. (Additionally, the gpg-key2ps command from signing-party — yes, there is such a package! —  is useful.)

  • We set up a nice icecream farm from the laptops, one more aspect that boosted our productivity.

Speaking about icecream — there were two reasons why I didn’t really use it:

  • it required re-configuring your build tree (--enable-icecream)

  • it required shutting down your firewall

It turns out none of this is really needed, so let me share the way to avoid these problems:

  • look into the wiki, you only need to open a few ports, even broadcasting/auto-discovery works with a started firewall

  • use CCACHE_PREFIX="icecc" make build-nocheck PARALLELISM=30 to enable icecream for a single make run

Additionally, if you run openSUSE 12.2, by default the daemon reports that the box can’t compile x86_64 binaries (probably it hasn’t been updated to deal with the 3.0 kernel or something), a quick workaround is to install Lubos' updated package:

zypper -p http://download.opensuse.org/repositories/home:/llunak:/clang/openSUSE_12.2/ in icecream-0.9.7-64.1s.x86_64

Thanks for the organizers, once again this hackfest turned out to be really useful! :)

As usual, some pictures are available.


LibreOffice OOXML improvements in Writer

Estimated read time: 2 minutes

It’s possible you noticed that in each LibreOffice release notes, we have a line saying something like "improved DOCX support", but is rarely explained in detail. I’m posting here a few screenshots to correct this. The first series is a list of import fixes which are already available in our shipping 3.6 release. In each case I provide a test document, and a screenshot how it looked like with LibreOffice 3.3 and how it looks like with LibreOffice 3.6 today. Click on the images to get a larger image:

  • document with a checked checkbox (test doc):

  • document with contextual spacing enabled for the numbering (test doc):

  • document with a field that has a custom font size (test doc):

  • document with a SmartArt inside (test doc):

  • document with lots of VML shapes (test doc):

  • document produced by Microsoft Office 2010 (test doc, thanks Fridrich!):

Now let’s also have a look at some OOXML features which will be imported correctly in our upcoming 4.0 release:

  • document with commented text ranges (test doc):

  • document with a floating table (test doc):

  • document with ink annotations (test doc, thanks Eilidh!):

  • document with an OLE object inside a rectangle (test doc):

  • document with an inline image with custom margins (test doc):

If you want to try these out yourself, get a daily build and play with it! :) If something goes wrong, report it to us in the Bugzilla, so we can try fix it before 4.0 is released. And remember, there are lots more improvements coming in LibreOffice 4.0, stay tuned!


LibreOffice RTF import Drawing Objects improvements

Estimated read time: 1 minutes

It all started with this bugreport about a year ago. RTF has two different markups to describe shapes. The old one (used till Word 6.0) is called Drawing Objects, the new one talks about Shapes. The first picture shows the "support" for this syntax in LibreOffice 3.4, and the situation did not change with my RTF import rework, as I wasn’t aware of any document still using this old syntax. So when I got this bugreport, I knew it’ll take some time to produce the correct layout, but now during the LibreOffice conference I spent quite some time on this, and at the end even the Hebrew text is imported correctly. ;-)

Thanks to Lior who politely nagged me from time to time, this is now available on master (see the second picture), which will become LibreOffice 4.0.


LibreOffice / openSUSE Conference 2012 in Berlin / Prague

Estimated read time: 1 minutes

I spent the last two weeks on two conferences:

  • LibreOffice Conference in Berlin, where I gave a talk

  • openSUSE conference in Prague, where I just attended.

In general, thanks for the organizers for these fantastic events!

A few fun facts I discovered during the conference:

  • Armin is referred in the source tree as AW due to… well, it’s easy to find out once you heard about OD’s ORW reincarnation. :-)

  • solver stands for "solar version", it does not solve anything (read Michael Stahl’s talk for details)

  • I just discovered this presentation of Thorsten, slide 15 mentions a bug on x86, which is still the case on Android, 6 years later.. (even mentioned in Tor’s talk)

  • "Java? I hope that language dies" (Jan Engelhardt, openSUSE Sparc guy)

  • "Browser: we’re there; Office: with LibreOffice — even if it’s not perfect, we’re getting there. Groupware: we’re weak here" (Georg Greve, Kolab guy)

  • Don’t try to change EUR to CZK in the Prague main station, they have ridiculously bad rates

A few pictures here.


LibreOffice Writer now supports first page header/footer

Estimated read time: 1 minutes

When you want to have pages with different properties in Writer, you use page styles. If you want to do something similar in Word, you have to use sections. One of the benefits of page styles is that you can use them multiple times, and — as usual with styles — whenever you change your mind, you can edit just the style, and all its uses will be updated consistently. There is, however, one feature that Word sections have and we lacked so far: sections can have different headers and footers on first, left and right pages. In Writer, you had to use two different page styles if you wanted to achieve the same: typically named "First page", then a "Default". This was because Writer could differentiate only between right and left pages, not first ones.

In LibreOffice 3.7, there will be a new checkbox to "unshare" the header and footer of the first page with right/left pages:

Right now, only ODF filters are updated to open / save this feature (as suggested by this old proposal) — in later versions it’s planned to update the DOCX, DOC and RTF filters as well, removing quite some code from import filters working around this limitation of Writer core.


Frugalware history

Estimated read time: 8 minutes

https://lh5.googleusercontent.com/-72B3Mo4hOQs/UeegcVH4YZI/AAAAAAAADNU/IwX2_lLQt5k/s128/logo-new-big.png

Given that Frugalware was founded by me, and recently James recently took over the project leadership, I think it makes sense to look back and summarize the past 6 years.

The beginning

It all started with this announcement about 6 years ago. It was a one-man show before, there was a manually written ChangeLog but even then there were already quite a few packages, so don’t ask me when I started hacking on this. Yes, normally there would be a first commit in git, but remember this was before git existed, and I hated centralized CVS so much that we didn’t use anything.

Looking back, it was all quite lame. :-) I used a mail address called "mamajom" (English translation could be "momonkey"), tied to an ISP, with a lengthy signature at the end of every mail I sent and was using my IRC nick instead of my real one everywhere… OTOH, I made some decisions I’m happy about even today. The first four developers (Ádám Zlehovszky, Krisztián Vasas, Zsolt Szalai and me) were all Hungarian and despite of this, I forced every code, test and documentation to be in English, to possibly turn the project into an international one in the future. And that proved to very, very useful.

It was between 0.1 and 0.2 that we (Krisztián, Zsolt and me) showed up in a Hungarian TV (video record) explaining Frugalware. This is something never happened later for some reason.

The way we found a free hosting at a university I never attended may be also interesting. In the grammar school, our IT teacher found my Linux distribution idea interesting enough to support, and his friend was a teacher at the Eötvös Loránd University, which is at the same Budapest city where I live. So, with my friend Botond Balázs (who later was my witness at our wedding) we bought an ultra-slow old PC (some Pentium 1 with a single HDD) and we were extremely happy, as the uni offered to host it for free. I remember it ran some Slackware version, as Frugalware didn’t support i586… ;-)

Early days

Then some more developers joined and we started to package all the usual free software which is available in other distributions but I personally didn’t use. Think of GNOME, Xfce, OpenOffice.org and so on.

Of course we were still lame, the announcements still were not spellchecked by someone native and knowledgeable enough, ending up in words like "splitted" or "optimalization". However, we started to use an SCM (Darcs, which was horribly slow, but at least not the centralized CVS crap). Another developer I should mention was Bence Nagy, he came up with the idea of how we should avoid duplication in FrugalBuilds, leading to the various package templates under source/include/ in the source tree.

Then we went multiarch, Krisztián Hamar contributed the x86_64 port to the 0.3 release. At the same time, I invented syncpkg, which avoided having to build the same package on multiple architectures manually.

We also got Gábor Lőcsei (later we met IRL and completed several bike marathons together, resulting in a great friendship) who helped users in general on IRC, but more importantly, for some time he did quite some bug triaging, leading to a much better bugzilla (actually it was running Flyspray at that time) state.

The constant questions of László Csécsy (who nowadays mostly hacks Drupal core and its modules) generated more and more improving documentation. We first started with a LaTeX documentation, then later turned it to an asciidoc one, in the hope of attracting more non-math contributors. ;-)

Then we started to have some beautiful artwork, Viktor Gondor contributed some really cool wallpapers.

Finally, I think the last two Hungarian guys who spent a hell of a time on the project was András Vöröskői (we still link his getting started HOWTO for new contributors) and János Kovács. I remember for a long time I used the home-hosted server of János when we didn’t have a fast dedicated i686 build server and my desktop was still 32bit.

Going international

Then things started to happen fast. Developers outside Hungary showed up: Gabriel Craciunescu from Germany and Michel Hermier from France worked a lot on KDE, Gabriel also hacked a lot of the core OS, like kernel, glibc, etc.

Priyank Gosalia from India started to work on GTK tools like a package manager frontend. David Kimpe contributed a PPC port years before I got my iBook (which I used as my primary box for a few years).

And needless to say, we still made mistakes. We thought that the development of the original Pacman package manager slowed down, its rewrite (providing a separate library and a console frontend, instead of one monolithic binary) seemed to never complete, and given that we were not Archlinux developers, we never got access to its CVS. We started to use that library API in the installer, testcases, GUI tools, while changing the API for them wasn’t an issue, since officially it was still unreleased. All this frustration (and underestimating the cost of maintaining a fork) resulted in our Pacman-G2 project. First it appeared to be shiny, but once Krisztián Hamar left Frugalware, we constantly lacked manpower and today the consensus is that with git, maintaining a patchset over pacman.git would be far better, just nobody did the work of merging the two projects. Pacman-G2 is in maintenance mode today, and it still well serves its purpose, but it didn’t see any new major feature in years.

We also saw a rewrite of the installer. The original one was written in bash, then the second was written in C, using libdialog. And currently James works on a third one, hopefully fixing lots of instability, resulting from the design errors of the current one. ;-)

More and more developers

And then somehow more and more developers came. Gourdin Gaetan (bouleetbil) and Sébastien Vincent (Baste) worked a lot on the GNOME support, James Buren took over the base system from me. Paolo Cretaro (Melko) does KDE bumps nowadays and Marius Cirsta (mcirsta) did heroic work of including OpenJDK 7 into Frugalware.

Abdelmoumene Hamza (Slown) is a guy who volunteered to do a log of boring work. When you can install a random Perl on Python module from a package, chances that it was packaged by Slown are high. ;-)

Regarding infrastructure, Benjamin Nolmans (Xarkam) stepped up, and finally converted the data from our Flyspray instance to the more mainstream and maintained Trac format. Regarding architectures Boris Albar (Elentir) contributed an ARM port. Our press noise was generated by Russell Dickenson (phayz) for a long time: he wrote newsletters regularly, and these days he works as a documentation writer for Red Hat.

For a long time, no more Hungarians joined the project. Then Bagdán Róbert (kikadf) came, and even if he’s rarely present on IRC, he still contributes from time to time, and these small, but valuable contributions are what keep Frugalware alive. :-)

Regarding other big upgrades, Daniel Exner (dex) was the guy who stepped up and finally packaged KDE4 for Frugalware. All KDE4 users meeting him should buy a beer for him. ;-) Anthony Jorion (pingax) joined in 2010, and since then he does XFCE updates.

Finally, I should not forget about Daniel Eledut (Devil505), who probably helped me the most with my "the rest" task: he really helped out in various areas, and he was a major Frugalware contributor for a long time.

The end of my leadership

Contributing to other projects is something I did regularly, since every time I got a bugreport for a package, first I created a patch to fix the problem (in case it could not be worked around in the buildscript), and then of course tried to upstream it, knowing the maintenance cost of non-upstreamed patches. Still, these were minor and my main project was Frugalware for years.

The bigger contributions came when I started to complete Google Summer of Code projects, first SWIG, then git, finally OpenOffice.org — which turned into LibreOffice. The motivation is easy: these were still Free Software hacking, but given that they are not bash hacking (like most packaging work for Frugalware), more interesting problem had to be solved, GSoC also provided nice payments, and needless to say: was useful to many people not using Frugalware.

The idea of passing over my leadership to someone else first came when I looked back, and I saw that I spend more time on LibreOffice than on Frugalware, even after the paid GSoC ended (later resulting in joining SUSE to work on LibreOffice fulltime). My focus somehow just shifted from hacking a distribution to hacking something that is directly useful for average users as well. It’s not worse or better, it’s just different, and after lots of years, I wanted to do something different.

To sum up, I did not reach my expectations as a project leader and I waited for a candidate I could teach and finally who could become as good as I was in earlier years, or hopefully even better. And then James came, who first took over the base system, and we agreed that after 1.7, he’ll do releases. So it was not unexpected, but still I was a bit surprised when I saw his role-changing commit. But needless to say, when thinking a bit more, it was completely logical, all I really do these days is fixing things left and right regarding my arm port needs, and maintaining the LibreOffice package.

Summary

The idea of writing this post is not mine. However, when I thought about how many individuals helped this project so far, I realized I really need to create a summary, thanking their work. Reading the above, I hope that in the past years my leadership to Frugalware were useful and I realize that these days I have to step back, given a better leader appeared. I honestly wish the project to see at least as many releases as we already have, now that fresh energy leads it. :-)

I tried to point out all our heroes during the last years, but it’s possible I forgot someone. If you think you’re missing from this post, please leave a comment. Thanks.


LibreOffice Writer can now attach comments to text ranges

Estimated read time: 1 minutes

More than 10 years ago, a bug was opened in the OpenOffice.org bugzilla to support this feature. Later this got imported to LibreOffice’s bugtracker. Now that LibreOffice 3.6 is out, time to talk more about what features will show up in 3.7, and this will be one of them:

Now that it’s there, let’s have a look at the details:

  • ODF 1.2 already supports commenting text ranges, but LibreOffice support was missing.

  • Word already supported it as well, and now LibreOffice RTF/DOCX import/export filters are updated to take care of the new feature.

  • If I was already messing with comments, I also implemented roundtrip of comment author initials to ODF (see proposal), so now if you open a DOCX/RTF file in LibreOffice, save it as ODF, and later save it back to DOCX/RTF, this information won’t be lost.

Finally, one known limitation is that the text range currently can’t include multiple paragraphs — something to improve later if necessary.


LibreOffice can now import/export native RTF math expressions in Writer

Estimated read time: 1 minutes

You may remember that LibreOffice 3.5 learned to import RTF OLE objects (including math expressions) in Writer. In LibreOffice 3.7, the same is now true for math expressions expressed using native RTF math markup:

If you are interested in the details, then the nice thing about this implementation is that:

  • The importer internally turns RTF markup to OOXML tokens, and that does the hard job.

  • The non-XML-specific part of the existing OOXML export was abstracted to a base class, and that’s the driver of the RTF exporter.

So if you like this new feature, don’t forget to thank Luboš Luňák, who is the author of the OOXML math import/export. :-) In case you way to play with this feature, test documents are available.


GRUB2 vs. RAID1, cfdisk and serial console

Estimated read time: 2 minutes

Since the Frugalware 1.7 release is near, and it uses GRUB2 by default, I created a virtual machine, that is similar to the one we use under genesis.frugalware.org, which hosts this blog as well.

The relevant details:

  • it has two RAID1 arrays with ext3:

$ mount|grep /md
/dev/md126 on / type ext3 (rw,relatime,errors=continue,barrier=1,data=ordered)
/dev/md127 on /home/ftp/pub type ext3 (rw,relatime,errors=continue,barrier=1,data=ordered)
  • the partition tables are created by cfdisk:

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1              63  1465144064   732572001   fd  Linux raid autodetect
  • the machine has a serial console configured:

# cat /proc/cmdline
root=/dev/disk/by-uuid/7e41c95d-cd73-4043-b0ba-4797af6ddeff ro vga=normal nomodeset console=ttyS1,115200

Now the question is how does this config deal with the GRUB2 upgrade. First, don’t miss the official upgrade howto, it covers most cases. What I want to detail here is how did I avoid starting from scratch and creating a proper partition table using fdisk.

Here are the steps I needed:

  • Backup. Yes, I did screw up for the first time, so it’s really needed.

  • Resize parts of the / RAID1 (/dev/sda1 and /dev/sdb1) with gparted livecd (resizing ext3 from cmdline parted didn’t work for me).

  • mdadm re-creation as described in the upgrade howto, from fw install cd, so you’ll have the required 1.0 metadata.

  • Reinstall GRUB1 to sda and sdb, since the physical location of GRUB1’s stage* changed.

  • Boot back to 1.6, run pacman-g2 -Syu, and grub-install — again, see the upgrade howto for details.

  • Now given that serial console needs a custom GRUB config and kernel parameters, you need to modify GRUB2’s /etc/default/grub. Here is my diff:

    /etc/default# diff -u grub.orig grub
    --- grub.orig   2012-07-19 01:57:20.000000000 +0200
    +++ grub        2012-07-29 14:45:50.000000000 +0200
    @@ -1,11 +1,12 @@
     GRUB_DEFAULT=0
     GRUB_TIMEOUT=5
     GRUB_DISTRIBUTOR="Frugalware 1.6"
    -GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
    +GRUB_CMDLINE_LINUX_DEFAULT="vga=normal nomodeset plymouth.enable=0 console=ttyS0,115200"
     GRUB_CMDLINE_LINUX=""
     GRUB_PRELOAD_MODULES=""
    -GRUB_TERMINAL_INPUT=console
    -GRUB_TERMINAL_OUTPUT=gfxterm
    +GRUB_TERMINAL_INPUT=serial
    +GRUB_SERIAL_COMMAND="serial --speed=115200 --port=0x3f8"
    +GRUB_TERMINAL_OUTPUT=serial
     #GRUB_GFXPAYLOAD_LINUX=keep
     GRUB_GFXMODE=auto
     #GRUB_DISABLE_LINUX_UUID=true

    (Refer to this post if you don’t know the needed port number.)

  • Finally run grub-mkconfig to create the real config from the just modified default settings.

  • Reboot, and GRUB2, the boot process and the login prompt should be accessible over the serial console again.

© Miklos Vajna. Built using Pelican. Theme by Giulio Fidente on github.