trusty old horses

Will you still need me, will you still feed me
When I’m sixty-four?
— When I’m sixty-four,  Sgt. Pepper’s Lonely Hearts Club Band, The Beatles

So almost six years ago I started using my LibreOffice development rig “Big Bertha”. Back then I thought: “This likely will be my last big machine, the next time I wont buy anything for under my desk, I will just build in the cloud.”. Six years on, that is partially true: I did not buy a new “desktop” machine. On the other hand, I am not building on some cloud machine either: I still use good old Bertha. So, why that?

For one, the speed of processors stopped improving at the insane rate it had before, so indeed machines that one buys today are not that much faster than those six years ago. However, cloud computing prices also stopped dropping like they used to. Which leaves me with not much reasons to buy new hardware — but also with little reason to consider to accept the additional inconveniences that come with building on remote hardware.

In 2012, the fastest build of a then-master checkout of LibreOffice from scratch and without caches I got out of Big Bertha was in ~18 minutes. I have not tried it again with present day LibreOffice — I assume it to be quite a bit slower, if only because e.g. we added tests left and right. But still: the old machine under the desk is still competing. A look at the numbers: A c4.8xlarge “compute-optizimed” instance on EC2 promises 36 vCPUs and 60GiB of memory. Now those 36 cores might be faster than those on the old Opteron 6272s I am running on. But I assume not much: CPUs really did not get much faster in the last six years — especially for workloads like compiling LibreOffice. For the most part they got better in other ways though: they use less power and push out less heat. So in the end the two Opteron 6272 with 32GB are likely still competing quite well with the stuff available from cloud providers.

So, why am I posting this? Buying a modern Server CPU still costs a fortune: a 16-core AMD Epyc 7281 costs 672 EUR at the time of posting. A new full machine with two of those comparable to Big Bertha will cost 2000-3000 EUR. Everybody loves AMDs Epycs apparently. But this challenge is also an opportunity: If one does not buy new hardware. Looking for “Opteron 6272” and “Opteron 6276” I found full systems available for 410 USD or even a 64-core, 256MB RAM system for 999 USD. These systems might be making too much heat and eating too much electricity: When I measured Bertha back in the day, compiling used ~400 Watt. At local electricity prices of 0.30 EUR/KWh that is 0.12 EUR per hour. Even if the c4.8xlarge on EC2 might be a bit faster, it still costs 10x as much. One should not make decisions without measuring, but its unlikely to be that much faster.

So I guess Im saying: If your LibreOffice build is too slow, have a look at the results on ebay for “opteron 6272” or “opteron 6276”. Those beasts might have served their time in the datacenter, but they may still be a steal for LibreOffice development. Or at least they should be worth a consideration …

Getting Started With LibreOffice Development: Object-oriented Programming and C++ Introductions

Turned around and found the right line

— No Leaf Clover, Metallica

So, for getting started with LibreOffice development e.g. with an EasyHack four things are needed:

  • Understanding of Object Oriented Programming
  • C++ Language Fundamentals
  • Completing a Build from Scratch of LibreOffice master
  • Understanding git and gerrit to submit your changes

We traditionally have covered the latter two quite well in our Wiki:

However, we did not have hints on where to find good documentation on object oriented programming in general and modern C++ programming. At most universities these days programming is taught with Java, JavaScript and Python, which leaves a missing piece on getting started with C++ programming. So Eike and me started looking for good resources on these topics too. Here is what we added to the General Programming Guidelines:

The OOP books are using Java as reference language, but they do not get lost in language details and intentionally allow using the concepts on other languages like C++. The university lecture starts off expecting basic knowledge of programming (e.g. in Java/JavaScript) so both together should yield a reasonable coverage of what is needed for your first EasyHacks.

Finding a good and modern starting point for C++ development was by far the hardest topic to cover of those named above. However, looking for them prompted Eike to dig out his personal “developer bookmarks” — a treasure trove that I will keep exploring further for other good content (this is where the “C++ Annotations” link came from).

 

P.S. As a sidenote and additional motivation: All those books — but especially “Head First: Design Patterns” should provide the context to understand many of the in-jokes found on the oldest wiki ever, the C2 WikiWikiWeb which can be an quite entertaining read once in a while.