BUILDING A LIBREOFFICEDEVELOPMENT TEAM
László Németh
team leader
LibreOffice dev. team
NISZ Zrt., Hungary
nemeth@numbertext.org
TIRANA | 25 September
2018

BUILDING A
LIBREOFFICEDEVELOPMENT TEAM• Gallery of ournice results

Agenda• Our mentoring

program withthe secret sauce;-)KEYWORDS
sustainability
brain gain*
growth mindset* https://en.wikipedia.org/wiki/Human_capital_flightLibreOffice is a GREAT
office suite• Full-featured• Open source• Community-driven

development

UNIQUECOMBO• Cross-platform and online!
• Standard formats• Broad spectrum ofservices: from free TDF
LibreOffice builds to L3
support and private cloudbased solutions fromcertified developers• For public sector, against

WITH
GREAT
SOCIALBENEFITS

monopoly (see Microsoft
scandals in different
countries)• Against social inequality inwealth (freeware builds),
knowledge (open source)
and language (broad l10nsupport)• Against software piracy (seedata & civic, corporate andgovernmental responsibility)• Lots of features• Huge code base

“Anythingthat cango wrong,will gowrong.”• Under active development• By relatively small

developer community(hundreds of code
contributors, but only a few
dozen full-time developers)• New bugs & regressions

Every user needs
continuous,
sustainable LibreOfficedevelopment

Anyone can become a
LibreOffice developer

Build your own
LibreOfficedevelopment team!

Solve your own
problems

Creating a more
powerful developer
community, sharing
the costs and resultsof the development

Increasing
LibreOffice’spopularity, catching
the upward spiralOur team
3 developers, NISZ Zrt., Hungary
3-month trial period from June, 2018
33 fixes (from our selected 300 bugs):

420

9Team leaderBalázs
ÁdámOUR RESULTS

Better interoperability
by bug fixing andworkarounds

No missing e-mails
Blocked e-mails with DOCX export of LO
containing “EMF” metafile images
Bug in LibreOffice file export: automaticand unnecessary renaming of image
extension .emf to .wmf
Solution: keep the original .emf
extension 👉#103913

No table loss by CRs
1981 MS-DOS adopts CR LF line ending
2010 MSO: OOXML gets <w:cr>
201x LO DOCX import: table loss by CRs
2018: fix ooxml/model.xml 👉#118691

Protect our documents“Mark as final”
Basic MSO protection
Custom XML extension
Solution: import/export
pairing of the similar“Open as Read-Only”
document setting ofLibreOffice 👉#107690

No broken forms ...
Before: broken
2-page form

After: correct
1-page form

… by “Auto” margins
Special paragraph margins: do it as MSO
Keeping layout of our forms
Solution: fix import filter 👉#104354
Thanks for the help ofJustin Luth (co-author), Collabora andXisco Faulí (testing and bug reports), TDF

… by bad numbering
tdf#113608 numbering of invisible “w:rless” paragraphs inherited in next tableNo random table header
tdf#64264 DOCX import: fix row countof repeating table header (a typicalproblem of importing joined tables)No broken tables
tdf#58944 handle MSO’s workaround (allrows are headers) for Word’s bug (nonmodifiable header) in LibreOffice, too

Fix Calc→Writer copyWriter copy
Most wanted usability fix (👉108 votes)
Insert Calc data in Writer native texttables cell by cell instead of OLE object
For 1-cell tables: don’t use OLE at all, ie.
neither in normal body text 👉#37223

Track changes &annotations

Fix comment bloatingtdf#105444 new and new empty lines incomments in every import/export cycle

Handle text relocation
Content loss!: reappearing deletion
Tracking loss: unmarked insertion
Solution: w:MoveFrom is deletion, andw:MoveTo is insertion 👉#104797

Fix empty line deletion
tdf#115521 all empty paragraphs of amultiparagraph deletion lose tracking
tdf#119848 change tracking of a singledeleted empty paragraph is removed onsave, if it has no other property changeFix invisible changes
tdf#119019 show deletion and insertion
Tracked paragraph change (numbering)hides content modification. Workaround:
accept style change automatically atchanging of the text of that paragraph.

WYSWYG paragraphs“Show change tracking” mode didn’t
show the style changes after tracked
paragraph join until saving the
document (not an OOXML problem)
tdf#119571 show changes correctlyParagraph deletion
tdf#54819 It wasn’t possible to delete afull paragraph without copying its styleto the next one (bug of change tracking)IMPROVED CHARTSby our novice developers

Save our dashed lines
tdf#108064 OOXML export: keep MSO
preset dashes in charts, instead
exporting solid lines (by Ádám Kovács)

Zeros on the right side
tdf#118705 fix placement of zero datalabel with different column and bar chartsettings (fixed by Balázs Varga)

No distorted charts
tdf#108028 break chart title
automatically instead of distortion of thechart and their titles (by Balázs Varga)

No broken chart bars
Tdf#94502 OOXML: fix overlap export ofstacked bar chart (by Balázs Varga)

Keep custom format
tdf#96469 OOXML: export custom data
point properties (by Balázs Varga)

Other improvements
tdf#119562 Fix export of AutoFit property of shapes
tdf#108078 Export Chart shapes area fill properties
tdf#118651 OOXML ActiveX textbox: fix multiline
tdf#118153 VBA Macro: XLSX in Workbooks.Open
tdf#118127 fix date format duplications in Hungarian locale

MENTORING

LibreOffice bug fixing
is an active andcontinuous learning
process

MENTORING
Learn to self-study
LibreOffice by hacking,active code reading(eg. causing new bugs)
and minor bug fixing

OUR MISSION
Learning LibreOfficeby bug fixing, anddeveloping
competitive features

Elements of mentoringFormal education by a LibreOffice expert
Basics: OOXML/ODF, building, bug fixing &unit testing, Developer’s Guide
Working on real problems, first together,
Later in virtual machine with guidance
Asking help via Telegram and IRC
Motivating (badges, LiboCon etc.)

Learning materials
TDF Wiki pages & Apache OpenOffice.org
materials, and knowledge of the expert(s)Learn UNO via macro programming by using
inspector extensions and reading IDL API
Git repository of LibreOffice is a readable anddocumented collection of sample bug fixes.
Master it for searching and code re-use.
Use opengrok, git, bibisecting, SW_DEBUG,SAL_DEBUG and gdb (for code reading, too)How do I solve it?
Heuristic techniques of LibO development
See How to solve it (by George Pólya, 1945)
1. Understand the interoperability problem: check it indifferent office suites, during import/export cycles,changes in XML content of OOXML or ODF documents,
read related part of the OOXML and ODF standards.
2. Devise and carry out the plan; simplify the test
document also for the unit test; search the related code
parts (opengrok, git, gdb); read it by SAL_DEBUG test
modifications; think of simple workarounds and parallel
solutions for part of the problem; solve it; add unit tests

Experience matters
Help your students by encouraging, code
reading, hints, and code snippets
Mentoring is a learning process for you
Be a pioneer by learning new parts ofLibreOffice during mentoring and later
Plan long-term competitive features andlearn the related parts of LibreOffice
Share and keep your growth mindset

Growth mindset
The power of believing that you canimprove (Carol Dweck)https://www.ted.com/talks/carol_dweck_th
e_power_of_believing_that_you_can_improve
No one understands the whole code, buteveryone would be able to fix bugs, onlywith partial understanding

Gain this partial
understanding!
Test it!

Prepare for learning
There is no prohibited method in problem solving
1 Choose the best: New day is a new challenge; Selfeducation. “So do not fear, for I am with you...” (Isaiah
41:10). “What you aim at determines what you see.”(Jordan Peterson). Trial and error. Learning is an active
process: “You cannot understand a system until you try tochange it” (Kurt Lewin), “There is no royal road togeometry.” (Euclid); Read the code as your own. Practicemakes the master. Go at your own pace; Stay on the golden
middle way; Take a break; Switch task; Ask for help;“Repetitio est mater studiorum”.
2 If it doesn’t work, GOTO 1

SUMMARY• Invest in LibreOffice• Hire an expert (teamor developer):As we didhttps://www.documentfoundation.org/gethelp/developers/• To mentor your team
• By fixing your realproblems

Acknowledgements
Balázs Varga & Ádám Kovács
junior LibreOffice developers of our team
NISZ LibreOffice support team, lead byGábor Kelemen (see his presentations, too)Experts of Collabora Productivity, Red Hat
Linux and TDF, reviewing our bug fixes
LibreOffice users, contributors anddevelopers around the globe