LibreOffice Weekly News #2

From The Document Foundation Wiki
Jump to: navigation, search

LibreOffice Weekly News gathers interesting developments from discussions on mailing lists and IRC, updates in QA and git commits, and combines them into a tidy publication at the end of each week. This summary will emphasize a developer's point of view. This week in LibreOffice...

LibreOffice Weekly News #2
← previous - next →
Publication Date 2014-06-21
Editor William Gathoye (wget)

Releases

This week, we released:

  • LibreOffice 4.2.5, fixing over 150 bugs and regressions over our previous release[1];
  • The first release candidate of LibreOffice 4.3[2];

Aside these software releases, we have also seen a great one from a team most of us tend to forget: the Documentation team. Indeed, the Documentation for the LibreOffice 4.2 branch has been fully completed and has been released[3]. Great news for people who intent to evaluate the possibility to migrate from proprietary Office suites to LibreOffice and see if alternative features are available and how to use them.

GUI

UI glade dialogs

The conversion towards the .ui glade dialogs is still continuing (thanks Mihály Palenik!) [4][5][6][7].

Do not forget we have two GSoC students (Mihály Palenik and Szymon Kłos) in charge of the dialog widget conversion too[8]. LibreOffice will use even more .ui dialog in the future.

Non printable characters color

It has been discussed to add the ability to select the color of non printable characters, since the light blue color, which is currently used, is too difficult to be read when using a white page (the most common configuration)[9]. Since LibreOffice 4.3 UI is freezed, it should be added to 4.4, and definitely considered as an easy[10].

License and FOSS

LibreOffice has been mentioned in Fortune[11], the business magazine published by Time Inc, editor of the famous TIME magazine. A LibreOffice contributor reacted on the mailing list[12] to clarify the situation: patent and copyrights are 2 different concepts. Even if LibreOffice is a FOSS like many similar projects, it is still copyrighted, but is not patented.

Code base evolution

JDK

Fix the JDK dependency on OS X for Rhino[13][14], a FOSS implementation of Javascript written in Java[15] (thanks Robert Antoni Buj i Gelonch). JDK > 1.6 and JDK 1.8 can now be used on OS X.

If you wonder where such a Javascript implementation would be needed: for UNO bridges. See this article to know more about UNO bridges[16].

Copy-paste code detector

Last week, we spoke about a copy-paste code detector. Now we are beginning to have some great results from that tool. Duplicated code has been found and will be merged[17].

Access2Base

The discussion about Access2Base has made no progress this week, because the discussion on the mailing list has turned into a bunch of strong arguments about this question should we let Access2Base be upgraded 'outside-of-cycle' by the administrator, but in that case LibreOffice internals have to be overridden by the user (or administrators), this could make the install instable or even worse bypass password protected files, yes but we can anyway override any part by overriding the LD_PRELOAD environment variable,... blablabla. The main discussion is basically now should we let the user screw up this computer or not. Nothing new then regarding last week, the decision is still the same Access2Base will be bundled with LibreOffice as an extension that could be overridden. This override will stay the only exception.

We should revert the exception, Access2Base doesn't need to be released quick. (Julien Nabet)

LibreOffice UNO interface

According to the question asked by Lionel Elie Mamane, the LibreOffice UNO interface[18] is really badly typed, the pointers always need to be casted to be dereferenced. With his work, the code will be easier readable, by removing all this dynamic cast, NULL pointer check, and avoid generic pointers to be exception safe[19].

Plugin NPAPI drop

The NPAPI LibreOffice plugins is used by less than 5\% of our current user base, we need to have more accurate statistics about this subject. In the future, this number will still be reduced: all current browsers tend to block them by default, unless the user click on the content to play the plugin.

Currently, there is no alternative to the NPAPI plugin. "We have confirmed that PPAPI will not work because while Chrome supports it they don't provide any way for third parties to install PPAPI plugins. The only method of doing so involves a command-line argument, which is unsuitable for most purposes[20]."

Last week, we announced the NPAPI support has been dropped from LibreOffice. Currently, it will still be present in 4.3, but not in 4.4.

LibreOffice requires the NPAPI for 2 features:

  • to be able to read LibreOffice documents into a web browser itself;
  • read embedded Flash content into Impress presentations.

For this last feature, LibreOffice might not drop the NPAPI after all. This has not been decided yet and the decision is still open.

As a workaround to still provide the first feature, if the NPAPI would come to really disappear for 4.4, the idea to reuse the LibreOffice Online project has been brought to the table, but nothing more.

Comment translations

About the translation of German comments to English, we saw some great progress here too[21][22]. Thanks Philipp Weissenbacher!

Build environment

Cross-compilation

You might wonder how LibreOffice is cross-compiled for all majors OS? I asked this question on IRC, since the Wiki is not enough complete on this regard.

(2014-06-11 17:33:39) cloph: wget: windows builds for 4.2 and below are done on Windows Server 2008R2 with Visual Studio 2010, for 4.3 and later it is Windows Server 2012 with Visual Studio 2012. Mac OSX release builds are done on Mac OSX 10.6, with xcode 3.something, and Linux builds are done on CentOS 5.10 (with gcc 4.4)

Build on Windows

According to the reaction we had on the mailing list, building LibreOffice with Visual Studio for contributors who are unfamiliar with Linux isn't as straightforward as we can think[23]. After a look at the wiki, we can understand this contributor's disarray: the Build on Windows article[24] is split in several parts and doesn't take the newcomer by the hand. We should rewrite it. Help is welcome on this topic.

MinGW port

The MinGW port of LibreOffice is now dead[25], the only way to generate LibreOffice builds for Windows is to compile it on Windows itself using the Visual C++ compiler from Visual Studio (at least 2010). Yet another reason why upgrading the #Build on Windows Windows build instruction on the wiki is so important.

Reduce compilation time on Windows

Last week, we talked about the possibility to reduce compilation time on Windows. Several solutions have been proposed MinGW, GnuWin32, busybox, keep Cygwin and use a more native gmake utility provided by GnuWin32, or use MSYS.

This week, Michael Stahl made some MSYS tests. His first feelings about it are quite off-putting: this is quite different from Cygwin and he has some huge problems with paths. These paths were making the first step of the compilation, the autogen.sh file, hang[26].

Other

DEVONThink plugin

An user has reported that LibreOffice couldn't work with DEVONThink, a FOSS document organizer and previewer for OS X, while other old branches of LibreOffice (OO.o and NeoOffice) were able to do so. Is seems like the reason comes from the removal of a quicklook plugin into LibreOffice. The seldom bugs found Bugzilla did not come in handy this time[27].

Assertions and invariance

Florian Reisinger wrote a trivial document explaining why assertions (which could be used in unit tests) are so much important to avoid and detect bugs. He gave the example of a linked list. To manipulate this list, we have methods like addElement.

Three conditions are playing a role in a method: the precondition (the input), the postcondition (output) and the invariance. Invariance is typically what should be valid at the beginning and at the end of the method. Invariance is playing a huge role in this bug hunting context. These 2 locations (begin and end of method) will be used to put an assert and detect if an error occurred.

In this example, if the linked list had 9 elements, after we called the method, the list should have still 9 elements (if the argument was invalid for example; in Object-Oriented Programming, object's methods must check inputs to protect the object integrity, see encapsulation) or more element, otherwise, something goes wrong[28].

QA - Quality Assurance

Bug hunting

A first round of bug hunting has been organized before the beta of LibreOffice 4.3. As the latter is now out, a new bug hunting session will be held before the first release candidate gets released. To get involved, just play with a pre-release builds you can install from here[29]. ``If you detects a bug, just report it on the \hyperref[bugTracker]bug tracker[30][31].

You can also join our webchat, 15 contributors are able to help you report bugs, please join us NOW![32]

Profiling

Matus published a spreadsheet of the evolution of the time it takes for LibreOffice to import/export some test documents over the time of development. As we interpret the graph, we see that we gained some time over the past few months then lost it again. Let's fix that for 4.3.[33]

GSoC

For all Google Summer of Code projects that have been accepted by Google, please read the Google Melange website[34].

The mid-term evaluation will be held on next week. (Cedric Bosdonnat)

(If we had to evaluate mentors too, Cedric was definitely ahead of schedule ;-) [35])

Improvements to the Template manager (Efe Gürkan YALAMAN

Basically the template manager is moved to the start center. For more technical information, please read there [36].

Dialog Widget Conversion (Mihály Palenik and Szymon Kłos)

This project is basically converting the remaining .src files using fixed sizes and positions into the new .ui Glade format. Last week, some progress has been made on this subject: RID_SANE_DIALOG, GRID_DIALOG, RID_DLG_MAPPING RID_FORMULADLG_FORMULA and RID_SVXDLG_NEWHYPERLINK are now converted[37].

Improved Color Selection (Krisztian Pinter)

The work on this topic has just started a week ago. The first step consists of having the colors of the currently opened document available as a color palette.

Unlike what was written in the task description, the methods from SvxColorDockingWindow[38] are not called when clicking the color toolbar. Instead the SvxColorToolBoxControl[39] and SvxLineColorToolBoxControl methods are called when the color toolbar is used in Writer[40].

The code of the color floating window SvxColorWindow_Impl can be found in the tbcontrl.cxx file. It sets the palette in the ctor, and also receives palette changes via UNO using .uno:ColorTableState/SID_COLOR_TABLE. Most of the sidebar color pickers (except the ones from the Character panel) are actually using a different code that can be found at svx/source/sidebar/tools/ColorControl.cxx.

Calc / Impress tiled rendering support (Andrzej Hunt)

We talked about this subject on the last LOWN edition. If you still don't know what tiled rendering is about, please read LOWN 1. The tiled rendering tool is called LibreOfficeKit. This is a GTK widget which call liblibreoffice to parse documents. This widget could be used to preview all LibreOffice supported files in other applications like Evince or Okular. The latter aims to become an all-in-one previewer like Aperçu on OS X. Okular could drop its not so well working code and rely on a well-tried code for the future: LibreOfficeKit[41][42].

Refactor god objects (Valentin)

Weekly report -> refactored IDocumentTimerAccess and IDocumentLinksAdministrator out of SwDoc and pushed to master.

Improve Usability of Personas (Rachit Gupta)

What has been achieved this week[43]:

  • The complete theme is downloaded in a separate folder, allowing multiple themes to be stored in the system.
  • As promised last week, the header and footer files of the selected theme are now downloaded in a separate thread. The UI is now no more blocked.
  • Fixed many bugs introduced by the code.
  • Added error messages in case anything goes wrong (no Internet or no results)

What will be on focus for the coming weeks will be:

  • Terminating the transfer if the user clicks on Cancel while the theme is downloading.
  • Improving the performance so the search results are shown quickly.

Enhancing text frames in Draw (Matteo Campanelli)

Last week, the focus has been on exploring the problems related with finding the source of the issue for the text background color not working in non-edit mode. Currently the problem has been identified in the drawinglayer module[44].

The main task of this week is closing the subgoals in the thread cited above, thus getting solid text background working also in non-edit mode.[45]

Connection to SharePoint and Microsoft OneDrive (Mihai Varga)

Last week, Michai has worked on OneDrive folder and file representation. He is now working on the implementation.[46]

Hackfests and conferences

Paris Hackfest

The Paris hackfest (Montreuil) will be hold on June 27-28th (thanks again Charles-H Schultz and Sophie Gautier), please add yourself to the wiki if you want to participate[47].

Toulouse Hackfest

As Toulouse has been confirmed to hold a hackfest on November 15-16th (thanks again Arnaud Versini), as for all hackfests, attenders are asked to add themselves on the wiki[48].

LibO Conf

The call for the next LibreOffice Conference location for 2015 will be closed by the end of the month, don't miss it, send your proposal now! (Sophie Gautier) [49]

Linux.conf.au

In 2015 linux.conf.au will be held 12-16 January in Auckland, New Zealand, at the University of Auckland Business School.

Last week, we said LibreOffice will not have a dedicated booth during the conference itself, but only one on the open day[50]. If you can attend and want to, by your relations and influence, make LibreOffice presence shine for this event, please show yourself now. The call for Proposals opened on 9 June 2014 and will close on 13 July 2014[51].

UX / Design team

The UX chat have been quite unproductive lately, seeing the number of contributors decreasing over time: weekly design meetings became 14 days meeting, and now monthly. According to the current few contributors, the lack of motivation might have a huge factor and is the main reason why contributors are leaving out the design ship. This lack of interest has led to the need of a massive reorganisation of the design team.

For a common contributor, the purpose of a design team should be: be at the service of the whole community when the latter needs a new design for the website and online developers instances (gerrit, wiki,...), event banners for the website and social networks, and be be the leader on the UX side. UI implementations made by developers should be approved by the UX team first. All the aforementioned tasks are the usual work of a design team, at least in a corporate environment.

In the LibreOffice community and, a fortiori, in the Document Foundation, the design team was not in charge of the current website redesign, nor the developer web tool instances. The website is currently managed by 2 contracted companies: a French one for the website specification and an Italian for the design (maybe we do not have enough web skilled profiles into the design team, this should explain this decision). The web instances are managed by the infrastructure team. The UX is not playing a leading role[52], the UI will be designed most of the time according to what the developer coding the UI at that time has in head. When a mockup is designed, it is, broadly speaking, quite well respected[53]. Currently the design team is mostly focusing on user interface tests and design.

When the design team has a simple wish to implement, most of the time, she got no positive answer[54] or no answer at all from the developer team. Such wishes are often let open or marked as WONTFIX until someone fix it by himself. Some bugs are considered as easy hacks[55]. Easy hacks are quite easy starting points for junior developers joining the project.

In order for the design team to have a more important role, a reorganisation is vital. Mirek, one of the yet active design contributor, proposed the following organisation in a dictatorial way, the commitee solution does not work: integration of software cannot be achieved by committee, where everyone has to put in their own additions (featuritis again). It must be controlled by dictatorial artists with full say on the final cut.

The proposed solution is having the following leaders:

*  UX lead
*  Visual design lead
*  User testing lead

For more description about each task, read the main thread[56]. If you are interested, please apply!

The design team could also devided into 2 main parts: one for the UX and another for the marketing/banner/website part[57].

Users

This week we saw a rather quite large discussion on the user mailing list regarding the ability to launch a presentation as an executable. The user asking this question wanted to make a presentation on the school computers which do not allow any software installation.

The solution we had was to use a portable LibreOffice version[58] which does not require any installation at all, and which could be easily brought along on a USB thumb drive.

During that discussion which digressed to ODF viewers, since ODF fat-client[59] viewers[60] are quite outdated (2006!)[61], Florian Reisinger came with an idea of a web based viewer (with editor capabilities) : WebODF. Using such online and self-hosted solution, since it is a tiny Javascript file, would be great in this use case: no installation required, no need to handle administration policies, you just need web browser.

Even more interesting in comparison to fat-clients, if your presentation has videos in it, just use a container like Webm or MP4 with supported codec for your videos. These are supported nowadays by all recent browsers. No need to check if your platform will be able to play your video, depending of the backend used (do you remember that bug with Gstreamer on Linux?[62][63]).

  1. http://blog.documentfoundation.org/2014/06/20/libreoffice-4-2-5-hits-the-marketplace/
  2. http://lists.freedesktop.org/archives/libreoffice/2014-June/061919.html
  3. http://listarchives.libreoffice.org/global/documentation/msg17353.html
  4. https://gerrit.libreoffice.org/#/c/9696/
  5. https://gerrit.libreoffice.org/#/c/9696/
  6. https://gerrit.libreoffice.org/#/c/9779/
  7. https://gerrit.libreoffice.org/#/c/9834/
  8. https://www.google-melange.com/gsoc/project/details/google/gsoc2014/sk94/5685265389584384
  9. http://listarchives.libreoffice.org/global/design/msg06643.html
  10. http://listarchives.libreoffice.org/global/design/msg06646.html
  11. http://fortune.com/2014/06/13/the-one-asterisk-on-teslas-patent-giveaway/
  12. http://listarchives.libreoffice.org/global/marketing/msg16993.html
  13. https://gerrit.libreoffice.org/#/c/9784/
  14. https://gerrit.libreoffice.org/#/c/9785/
  15. https://developer.mozilla.org/en-US/docs/Mozilla/Projects/Rhino
  16. https://wiki.openoffice.org/wiki/Uno/Article/About_Bridges
  17. tdf#39593
  18. Universal Network Objects Wikipedia logo v3.svg
  19. http://lists.freedesktop.org/archives/libreoffice/2014-June/061898.html
  20. http://www.firebreath.org/display/documentation/Browser+Plugins+in+a+post-NPAPI+world
  21. https://gerrit.libreoffice.org/#/c/9831/
  22. https://gerrit.libreoffice.org/#/c/9832/
  23. http://lists.freedesktop.org/archives/libreoffice/2014-June/061877.html
  24. https://wiki.documentfoundation.org/Development/BuildingOnWindows
  25. tdf#41883
  26. http://lists.freedesktop.org/archives/libreoffice/2014-June/061852.html
  27. http://listarchives.libreoffice.org/global/users/msg39426.html
  28. http://flosmind.wordpress.com/2014/06/15/assertion-errors-not-only-for-devs/
  29. http://lists.freedesktop.org/archives/libreoffice/2014-June/061857.html
  30. http://listarchives.documentfoundation.org/www/announce/msg00192.html
  31. http://webchat.freenode.net/?channels=libreoffice-qa
  32. http://lists.freedesktop.org/archives/libreoffice/2014-June/061890.html
  33. http://lists.freedesktop.org/archives/libreoffice/2014-June/061875.html
  34. http://lists.freedesktop.org/archives/libreoffice/2014-June/061809.html
  35. http://lists.freedesktop.org/archives/libreoffice/2014-June/061840.html
  36. http://opengrok.libreoffice.org/xref/core/svx/source/tbxctrls/colrctrl.cxx
  37. http://opengrok.libreoffice.org/xref/core/svx/source/tbxctrls/tbcontrl.cxx#2315
  38. http://lists.freedesktop.org/archives/libreoffice/2014-June/061841.html
  39. http://www.ahunt.org/2014/06/libreofficekit-gtk-viewer-widget/
  40. http://lists.freedesktop.org/archives/libreoffice/2014-June/061853.html
  41. http://lists.freedesktop.org/archives/libreoffice/2014-June/061854.html
  42. http://lists.freedesktop.org/archives/libreoffice/2014-June/061806.html
  43. http://lists.freedesktop.org/archives/libreoffice/2014-June/061849.html
  44. http://lists.freedesktop.org/archives/libreoffice/2014-June/061848.html
  45. https://wiki.documentfoundation.org/Hackfest/Paris2014 Cite error: Invalid <ref> tag; name "parisHackfestWiki" defined multiple times with different content
  46. https://wiki.documentfoundation.org/Hackfest/Toulouse2014
  47. http://listarchives.libreoffice.org/global/marketing/msg17001.html
  48. http://listarchives.libreoffice.org/global/marketing/msg16979.html
  49. http://listarchives.libreoffice.org/global/marketing/msg16979.html
  50. http://nabble.documentfoundation.org/Welcome-graphics-for-the-Startcenter-in-4-2-td4077497i20.html#a4079836
  51. https://wiki.documentfoundation.org/Design/Whiteboards/Start_Center#Mockups
  52. tdf#80054
  53. https://wiki.documentfoundation.org/Development/Easy_Hacks#Welcome
  54. http://listarchives.libreoffice.org/global/design/msg06657.html
  55. http://listarchives.libreoffice.org/global/design/msg06660.html
  56. https://www.libreoffice.org/download/portable-versions/
  57. Fat client Wikipedia logo v3.svg
  58. http://opendocumentfellowship.com/odfviewer
  59. https://code.google.com/p/odfviewer/downloads/list
  60. http://lists.freedesktop.org/archives/libreoffice/2014-June/061593.html
  61. http://listarchives.libreoffice.org/global/users/msg39480.html