The Document Foundation Planet

 

September 07, 2013

Siqi LIU

And here comes the countdown timer for iOS remote control!

 

ImageImage

 

As pointed out previously by Mirek, a countdown timer might be useful for presenters. After going through various design mock-ups, here is the one that got adopted. 

When the sidebar is revealed, users can swipe on the first cell to switch from a stopWatch to Timer. And whichever is on top will take the ownership of the “00:00:00″ in the navbar and show the time left/seconds passed accordingly.

The switching between timer/stopwatch is paged, it always lands on one of the two blocs. Also, the cell section title got “Pushed away” and the navigation dots reflect the currently activated block as well on each switch. 

This only works for iPhone for now, I will work on the iPad version in a day or two. 

The “pencil down” day is approaching, so is the LibO conference, so excited that I got something that works now ^^

As always, let me know what you think in terms of the new design. I will push it to beta-test once I finish the iPad version (as most of the beta-testers are on their iPads :P )

Cheers, 

Siqi


by liusiqi43 at September 07, 2013 08:44 PM

Andreas Mantke

New Templateupload-Site-AddOn – Debugging and Fixing Issue with Ranking

The LibreOffice templates site uses Plone with some add-ons. Because I want to make the process to provide a template for LibreOffice easier I began to work on a new add-on for Plone with a more flat structure.

The new add-on should also provide the option to rank a template. I use the already available add-on cioppino.twothumbs for this. But I got the newest version (1.7) not to work. I tried it with older versions today and this solved my issue. The versions 1.5 and 1.6 displayed the portlet with the two thums (up and down) to vote on a template. Thus the feature is implemented now. But there are some remaining tasks to finish the add-on for a first public beta test.

by andreasma at September 07, 2013 12:24 PM

September 06, 2013

Michael Meeks

2013-09-06: Friday.

  • Up early, mail chew, call with some great Indians, chat with Cor. mail thrash; lunch with Miriam, Ben and May - lovely to see them. Back to the cliff of small tasks involved with setup & customers - fun. Continued migrating individual mailing lists across to new mail address too - makes you realise what a volume of infrastructure: lists, bugzilla, gerrit, etc. etc. is actively used.

September 06, 2013 04:42 PM

September 05, 2013

Michael Meeks

2013-09-05: Thursday.

  • Up rather early, mail chew, still trying to get through all the backed up mail, much of it from people I love from SUSE. ESC agenda creation, call with SUSE, team meeting, ESC call, sales-force / process training with Guy. Partner call.

September 05, 2013 09:00 PM

September 04, 2013

Michael Meeks

2013-09-04: Wednesday.

  • Up very early; mail chew - a lovely slew of congratulation messages and well wishers from inside and outside SUSE, and some business opportunities too: lovely. An early train to London (caught up with Arun also on the same train).
  • Hacked slides on the way, arrived at Campus Party Europe, caught up with Tim Janik, presented. Enjoyed the next talk, back to the speakers' room for some laptop power, internet etc. chewed mail, met Dominic Conner and chewed over lots of interesting spreadsheet insights from the financial industry.
  • Home via Cambridge, the bliss of not draining the battery and 3G connection on the station platform at the connection, but dropping into the beautiful Collabora office for power, fast network etc. is wonderful. Caught up with Guy quickly, home, bed late.

September 04, 2013 09:00 PM

Siqi LIU

[GSOC] How-to guide for iOS remote app

Hi all,

The iOS remote control app now features an in-app How-to guide

On first launch, a pop-up will take users to an array of screenshots which will guide users through the connection/pairing/control stages of the app.

IMG_0925 IMG_0926 IMG_0927 iOS Simulator Screen shot Sep 4, 2013 9.26.00 PM iOS Simulator Screen shot Sep 4, 2013 9.26.04 PM iOS Simulator Screen shot Sep 4, 2013 9.26.08 PM

Also, the documentation is updated to the current version, which includes recently added commands. Android app may also consider adding these functionalities to the existing app:

# As of gsoc2013, these commands are extended to the existing protocol, since server-end are tolerant with unknown commands, these extensions doesn't break backward compatibility
* pointer_started // create a red dot on screen at initial position (x,y)
initial_x // This should be called when user first touch the screen
initial_y // note that x, y are in percentage (from 0.0 to 1.0) with respect to the slideshow size
* pointer_dismissed // This dismiss the pointer red dot on screen, should be called when user stop touching screen
* pointer_coordination // This update pointer's position to current (x,y)
current_x // note that x, y are in percentage (from 0.0 to 1.0) with respect to the slideshow size
current_y // unless screenupdater's perfomance is significantly improved, we should consider limit the update frequency on the
// remote-end
# As of gsoc2013, these commands are extended to the existing protocol, since remote-end also ignore all unknown commands (which is the case of gsoc2012 android implementation), backward compatibility is kept.
* slideshow_info // once paired, the server-end will send back the title of the current presentation
Title

by liusiqi43 at September 04, 2013 07:43 PM

Miklos Vajna

Open Day 2 @ Budapest

On Monday, KAMI once again organized an event called "Open Day 2" here at Budapest, to promote free software like Mozilla projects and LibreOffice. I was also invited as a speaker, giving overview of what happened in LibreOffice-land during the past few months. My slides are here.

Thanks for nice evening, it was good to talk again to other free software contributors like our Hungarian Firefox and LibreOffice translator, etc. :-)

September 04, 2013 06:48 AM

September 03, 2013

Michael Meeks

Collabora and LibreOffice

Today we announced the reason why my blog has been more than normally boring for some weeks: the core of the SUSE LibreOffice team is finding a new home inside Collabora (based in nearby Cambridge UK) and providing support for LibreOffice. That's a change that brings huge opportunities - taking LibreOffice to one billion+ Office / Productivity users, more aggressive pricing, and over time, growing the community of those paid to work on and around LibreOffice. It should also make it easier to execute efficiently on the many smaller opportunities in the marketplace.

Good Timing

Now is a great time for this to happen - we've got LibreOffice 4.1 released, and a great minor point release in 4.1.1 out, so the release schedule is calming down. LibreOffice as a product is increasingly excellent in both features and quality, with an impressive set of large deployments and migrations around it. It is a great time too from a Document Foundation (TDF) perspective - with Christian Lohmaier working full-time for TDF, and Florian Effenberger's help all of the core release engineering, infrastructure work and administration around TDF is handled in-house. I fully expect this to have exactly zero impact on LibreOffice's time based release schedule.

SUSE

So - as you can see, I'm excited about this move and all the possibilities, but what about a perspective on SUSE (their announce).

It seems to me that the ability to say 'no' to profitable but peripheral business in order to strategically focus the company is a really important management task. In the final analysis I'm convinced that this is the right business decision for SUSE. It will allow Collabora's Productivity division to focus exclusively on driving LibreOffice into Windows, Mac and Consulting markets that are peripheral to SUSE. It will also retain the core of the existing skill base for the benefit of SUSE's customers, and the wider LibreOffice community, of which openSUSE is an important part.

Over the last weeks, I've been deeply impressed by a unique experience of the level of integrity and concern for all stakeholders including employees and the wider Free Software community that SUSE's management have shown. There is always a sadness to moving on after so many years of service with many friends at SUSE, but it's nice to know that my friends are in good hands.

Working at SUSE and with openSUSE for the last decade plus has been a source of great pleasure and satisfaction, for me at least, and I thank all those I've worked with for their patience, tolerance and kindness. One of the one of the great joys of my role has been getting to know, and working with a broad spectrum of talented individuals across the company and the software stack from the base-system through to the applications. SUSE really has exceptional people across the board, it is sad in a sense to leave them. The good news is that, you can join them: SUSE is hiring and there are open slots, checkout SUSE careers to become part of the ongoing story.

Collabora & TDF

What else can I say ? Collabora's Productivity division is mid-way through day two. Much remains to be decided and done, but it is an exciting road ahead. I'm looking forward to working hard to make doing business with Collabora Productivity around LibreOffice something that is easy to initiate, and beautiful to experience.

The Document Foundation, continues un-disturbed by this, its diversity and stability will become clearer - SUSE will continue to be an Advisory Board member alongside Collabora - a net gain of a seat. Collabora joins a long line of recent additions there, with more in the pipeline. Collabora will also be sponsoring the LibreOffice conference next month in Milan - I look forward to seeing you there.

September 03, 2013 09:00 PM

2013-09-03: Tuesday.

  • Up early; interested to notice that it's either April the 1st or Microsoft finally bought Nokia: that should re-configure the competitive landscape in interesting ways. Wrote up the Collabora news, while fielding questions, and congratulations variously. Worked on Advisory Board slides at some length.
  • Vlad around in the evening to chat & do some Bible study together - fun.

September 03, 2013 09:00 PM

Charles Schulz

The Spin-Off

The news are out and while they do not concern the LibreOffice project directly (insofar as this does not represent a change within the Document Foundation) I thought I’d be explaining a bit what these news are about and what they mean for the LibreOffice project. First, the announcement, as well as Michael Meeks’ blog post on the subject. (Caveat Emptor: I dont’t work for Suse and this is a personal blog, expressing my views only, although I’ m obviously a member of the Document Foundation’s board of directors which makes me anyway speak from a different point of view from the guy next door) Essentially, the story can be summarized in this sentence: Suse wants to focus on its core business (server and cloud computing) and has decided to spin off part of its LibreOffice development team over to Collabora.

What this means is that the Document Foundation has won a new strategic partner, Collabora, and that it has now a seat at the Advisory Board. What this also means is that Collabora has joined the ecosystem of LibreOffice service providers and that it will de facto stand as one of the very best companies making money on LibreOffice. Of course this does not automatically ensure their business success, this is why we wish them all the best.

Some readers might be surprised by the way I’m describing the announcement. It might be tempting to see these news as the sign of the upcoming demise of the LibreOffice project. This is very far from being the case  and there are two good reasons for that.

First, Suse is NOT dumping LibreOffice developers away. The same developers basically went in a new company and there working on LibreOffice development there. In American parlance, this is called a spin-off. Second, and perhaps more importantly, the Document Foundation has precisely been created to prevent not  just a take-over from one company of the entire project, but actually to ensure that any company or any developer leaving the LibreOffice project would not jeopardize the project, the community and their independence. Just as an example, today the Document Foundation has its own release engineering team and has its own infrastructure. We do  not rely on third party sponsors or on the benevolent will of one company for any of this. This simply means that if the sky falls tomorrow, we will still be up and running no matter what change in affiliations could happen then.

If anything, what has been announced today by Suse and Collabora is the perfect illustration of why the LibreOffice project is needed and why the Document Foundation has been created. I am thus thrilled to welcome Collabora to the Advisory Board and I would like to send my deep and sincere thanks to Suse for their past and continuing support, and last but not least, wish good luck to Michael Meeks and his team for their new roles at Collabora. The journey is going to be exciting.

by Charles at September 03, 2013 05:59 PM

September 02, 2013

Cor Nouws

Sidebar – avoiding it or improve it for using Styles?

Since LibreOffice 4.1 there is the Sidebar as a experimental feature. While devs work on improvements and stabilising for future releases, I mostly avoid that Sidebar :) Meanwhile many people are positive about the nice looking feature... Well indeed it shows nice. And it shows huge...
You may get the feeling here that I'm not so happy with the Sidebar? Indeed! I'll explain why. And of course will try to give a shot about a maybe possible improvement.
Reasons why I'm not too happy is first because it eats space. Double: most of the formatting settings offered are directly available in the formatting toolbar already.
Furthermore, and that's much worse, the nice presentation of all kind of formatting settings, promotes direct formatting. And direct formatting, thus hassling around without using styles, is one of the largest problems when exchanging documents with people that pay for being licensed to use office-software. All this unstructured settings may give problems when working with documents over different programs. (Apart of course from the troublesome way in which Word handles pictures and numbering ;) – but that's a different story.)
 
So for me, two reasons to dislike the Sidebar: for eating space and for promoting bad habits :(
Now, before bringing a suggestion, as a side step, a way in which the Sidebar can bring some sort of fun: when opening the Navigator both apart and in the Sidebar, one with only headings shown and the other with all other content.
With only headings shown, the view in the Navigator (the one left in the screen shot) nicely follows the position in the document.
 
Then for a maybe possible improvement – I try to bring this careful, because ideas are often easily written down, and hard to realise ;)
From my objections with the current implementation, it's clear that I would rather see support for the use of styles. So I mocked up a little version with various style categories shown at the same time. And maybe also something can be done with the presentation of the font, as is the cast in the list Select Style.
And to recover some space, I simply hided the Formatting toolbar. Only the list Apply style deserved a new place on the Standard toolbar.
That's all that there is for now.
 

by Cor & OfficeBuzz (noreply@blogger.com) at September 02, 2013 10:47 PM

Cedric Bosdonnat

CMIS changes merged in master

I just rebased the feature/cmis branch hosting Cuong's great work and some other interesting improvements of the existing CMIS feature. Concretely, this means that with master builds you can now:

  • Connect to Google Drive through the CMIS feature. The UI for the connection may still need to be improved
  • See and edit the CMIS properties of your documents.
  • Decide what to do with invalid SSL certificates when initiating a CMIS connection

branching tree

by Cédric Bosdonnat at September 02, 2013 11:42 AM

Vishv Brahmbhatt

Slide Layout Extendibility – Weekly Report(26th Aug – 1st Sep)

Hi,
I was able to complete following things last week:
+Consolidate XML config parser code into ‘comphelper’ module.So that to avoid duplicate codes in ‘sd’ module.
+And made corresponding changes to parse out “master presentation object” from ‘objectlist.xml’.
+Mostly the above work should be merged into the master by today.

So this week : I am planning to make further development on output filter of ‘slide layouts’ as per the advise of my mentor.


by vishvbrahmbhatt19 at September 02, 2013 08:31 AM

Tim Janik

Open Source In Business at Campus Party Europe

Next Friday I’ll be giving a talk on Open Source In Business at the Campus Party Europe conference in the O2 arena, London. The talk is part of the Free Software Track at 14:00 on the Archimedes stage. I’m there the entire week and will be happy to meet up, so feel free to drop me a line in [...]

by timj at September 02, 2013 12:29 AM

September 01, 2013

Miklos Vajna

OOXML floating table improvements in LibreOffice Writer 4.2

I’m posting here a few screenshots showing improvements I’ve recently implemented in our DOCX import and export filter, done in the 4.2 development cycle. Note that final 4.2 is still far from being released, so this is not a complete list. :-) In each case I’m providing a screenshot showing how it looks now on 4.2, how it looked before and the reference layout. Click on the images to get a larger image:

  • document with paragraph shadow (test doc):

OK, this has nothing to do with floating tables. But I promise the rest is all related to that. ;-)

  • document with floating table (test doc):

  • document with floating table and special margins (test doc):

  • the same document after roundtrip (load, save and load again):

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.2 gets branched off. And remember, there are lots more improvements coming in LibreOffice 4.2 (even if some of them is not yet documented), stay tuned! ;-)

September 01, 2013 07:38 PM

August 31, 2013

Florian Reisinger

Parallel Installation on Linux

<iframe class="youtube-player" frameborder="0" height="385" src="http://www.youtube.com/embed/r-mKLjq4Lzk?version=3&amp;rel=1&amp;fs=1&amp;showsearch=0&amp;showinfo=1&amp;iv_load_policy=1&amp;wmode=transparent" type="text/html" width="630"></iframe>

Hi,

Just found an old video: How to Parallel installation @ Ubuntu 12.04


Tagged: LibreOffice, parallel installation, Server Installation, ubuntu, youtube

by Florian Reisinger at August 31, 2013 11:57 AM

August 30, 2013

Official TDF Blog

LibreOffice Conference – Registration is now open

In less than four weeks, the LibreOffice Conference 2013 will take place in Milan, Italy.
LibOCon is the global and annual event for the whole LibreOffice community and ecosystem, with creators, adopters and users meeting and gathering, exchanging ideas and thoughts. Dates are September 25-27 – see the conference site.

After the Call for Papers has been finished, we are currently working hard to prepare the schedule out of those many great proposals we have received.

In order to help the organizers with their plannings, we today ask you to register if you want to take part in this year’s conference. This helps us in estimating the amount of attendants and ensuring that enough capacities are available for everyone. We also need this information to send you last-minute updates via e-mail.

Registering is easy – just send an e-mail to

conference@libreoffice.org

and state:

  1. your first and last name
  2. your e-mail address
  3. your organization/affiliation, if applicable
  4. your IRC nickname, if you want

Participation at the conference will cost 10 € per person, payable directly at the venue, which helps the organizers in producing required material.

Looking forward to seeing you in Milan!


by Florian Effenberger at August 30, 2013 12:32 PM

August 29, 2013

Official TDF Blog

The Document Foundation announces LibreOffice 4.1.1

The Spanish region of Valencia migrates to LibreOffice 120,000 PCs

Berlin, August 29, 2013 – The Document Foundation (TDF) announces LibreOffice 4.1.1, for Windows, Mac OS X and Linux. This is the first minor release of the LibreOffice 4.1 family, which features a large number of improved interoperability features with proprietary and legacy file formats.

The new release is a step forward in the process of improving the overall quality and stability of LibreOffice 4.1. For enterprise adoptions, though, The Document Foundation suggests LibreOffice 4.0.5, backed by certified professionals.

LibreOffice 4.1.1 arrives a few days after the announcement of the Spanish autonomous region of Valencia’s migration to LibreOffice on 120,000 PCs, which will save the government some 1.5 million Euro per year on proprietary software licenses.

The LibreOffice ecosystem continues to grow at a steady pace, with an average of over 100 active developers per month since February 2013. These figures tops the cumulative number of over 700 new developers attracted by the project since the announcement on September 28, 2010.

LibreOffice 4.1.1 is available for immediate download from the following link: http://www.libreoffice.org/download/. Change logs are available at the following links: https://wiki.documentfoundation.org/Releases/4.1.1/RC1 (fixed in 4.1.1.1) and https://wiki.documentfoundation.org/Releases/4.1.1/RC2 (fixed in 4.1.1.2).

About The Document Foundation (TDF)

The Document Foundation is an open, independent, self-governing, meritocratic organization, which builds on ten years of dedicated work by the OpenOffice.org Community. TDF was created in the belief that the culture born of an independent foundation brings out the best in corporate and volunteer contributors, and will deliver the best free office suite ever. TDF is open to any individual who agrees with its core values and contributes to its activities, and welcomes corporate participation, e.g. by sponsoring individuals to work as equals alongside other contributors in the community. As of June 30, 2013, TDF has 159 members and over 3.000 volunteers and contributors worldwide.

Media Contacts

Florian Effenberger (based near Munich, Germany, UTC+1)
Phone: +49 8341 99660880 – Mobile: +49 151 14424108 - E-mail: floeff@documentfoundation.org
Charles H. Schulz (based in Paris, France, UTC+1)
Mobile: +33 6 98655424 – E-mail: charles.schulz@documentfoundation.org
Eliane Domingos de Sousa (based in Rio de Janeiro, Brazil, UTC-3)
E-mail: elianedomingos@documentfoundation.org – Skype: elianedomingos
Italo Vignoli (based in Milan, Italy, UTC+1)
Mobile: +39 348 5653829 – E-mail: italo.vignoli@documentfoundation.org – Skype: italovignoli – GTalk: italo.vignoli@gmail.com


by italovignoli at August 29, 2013 12:00 PM

August 27, 2013

Andreas Mantke

Update of LibreOffice Conference Site Add-On

The LibreOffice conference website is driven by the Content Management System (CMS) Plone with a self developed Dexterity type add-on. I’ve reworked this add-on for the Milan conference site a bit.

I meet with a Plone core-developer last weekend and I got some hints to improve the add-on. I committed this improvements to the github-repository today and they are via a rerun of buildout available on the LibreOffice-Milan-Conference-Site now: http://conference.libreoffice.org

by andreasma at August 27, 2013 07:57 PM

Florian Reisinger

History of the UI of Server Install GUI

Hi,

Pictures says it all, so please have a look at the gallery. What’s your favorite? Please comment

Click to view slideshow.
Tagged: history, Server Installation GUI, software, UI

by Florian Reisinger at August 27, 2013 05:06 PM

Charles Schulz

LibreOffice Conference: Join us in Milano!

This year the LibreOffice Conference will take place in Milano, Italy. Come and join us for this excepional event from the 25th to the 27th of September 2013. Learn about migrations to LibreOffice, LibreOffice existing deployments, writing extensions and much more. Participate in  hacking sessions and community workshops and most of all, meet the LibreOffice community face to face for a few days of exchange and fun!

Register and stay up to date with the conference schedule and programme on our dedicated conference web site.

by Charles at August 27, 2013 03:02 PM

Vishv Brahmbhatt

Slide Layout Extendibility – Weekly Report

Hi,

Last week I was able to complete following things:

+I have almost completed the work related to:Parsing the properties of presentation object used in master page(e.g Header & Footer Objects) from XML.

+Also, the current slide layouts are parsed from XML and it has been pushed to the master code.

So this week ,I will be looking forward  to : The work related to export filter as per the advise of my mentor.


by vishvbrahmbhatt19 at August 27, 2013 02:11 PM

Florian Reisinger

Linux is better as Windows | LibreOffice is as good as Word

Hi,

In yesterdays program of the Austrian channel ORF 2 (German) there was some advertisement of Linux (especially Ubuntu), which is ought to be better than Windows as well as LibreOffice being (for most people) as good as Word, maybe even better)

Have a look yourself:

<iframe class="youtube-player" frameborder="0" height="385" src="http://www.youtube.com/embed/gTeuvVGlgW4?version=3&amp;rel=1&amp;fs=1&amp;showsearch=0&amp;showinfo=1&amp;iv_load_policy=1&amp;wmode=transparent" type="text/html" width="630"></iframe>


Tagged: Linux, software, technology, ubuntu, Windows, youtube

by Florian Reisinger at August 27, 2013 08:59 AM

Caolán McNamara

min raggedness wrap

The tabs in our multirow “double-decker” tabdialogs now finally wrap prettily to balance as evenly as possible. Which especially avoids the occasional single orphan tab that spans the whole dialog.
Before:
After:

by Caolán at August 27, 2013 08:51 AM

August 26, 2013

Kohei Yoshida

Speedier export of rich text cells

Here is another performance improvement that just landed on master.

Background

It was brought to our attention that the performance of saving documents to ODF spreadsheet format had been degrading quite noticeably. This was especially true when the document contained lots of what we call rich text cells. Rich text cells are those cells that contain text with mixed format spans, or text that consists of multiple lines. These cells are handled differently from simple strings internally, and have slightly more overhead than the simple string counterparts. Because of this, saving a document full of such texts was always slower than saving one with just numbers and simple strings.

However, even with this unavoidable overhead, the performance of saving rich text cells was clearly going in the wrong direction. Therefore it was time to act.

Long story short, after many days of code reading and writing, I brought it to a state where I can share some numbers.

Measuring export performance

I measured the performance of exporting rich text cells in the following steps.

  1. Create a new spreadsheet document.
  2. Type in cell A1 3 lines of ‘libreoffice’. Here, you can hit Ctrl-Enter to move to the next line within the same cell.
  3. Copy A1, select A1:N1000 and paste, to replicate the content of A1 to all cells in the range.
  4. Save the document as ODF spreadsheet document, and measure its duration.

Results

I performed the above measurement with 3.5, 3.6, 4.0, 4.1, and the latest master (slated to become 4.2) builds, and these are the numbers.
edit-text-export-ods-perf

It is clear from this chart that the performance started to suffer first in version 3.6, then gradually worsened over 4.0 and 4.1. The good news is that we have managed to bring the number back down in the master build, even lower than that of 3.5 which I used as the point of reference. Not just slightly lower, but much, much lower.

I don’t know about you, but I’m quite happy with this result.

by Kohei Yoshida at August 26, 2013 04:19 PM

Florian Reisinger

New UI for ServerInstall GUI (again…) + other news

We had this before, but still I had ideas how to simplify things more, and that’s why I did minor changes to the UI (okay… Changed size of the main form + added one button + changed size of 2 areas (Shortcut and bootstrap.ini)

As always I am interested in your opinion and feedback :D

Here are the screenshots:

Main UI Edit Bootstrap.ini UI

So and now some other news I am really happy about:

  • The rework of the help seems to be finished soon (Thanks to Ken Biondi)
  • I am at the LibO conference in Milan :D
    • As I am too late to send in my proposal I really hope to get a “lightning talk” slot –> Talk about SI-GUI

That’S it for today


Tagged: C#, conference, QA, Server Installation GUI, software, technology

by Florian Reisinger at August 26, 2013 01:25 PM

Andras Timar

Pattern matching in Autocorrect

A new patch of Autocorrect feature allows the text replacement before or after arbitrary affixes depending on the starting or ending wildcard character * in the Autocorrect Replace pattern. This is a small, but useful enhancement in word processing, especially for affix rich languages, but I will show a nice improvement for French typography, too, using this feature.
autocorrect_pattern
For example, with the “i18n*” → “internationalization” item Autocorrect will find and replace i18ns with internationalizations, too. Hungarian spelling dictionary handles two thousand suffixes of a given noun, dozens of them are quite frequent, simply exceeding the limitations of the old Autocorrect feature. With the new patch and the modified Autocorrect list LibreOffice will be able to handle all forms of serious misspellings and common abbreviations, that is a real innovation for Hungarian and similar languages. But the following examples help the word processing in English and other languages, too:

  • Typographic correction of ellipses (with the precomposed ellipsis character U+2026): *… → …, eg. word… → word… (see below on the screenshot)
  • The same combined with quotation marks: “…* → “… and *…” → …”, eg. “…and a quote…” → “…and a quote…”
  • Simplified input for special symbols: *%o → ‰, eg. 7%o → 7‰
  • French punctuation. LibreOffice has got only a poor man’s input method for French typography, inserting full long (“typewriter”) spaces before question and exclamation marks, colon and semicolon, and before and after guillemets (only Graphite fonts Linux Libertine G and Biolinum G support French typography well). With the new Autocorrect patch and with the following replacements, it’s possible to get better spaces in the case of Unicode fonts with narrow no-break space (U+202F): *! →  ! (U+202F !), * ! →  ! (a replacement for the same sequence to avoid multiple insertion of narrow no-break space) etc. It seems, this could be a general method, because missing narrow no-break spaces are replaced by normal spaces (like in the recent poor man’s method). But fonts with narrow no-break spaces, like DejaVu Serif, Liberation Sans and Serif, Linux Libertine and Biolinum (also not Graphite versions) give better French typography (to use the new method, switch the French poor man’s method off in the Localized options of Autocorrect settings):

ellipsisfrenchpunct600

by Németh László at August 26, 2013 10:48 AM

August 22, 2013

Official TDF Blog

The Document Foundation announces LibreOffice 4.0.5

Berlin, August 22, 2013 – The Document Foundation (TDF) announces LibreOffice 4.0.5 for Windows, OS X and Linux, the fifth minor release of the stable LibreOffice 4.0 family. Users of the now-end-of-life LibreOffice 3.6 series are strongly encouraged to upgrade.

LibreOffice 4.0.5 fixes more than 90 bugs, many of them in the area of interoperability with proprietary document formats and operating systems. Thanks to the work of our QA volunteers, LibreOffice 4.0.5 also solves a number of regressions from earlier releases. Just recently, the QA community has concluded their first triage contest, thereby cutting down the number of untriaged and unreviewed bugs significantly. That has contributed greatly to an even more confident assessment of the LibreOffice quality.

The new release is available for immediate download from the following link:
http://www.libreoffice.org/download/

Change logs are available at the following links:
https://wiki.documentfoundation.org/Releases/4.0.5/RC1 (fixed in 4.0.5.1) and
https://wiki.documentfoundation.org/Releases/4.0.5/RC2 (fixed in 4.0.5.2).


by Florian Effenberger at August 22, 2013 11:57 AM

August 20, 2013

Björn Michaelsen

Powerplay

I’ve got the power.

– The power, Snap

So, Im back from vacation. One of the things I did was reorganizing my hardware, and for doing so, I bought a wattmeter to measure what my machines and toys actually consume. A lot of the stuff was what I expected, but there where a few nasty surprises:

 (all values in Watt)
Ideapad S12 Thinkpad W520 Bertha TV Pandaboard ES
power supply only 0 0.2 2.5 0.3 0.1
standby 0.3 0.2 2.5 15 3.2
desktop w/o display 13 10 122 130 6.1
with display 18 16 180 100
g+/gmail 20 20 212
compiling 90/70/35 417 8.1

From this set a few surprising takeaways:

  • The wimpy Ideapad S12 with its Atom CPU eats more power when idling than the Thinkpad W520 with its beefy i7 Quad-Core and 16GB of RAM (13 Watts vs. 10 Watts).
  • My TV doing nothing but waiting for the remote to tell it to turn itself on eats more power that each of my notebooks (15 Watts vs. 10/13 Watts).
  • Just opening Firefox with one tab google plus and one tab google mail eats 4 extra Watts on my notebook and 32 extra Watts on my desktop. It seems all that JavaScript voodoo does not come free at all: ~6 Euros per month when I leave it open on my desktop all the time.
  • Running my desktop (Bertha) as an tinderbox for LibreOffice 24/7 would cost me ~1.000EUR per annum. Doing it with three of those boxes would a very expensive and noisy alternative to what others sell as a room heater.
  • My TV eats 30 Watts more when displaying the black screen of a disconnected HDMI signal than with normal TV display. Maybe its expensive to search for a signal?
  • Compiling LibreOffice without ccache on my Notebook kicks the power consumption to 90 Watts — but only for a few minutes. Then the thermal controls throttle the machine down to 70 or even 35 Watts, which seems all the machine can disperse over sustained periods.

My electricity is 100% from water power, btw. Admittedly — its unlikely to come from the Hoover dam, though (Image copyright CC BY 2.0 by Gordon Wrigley)

And then there where these leftover pieces to measure, no surprises there, just a confirmation of my suspicion that the old Asus notebook I run as a home server is eating way too much power:

(all values in Watt)
bits and pieces
mic preamp off 1.1
mic preamp on 10
hub 5
phone 4
“home server” (decommissioned Asus Z53 notebook) 30

My tentative conclusions are:

  • replacing my old “home server” with something ARM-based like a Raspberry Pi or a Pandaboard breaks even after one year — I should do that.
  • Even when under load, a ARM-based Pandaboard has a modest power consumption.
  • I will completely turn off my TV on principle as the standby consumption is just pure impudence. As a bonus it prevents my BluRay player from kicking on the 100 Watt TV when I throw in a audio CD (Thanks Panasonic, for providing this excellent and “useful” integration).
  • A cheap Netbook might be less powerful, but it hardly consumes less than a high-end Notebook when idling. You get what you pay for.
  • I bought a cooler for my Notebook, hoping to unlock it from choking itself with thermal restriction. It should be a good idea in general as the logs not only talked about throttling, but also about more scary MCEs.
  • Buying a wattmeter is a good decision, when you run nontrivial amounts of hardware.

Addendum: The 2.5 Watts for Bertha when off may seem bad — but its not at all, if you consider it is running a lights-out management on that.


by bmichaelsen at August 20, 2013 05:06 PM

Fridrich Strba

Service announcement: openning of SXW files produced by early versions of wpd2sxw in LibreOffice

Just a service announcement for those that might have around still SXW files generated from WordPerfect documents by the wpd2sxw tool version 0.6.x or earlier (years 2004 and before). Those files used to open fine in early OpenOffice.org versions, but they miss a crucial element. That is the reason why LibreOffice, the OpenOffice.org modern successor, will refuse them. Nevertheless, they are not lost!

LibreOffice development team, in its constant quest of increased user satisfaction, has a workaround for you!

First grab the zip file with the required manifest. Then get the zipmerge tool that comes with libzip, and merge the manifest into the corresponding SXW file. As an example, this command line could work:

for i in <sxw-file-list>; do zipmerge temporary_sxw.sxw /path/to/sxw_manifest.zip $i && mv temporary_sxw.sxw $i; done

This way you assure that if the original SXW file already had a manifest, it will not be overwritten by the one from sxw_manifest.zip, which would not be a desirable outcome. Nonetheless, if you only have to repair one SXW file and you checked already that manifest is missing in it using tools like zipinfo, you can quietly use:

zipmerge <original-sxw-file>.sxw /path/to/sxw_manifest.zip

In order to merge the manifest directly into that file. Naturally, you can merge the manifest from the sxw_manifest.zip into the SXW file using any other zip-manipulation tool you prefer.

Enjoy and continue using LibreOffice, the free and open source office suite of reference.

by Fridrich Strba (noreply@blogger.com) at August 20, 2013 01:38 PM

Tim Janik

07.10.2008 Recent Interviews

Two weeks ago, Bruce Byfield did an interview with me about Manju. The article is now up at linux.com and gives a general overview of the project scope: Manju Project Article. There’s also been a German interview with Sven Herzberg and me some months back at the Berlin Hackfest, which covers some historical background around [...]

by timj at August 20, 2013 12:44 AM

30.04.2006 Linux Audio Conference

The 4th International Linux Audio Conference is quite fun, we got many interesting comments on our Beast Demo (here’s also a Beast Paper from the 2005 proceedings). One of the most requested feature seems to be Jack support for Beast. To quote Stefan on the conference: “Some talks were really cool, for example the Reverb [...]

by timj at August 20, 2013 12:42 AM

04.06.2007 LinuxTag

As announced by Hallski, Sven, Mitch and me went to LinuxTag 2007 and operated the Imendio and GNOME booths. As usual, Sven did a great job nurturing random users approaching the booth, together with Mathias Hasselmann and Michael Köchling. I put more focus on the amazingly large program of the conference, of which I’ll give [...]

by timj at August 20, 2013 12:42 AM

02.06.2008 LinuxTag 2008

Just like LinuxTag last year, I went to Berlin the past week to help running the Gnome booth for LinuxTag 2008. Due to a sports accident, our booth bunny Sven Herzberg unfortunately couldn’t make it, so on Tuesday I took over booth management and merchandise from him and hurried to Berlin in an ICE instead [...]

by timj at August 20, 2013 12:42 AM

August 19, 2013

Vishv Brahmbhatt

Slide Layout Extendibility : Weekly Report

Hi,
I was not able to submit my report since last few weeks.Here is the overview of what I have done till now :

+The current slide layouts including ‘vertical layouts’ are getting parsed from XML file.There has been great improvement with the logic of parsing.

+Also I have started testing this parser in my machine, by observing the diff of ‘content.xml’ (as well as ‘style.xml’) of both .odp files(from current build & master build).So it can be merged to master(without much change in user-experience).

+I have got myself familiar with the export filter stuff(by reading some of the documentation).So hopefully, I am planning to complete them within coming two weeks.


by vishvbrahmbhatt19 at August 19, 2013 01:54 PM

August 16, 2013

Fridrich Strba

Extending the Swiss Army knife - an overview about writing of filters for LibreOffice

LibreOffice is sometimes regarded as the Swiss army knife when it comes to opening office file-formats. Although it might be a slight exaggeration, it is a point of honour of the development team to try to allow users to load into the suite as many of their documents as possible. Every major release from the first LibreOffice 3.3 came with new and improved import filters, often for file-formats that are under-documented, if any documentation can be found at all. In this article, we would like to present the way import filters interface with LibreOffice and give to an interested developer a starting point for adding her favourite file-format among those LibreOffice is able to open.

Filters creating documents directly into LibreOffice internal structures

In general, an import filter's task is to parse the foreign document, extract from it useful information, and feed it to the application in a way it can understand. Many internal filters, like the MS Word filter, use a direct way of communicating with LibreOffice. They import the document directly into the internal structures that represent those documents. The advantage of this approach is the lack of intermediary: the document is immediately understood by the application and no additional processing is needed. The disadvantage is that this approach requires an intimate knowledge of the internal structures used and has thus a steep learning curve. The next two types of filters will correspond better to a developer that does not want to dive too deep into LibreOffice internals, yet wants to have his work done.

OpenDocument format as an interchange format

Who has not heard about OpenDocument? Hardly anybody ignores its existence. But it is also a convenient interchange format for filter writers. No need in this case to understand the LibreOffice internals apart from some hundred lines of boilerplate code that are documented in various places. It suffices to read the source document and generate a "flat" OpenDocument representation of it. LibreOffice is able to load this kind of representation as if it was loading an ODF document.

XSLT filters

The easiest way to write a filter for an XML-based file-format is using the XSLT filter dialogue. All you need is to have an XSL transform that converts a foreign XML-based file-format to the "flat" ODF, for import filters; and that converts a corresponding ODF XML to the XML used by the foreign file-format, for export filter. Once those transforms exist, the integration with LibreOffice can be done using the user interface.

Picture 1

In the Tools menu, chose XML Filter Settings, you will see listed all the XSLT filters that are already present in your LibreOffice installation along with the information about the application that is supposed to receive the resulting ODF document. Other information that can be found is about the direction of the conversion. Is it an import filter, export filter, or a filter that can import and export a foreign file-format.

If you click at "New", this dialogue will appear.

Picture 2

In the "General" tab, you will be able to chose the user-visible information about the filter: its name, the application that will receive the converted document (for instance LibreOffice Calc (.ods) for a spreadsheet converted to the OpenDocument Spreadsheet format). This information is also used by LibreOffice to group different types of documents. If you chose presentations in the file-picker and your filter specifies that it is converting into the LibreOffice Impress application, then all files having the file-extension associated with the file-format will be shown in the list.

In the "Name of file type", you will be able to describe the file-format that your filter will handle and in the "File extension" field, you will need to put semicolon-separated list of possible extensions for files in the given file-format. For instance, the extensions for the files in Microsoft Excel 2003 XML file-format will end typically with extensions xml or xls. You can add a comment in the "Comments" field. This last field is optional and you can leave it empty if you desire.

Picture 3

The next tab is the actual information about the XSL transformations that will do the conversion. The DocType field makes sense principally for import filters. The XSLT filters typedetection will scan for the string you enter there in the first 4000 bytes of the file. Since the typedetection searches for this string only in those first 4000 bytes, it is necessary to assure that the string one specifies can be found invariably in the very beginning of the file. You can leave the field empty if you desire. Then the typedetection will be done purely on the basis of an extension.

If you are writing an export filter, you will provide in the "XSLT for export" field the transform that will do the conversion from the OpenDocument XML to the file-format for which you write your filter. If this field remains empty, LibreOffice will know that you filter is not an export filter. The same is valid for the "XSLT for import" field. It will contain the path to the XSLT sheet that does the import transformation. Leaving it empty is telling LibreOffice that your filter is not an import filter. There are already several filters bundled with LibreOffice that do conversion only in one direction. For instance, the XHTML filters or the MediaWiki filter are used only to export to the corresponding file-formats.

You also have the option to specify the default template for filters that import from file-formats that don't carry style information. For instance, the bundled DocBook filter uses a template to specify styles of different outline levels. If you don't specify the template, there are two possibilities. Either your transform creates a document with full styles, or you rely on the default styles that LibreOffice uses.

The check-box "The filter needs XSLT 2.0 processor" is to be checked only if your transforms use some exclusive 2.0 features. It is nevertheless advisable to write xslt sheets of the 1.0 version. They are much simpler and, because of the performance issues of other xslt processors out there, LibreOffice uses under the hood libxslt. The fact that libxslt, has only limited support of the 2.0 features is widely offset by the performance improvement that its use brought.

Now, you are done with the integration of your filter, the dialogue in the Picture 1 allows you to test your transforms, and even to export your filter as an extension package and deploy it on different installations of LibreOffice or to distribute it over our extension web-site http://extensions.libreoffice.org

As you can see, the integration of an XSLT-based filter into LibreOffice is rather simple. That is the biggest advantage of this approach. Nevertheless, there are also some disadvantages. Despite of the migration of the XSLT engine to a relatively fast libxslt, the use of xsl transforms on large document can be relatively slow. Another disadvantage is that the transforms are not really good at converting documents where the concepts of the source and target file-formats cannot be easily mapped.

XFilter framework

The XFilter framework is the other way to integrate import filters with LibreOffice. In fact the previous XSLT-based filters use an intermediary layer that uses this framework too. The advantage of using the XFilter framework directly is the use of higher lever programming languages that allow much easier mapping of incompatible concepts, parsing of documents in several passes, as well as much more complex processing of gathered information. Moreover, this is the way to use if you need to write a filter for a file-format that is not XML-based, since the XSLT-based filters cannot be use to convert binary document file-formats.

The use of the XFilter framework is a bit more complicated then the use of the XSLT-based filter dialogue. Nevertheless, it is far from being rocket science. We will examine the steps needed for a typical import filter using the example of the recently added Microsoft Publisher filter in LibreOffice 4. For the sake of simplicity, we first start with the configuration files. You will need to craft two xml fragments, one for the filter description and one for the file-type.

Filter description:

<node oor:name="Publisher Document" oor:op="replace">
    <prop oor:name="Flags">
        <value>IMPORT ALIEN USESOPTIONS 3RDPARTYFILTER PREFERRED</value>
    </prop>
    <prop oor:name="FilterService">
       <value>com.sun.star.comp.Draw.MSPUBImportFilter</value>
    </prop>
    <prop oor:name="UIName">
       <value xml:lang="x-default">Microsoft Publisher 97-2010</value>
    </prop>
    <prop oor:name="FileFormatVersion">
       <value>0</value>
    </prop>
    <prop oor:name="Type">
       <value>draw_Publisher_Document</value>
    </prop>
    <prop oor:name="DocumentService">
       <value>com.sun.star.drawing.DrawingDocument</value>
    </prop>
</node>

The oor:name attribute gives the name of the filter used internally. This name is important because the file-type and a corresponding filter are linked using it. As to the flags, I will mention here only two or three. The others can be used just as they are. The IMPORT flag specifies that we are implementing an import filter. For export filters, the flag is EXPORT and both flags are present for a bi-directional filter. The ALIEN flag is indicating that the filter handles a non-native file-format from the point of view of LibreOffice. When used with EXPORT flag, on export to the given file-format, it will trigger a dialogue warning about a possible data loss.

The FilterService property specifies the service that will be used for converting of the document. It is necessary that it corresponds exactly to the implementation name of your import filter. Since the filter is a so-called UNO component, it uses the java-like naming. The part com.sun.star.comp.Draw indicates that the filter is a component and converts a drawing and the MSPubImportFilter is the actual name of the filter.The UIName indicates a name that will appear in the file-selection dialogue for file-formats where none of the typedetections is able to detect them.The DocumentService property specifies which service will receive the result of the conversion. Here we are converting the Microsoft Publisher files into LibreOffice Draw as a drawing, that is why the document service will be the com.sun.star.drawing.DrawingDocument. If we were converting a text document, the document service would be the com.sun.star.text.TextDocument.

The Type property specifies the file type that the filter handles. This value is important because it must correspond to the oor:name attribute of the corresponding file-type description. It is necessary that the the name of the file-type starts with the indication of the receiving application. Here we use the draw_Publisher_Document and for instance for the Wordperfect file-format, we use in LibreOffice the writer_WordPerfect_Document. But lets profit from this and have a look at the second xml fragment, the file-type one. Here is one that corresponds to our example:

<node oor:name="draw_Publisher_Document" oor:op="replace">
    <prop oor:name="DetectService">
       <value>com.sun.star.comp.Draw.MSPUBImportFilter</value>
    </prop>
    <prop oor:name="Extensions">
       <value>pub</value>
    </prop>
    <prop oor:name="MediaType">
       <value>application/x-mspublisher</value>
    </prop>
    <prop oor:name="Preferred">
       <value>true</value>
    </prop>
    <prop oor:name="PreferredFilter">
        <value>Publisher Document</value>
    </prop>
    <prop oor:name="UIName">
        <value>Microsoft Publisher</value>
    </prop>
</node>

The DetectService specifies a service that is able to determine whether a document is of the given file-format. In our case, the com.sun.star.comp.Draw.MSPUBImportFilter is able to do both, the conversion and the type-detection. In the Extensions property, semi-colon separated values indicate possible extensions for file of the given file-format. In the case of an export filter, the first extension in the list is used for saving with automatic file-extension enabled. The MediaType property basically specifies the mime-type of the file-format. The other element that links the file-format with the corresponding filter is the PreferredFilter property. LibreOffice will invoke the "Publisher Document" to convert the document if the typedetection identifies it as "draw_Publisher_Document". As to the UIName, it specifies the way the document format will be referenced in the list of file-formats in the file-picker.

Now we finished the crafting of the configuration files. It is time to create a boilerplate C++ code. Our filter not only converts from Microsoft Publisher files, but is also able to determine whether a given document is a file-format it can import. For this purpose, it has to support two services: "com.sun.star.document.ImportFilter" and "com.sun.star.document.ExtendedTypeDetection". If we were implementing an export filter, we would have to support also the service "com.sun.star.document.ExportFilter". Besides the com::sun::star::document::XFilter interface that both are bound to implement ExportFilter service must also implement the com::sun::star::document::XExporter interface and ImportFilter has to implement the com::sun::star::document::XImporter. For initialization, the filter must also implement com::sun::star::lang::XInitialization. And since the filter implements UNO servies, it should also implement the com::sun::star::lang::XServiceInfo interface.

But, let us concentrate on the interfaces that are specific to the import filter. The XFilter interface has two functions, the filter and cancel. In our example we will implement the cancel() as a do-nothing function. As for the filter function, it is the one that will do the actual filtering.

sal_Bool SAL_CALL MSPUBImportFilter::filter(const Sequence<PropertyValue> &aDescriptor) {

First, we will have to get the reference to the InputStream that represents the document we want to import. The aDescriptor is a sequence of pairs consisting of the value name and the actual value. The operator>>= will extract the value from the UNO Any (that can contain values of different types) into a variable of the requested type.

    sal_Int32 nLength = aDescriptor.getLength();
    const PropertyValue *pValue = aDescriptor.getConstArray();
    OUString sURL;
    Reference <XInputStream> xInputStream;
    for (sal_Int32 i = 0; i<nLength; i++)
       if (pValue[i].Name == "InputStream")
           pValue[i].Value >>= xInputStream;

Next we will have to specify the import service that will receive the converted document in the form of SAX messages. The com.sun.star.comp.Draw.XMLOasisImporter service is a service that receives the OpenDocument Graphics XML.

    OUString sXMLImportService ("com.sun.star.comp.Draw.XMLOasisImporter");
    Reference <XDocumentHandler> xInternalHandler(
       comphelper::ComponentContext(mxContext).createComponent(sXMLImportService),
       UNO_QUERY);

The XImporter sets up an empty target document for XDocumentHandler to write to.

    Reference <XImporter> xImporter(xInternalHandler, UNO_QUERY_THROW);
    xImporter->setTargetDocument(mxDoc);

At this point, there is enough to plug into a filter that will read the xInputStream and write the resulting XML into the xInternalHandler. On success of the filtering operation, the filter function should return true and false on failure. After the implementation of this filter function, we will have to implement XImporter's setTargetDocument function.

void SAL_CALL MSPUBImportFilter::setTargetDocument(const Reference <XComponent> & xDoc)
{
    mxDoc = xDoc;
}

In our case we just keep the Reference to XComponent in a member variable that we used in the previous snippet to set up an empty target that receives our imported document. And that would be all for the integration of an Import filter. For an export filter we would have to implement also the XExporter's setSourceDocument that is basically symmetrical to XImporter's setTargetDocument.

It is good to note that another way of integrating of filters into LibreOffice could be using the com::sun::star::xml::XExportFilter and com::sun::star::xml::XImportFilter interfaces that are grosso-modo equivalent to the described method. The difference is that the FilterService in the configuration xml file will be in this case always com.sun.star.comp.Writer.XmlFilterAdaptor and the actual filter component, as well as the target and source services are specified in the configuration file in the UserData property. But this is just for an anecdote, since the method I described in detail is much more generic.

When we were creating the xml configuration files, we said that the com.sun.star.comp.Draw.MSPUBImportFilter component is able to do also the type-detection. For that purpose, it must support the com::sun::star::document::XExtendedFilterDetection interface, and thus its detect function.This function should return the string corresponding to the type name in the configuration file if it detects the document and an empty string for the cases when it is not able to identify the document.

OUString SAL_CALL MSPUBImportFilter::detect(Sequence <PropertyValue> &Descriptor)
{
    OUString sTypeName;
    sal_Int32 nLength = Descriptor.getLength();
    sal_Int32 location = nLength;
    const PropertyValue *pValue = Descriptor.<fontcolor>getConstArray();
    Reference <XInputStream> xInputStream;
    for (sal_Int32 i = 0; i<nLength; ++i)
       if (pValue[i].Name == "TypeName")
            location=i;
       else if (pValue[i].Name == "InputStream")
           pValue[i].Value >>= xInputStream;

As in the filter function we need to extract from the sequence the InputStream that we will examine. There is one difference, we will keep the reference of the TypeName property, so that we can fill it with the name of the type in case we detected it. The detect function should fill the variable sTypeName with the right string in case the detection was successful. And it is in this case that we will specify this information to the Descriptor and return the name of the type.

    if (!sTypeName.isEmpty())
    {
       if (location == Descriptor.getLength())
       {
           Descriptor.realloc(nLength+1);
           Descriptor[location].Name = "TypeName";
       }
       Descriptor[location].Value <<= sTypeName;
    }
    return sTypeName;
}

It would be not true to say that this is all that is needed to integrate a filter into LibreOffice. There are still some ten to fifty lines of code needed for the implementation of the generic UNO boilerplate, an xml file for the UNO component registration during the build and some makefile changes. Nevertheless, those changes are just trivial and can be done by mimicking existing filters like those in the writerperfect module of the LibreOffice code.

Getting involved

Free software is about people and the LibreOffice projects values highly all contributors, regardless of the size of their contribution. The community is thrilled to welcome anybody that wants to lend hand to make the software better. And why not you? If you think that writing filters for LibreOffice is enough fun for you, there are plenty of dedicated developers ready to help you either on the developer list libreoffice@lists.freedesktop.org or on IRC at #libreoffice-dev channel of the Freenode server. Just drop by and we will help you to write your first filter. We guarantee that you will enjoy and stick with the project.

by Fridrich Strba (noreply@blogger.com) at August 16, 2013 04:57 PM

August 15, 2013

Kohei Yoshida

Shared formula to reduce memory usage

This week I have finally finished implementing a true shared formula framework in Calc core which allows Calc to share token array instances between adjacent formula cells if they contain identical set of formula tokens. Since one of the major benefits of sharing formula token arrays is reduced memory footprint, I decided to measure the trend in Calc’s memory usages since 4.0 all the way up to the latest master, to see how much impact this shared formula work has made in Calc’s overall memory footprint.

Test document

Here is the test document I used to measure Calc’s memory usage

shared-formula-memory-test.ods

This ODF spreadsheet document contains 100000 rows of cells in 4 columns of which 399999 are formula cells. Column A contains a series of integers that grow linearly down the column. Here, only the first cell (A1) is a numeric cell while the rest are all formula cells that reference their respective immediate upper cell. Cells in Column B all reference their immediate left in Column A, cells in Column C all reference their immediate left in Column B, and so on. References used in this document are all relative references; no absolute references are used.

Tested builds

I’ve tested a total of 4 builds. One is the 4.0.1 build packaged for openSUSE 11.4 (x64) from the openSUSE repository, one is the 4.0.6 build built from the 4.0 branch, one is the 4.1.1 build built from the 4.1 branch, and the last one is the latest from the master branch. With the exception of the packaged 4.0.1 build, all builds are built locally on my machine running openSUSE 11.4 (x64). Also on the master build, I’ve tested memory usage both with and without shared formulas.

Results

In each tested build, the memory usage was measured by directly opening the test document from the command line and recording the virtual memory usage in GNOME system monitor. After the document was loaded, I allowed for the virtual memory reading to stabilize by waiting several seconds before recording the number. The results are presented graphically in the following chart.

shared-memory-graph

The following table shows the actual numbers recorded.

Build Virtual memory
4.0.1 (packaged by openSUSE) 4.0 GiB
4.0.6 892.1 MiB
4.1.1 858.4 MiB
master (no shared formula) 842.2 MiB
master (shared formula) 763.9 MiB

Additionally, I’ve also measured the number of token array instances between the two master builds (one with shared formula and one without), and the build without shared formula created 399999 token array instances (exactly 4 x 100000 – 1) upon file load, whereas the build with shared formula created only 4 token array instances. This likely accounts for the difference of 78.3 MiB in virtual memory usage between the two builds.

Effect of cell storage rework

One thing worth noting here is that, even without shared formulas, the numbers clearly show a steady decline of Calc’s memory usage from 4.0 to 4.1, and to the current master. While we can’t clearly infer from these numbers alone what caused the memory usage to shrink, I can say with reasonable confidence that the cell storage rework we did during the same period is a significant factor in such memory footprint shrinkage. I won’t go into the details of the cell storage rework here; I’ll reserve that topic for another blog post.

Oh by the way, I have absolutely no idea why the 4.0.1 build packaged from the openSUSE repository shows such high memory usage. To me this looks more like an anomaly, indicative of earlier memory leaks we had later fixed, different custom allocator that only the distro packaged version uses that favors large up-front memory allocation, or anything else I haven’t thought of. Either way, I’m not counting this as something that resulted from any of our improvements we did in Calc core.

by Kohei Yoshida at August 15, 2013 07:37 PM

August 14, 2013

Miklos Vajna

Using a git push tree

I just checked, I created my git push tree more than a year ago, but yesterday I was reminded that this technique isn’t really documented anywhere, so let me describe it.

Some background: for the LibreOffice codebase, we decided to do all micro-features directly on the master branch. This means that we typically rebase our local master branch against origin/master, then push it. The benefit of this is that code gets wider testing quickly and the commit history is not polluted with meaningless merge commits.

The problem: one drawback of the above situation is that after you pull, some changes of other developers in the lower layers may trigger a full rebuild, typically wasting about an hour of your life (or more, in case of slower machines).

Push tree is one hack to avoid this problem. Using a push tree, you have two separate repositories locally, you update your main one less regularly, and when you have a commit to push, you push it from the push tree to be able to avoid pulling in your main tree.

Here is how to do it. To set this up:

git clone --referece /path/to/master ssh://logerrit/core master-push

Then to use it, instead of git pull -r && git push in your master tree, do these:

cd /path/to/master
git show -s <1>
cd /path/to/master-push
git pull -r
git cherry-pick $sha1 <2>
git push
  1. copy the sha1 hash from the output

  2. replace $sha1 with the sha1 hash you got in the previous step

(There is a trick here, given that master-push already references the original tree, you can go ahead with cherry-pick directly, without fetching branches from your master tree.)

And that’s it, you were able to push without waiting for a long rebuild!

Note: of course this technique has some drawbacks as well, so use with care. Keep in mind the followings:

  • If your local master is not up-to-date enough, you’ll get conflicts while cherry-picking. I usually update my master tree once a day in the morning. If you have a slower machine, do it once a week in the night, or so.

  • Even if you don’t get conflicts, there can be cases when the result of the cherry-pick in the push tree won’t be what you want. Chances that this happens is pretty low if your master tree is not super-old, see the previous note.

  • An other non-technical but social reason to still update your master tree regularly is that if everyone uses an infrequently updated master tree, then nobody will fix breakages caused by others on origin/master. So updating your real tree infrequently is a bit unfair to other developers.

Other than these, I can just recommend using a push tree, it helped me many times not to loose focus in the middle of the day. (And as we all know, pushing all your risky changes on Friday afternoon is also a bad idea. :-) )

August 14, 2013 08:14 AM

August 13, 2013

Lanedo

LibreOffice Development Howto

Questions about LibreOffice development efforts or how to implement specific improvements are among the most frequent requests we see at Lanedo. As a result, this LibreOffice development howto summarizes steps and tips to allow everyone interested to easily get involved.…

by Eilidh McAdam at August 13, 2013 05:22 PM

August 10, 2013

Siqi LIU

A slightly flattened version of iOS Impress Remote

+iPad +iOS 5/6

IMG_0020 IMG_0030 IMG_0031 IMG_0023 IMG_0025 IMG_0024 IMG_0026

+iPad +iOS 7
IMG_0023 IMG_0024 IMG_0025 IMG_0026 IMG_0027 IMG_0028

+iPhone +iOS 5/6
Server list page New server config page Slideshow preview page SlideShow page with popover SideBar on SlideShow page SlideShow page with popover App Icon

+iPhone +iOS 7
Server List page New server page Presentation preview page SlideShow page Slideshow page with popover SIdebar on Slideshow page SIdebar on Slideshow page with popover SIdebar on Slideshow page on iPhone5 iOS Simulator Screen shot Aug 10, 2013 12.08.00 AM

This is a tentative design style with the aim to mimic the iOS7 feeling on iOS5/6. This assure a relatively unified experience across different versions of the OS.

This also includes various modifications based on Mirek’s helpful advice!

Any suggestions?

Cheers,
Siqi


by liusiqi43 at August 10, 2013 05:14 AM