Muhammet Kara LibreOffice Developer Consultant Software Engineer @Collabora Development Workshop
Muhammet KaraLibreOffice DeveloperConsultant Software Engineer @Collabora
Development Workshop
LibreOffice Development Workshop, METU NCC, 2018
Why LibreOffice?
Libre/free, powerfullFun project & fantastic communityLucrative experience11 students @GSoC 2018Various companies, as part of the community
LibreOffice Development Workshop, METU NCC, 2018
Companies/Institutions
CanonicalCIBCollaboraIgaliaRed HatSUSEThe Document FoundationTÜBİTAK ULAKBİMSome Turkish companies
LibreOffice Development Workshop, METU NCC, 2018
Required Skills
Programming
Code reading
Patience
LibreOffice Development Workshop, METU NCC, 2018
Programming
C++ → Main language of core
Python → Testing
Javascript → LO Online
Java, BASIC...
LibreOffice Development Workshop, METU NCC, 2018
Code Reading
Timeline of major StarOffice derivatives
2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 20161996 1997 1998 19991994 19951985 2017 2018
StarOffice 1.0
StarOffice 2.0
StarOffice 3.0
StarOffice 3.1
StarOffice 4.0
StarOffice 5.0
StarOffice 5.1
StarOffice 5.2
StarOffice 6.0
OpenOffice.org 638c
OOo 1.1
ooo-build
NeoOffice 3.1
NeoOffice 3.2
NeoOffice 3.3
NeoOffice 2013
NeoOffice 2014
NeoOffice 2015
LO 3.5
LO 3.4
LO 3.3
LO 3.3b
LO 3.6
LO 4.0
LO 4.1
LO 4.2
LO 4.3
LO 4.4
LO 5.1
LO 5.2
LO 5.0
LibreOffice 5.3
StarOffice 8.0
StarOffice 7.0
OOo 1.0
StarOffice 9.0
OOo 2.0
OOo 2.1
OOo 2.2
OOo 2.3
Oracle OpenOffice
3.3
Apache OpenOffice
3.4AOO 4.0
AOO 4.1
OOo 2.4
OOo 3.0
OOo 3.1
OOo 3.2
OOo 3.3b
WorkPlace 2.6
IBM Symphony 1.0
IBM Symphony 3.0
Go-oo 2.3
Go-oo 2.4
Go-oo 3.0
Go-oo 3.1
Go-OpenOffice 3.2
NeoOffice 2.1
NeoOffice 1.2
NeoOffice 2.2
NeoOffice 3.0
LibreOffice Development Workshop, METU NCC, 2018
Code Reading
LibreOffice Development Workshop, METU NCC, 2018
Patience
Many languages
Hundreds of classes
Complicated relations
Note taking
Logging
Small steps
Asking for help
LibreOffice Development Workshop, METU NCC, 2018
What is where?
C++ code → .cxx, .hxx
Interface designs (XML) → .ui
String literals → .src, .hrc
LibreOffice Development Workshop, METU NCC, 2018
Tools - Offline
IDE/Editor: Vim, emacs, KDevelop, eclipse…
Git, grep → Code management & search
Glade → Interface design
LibreOffice Development Workshop, METU NCC, 2018
Tools - Online
GerritBugzillaTDF WikiOpenGrokCppcheck
http://devcentral.libreoffice.org/
http://devcentral.libreoffice.org/
LibreOffice Development Workshop, METU NCC, 2018
Let’s Start
Get & build the source codeChoose a problem/bug to solveFind the relevant code segmentDig deeperTest the changesSubmit patch
LibreOffice Development Workshop, METU NCC, 2018
Get & Build the Source Code
git clone https://gerrit.libreoffice.org/core libreoffice
sudo apt-get build-dep libreoffice
./autogen.shmake
./instdir/program/soffice
https://www.libreoffice.org/about-us/source-code/
https://www.libreoffice.org/about-us/source-code/
LibreOffice Development Workshop, METU NCC, 2018
IDE Integration
make & make check
make qtcreator-ide-integration
https://wiki.documentfoundation.org/Development/IDE
Code completionGo to definition, find usagesSwitch between header and source easily & quicklyIntegrated debuggingFamilier interface...
https://wiki.documentfoundation.org/Development/IDE
LibreOffice Development Workshop, METU NCC, 2018
Find the Relevant Code Segment
OpenGrok
git grepgit grep “a string on a dialog”
http://docs.libreoffice.org/
E-mail listhttp://lists.freedesktop.org/mailman/listinfo/libreoffice
IRC#libreoffice-dev @ freenode
http://docs.libreoffice.org/http://lists.freedesktop.org/mailman/listinfo/libreoffice
LibreOffice Development Workshop, METU NCC, 2018
Dig deeper...
Enable debugging./autogen.sh –enable-debugmakemake dev-install
Run with GDBcd [lo-root]/install/program. ./ooenvgdb ./soffice.bin(gdb) run
http://www.yolinux.com/TUTORIALS/GDB-Commands.html
http://www.yolinux.com/TUTORIALS/GDB-Commands.html
LibreOffice Development Workshop, METU NCC, 2018
Test the changes
Rebuild a single modulemake [module-name]
Run tests/checksmake check
Run & check manually
LibreOffice Development Workshop, METU NCC, 2018
Submit the Patch
Register on gerrit, and complete the setuphttps://wiki.documentfoundation.org/Development/gerrit
Commit the changesgit commit
Submit to gerrit./logerrit submit master
https://wiki.documentfoundation.org/Development/gerrit
LibreOffice Development Workshop, METU NCC, 2018
More...
http://www.libreoffice.org/community/developers/
http://www.libreoffice.org/community/developers/
LibreOffice Development Workshop, METU NCC, 2018
LibreOffice is being developed, improved, and distributed by a world-wide community of volunteers (individuals & companies).You can also join the LibreOffice project as a:
DeveloperTesterTranslatorSupport volunteerDesignerMarketer…
www.libreoffice.org.tr
Community
LibreOffice Development Workshop, METU NCC, 2018
LibreOffice Development Workshop, METU NCC, 2018
All text and image content in this document is licensed under the Creative Commons Attribution-Share Alike 3.0 License (unless otherwise specified). "LibreOffice" and "The Document Foundation" are registered trademarks. Their respective logos and icons are subject to international copyright laws. The use of these therefore is subject to the trademark policy.
Thank you!https://muhammetkara.com
[email protected]@collabora.com
@muhamm3tkara
http://libreoffice.orghttps://wiki.documentfoundation.org/Developmenthttp://www.gnome.org/~michael/blog/http://www.lanedo.com/libreoffice-development-howto/
References
http://creativecommons.org/licenses/by-sa/3.0/http://wiki.documentfoundation.org/TradeMark_Policyhttps://muhammetkara.com/mailto:[email protected]:[email protected]://libreoffice.org/https://wiki.documentfoundation.org/Developmenthttp://www.gnome.org/~michael/blog/http://www.lanedo.com/libreoffice-development-howto/
First Slide ExampleDefault ExampleShapesSlide 4Slide 5Slide 6Slide 7Slide 8Slide 9Slide 10Slide 11Slide 12Slide 13Slide 14Slide 15Slide 16Slide 17Slide 18Slide 19Slide 20Slide 21Final Slide Example