Stuff Michael Meeks is doing | |
This is my (in)activity log. You might like to visit Collabora Productivity a subsidiary of Collabora focusing on LibreOffice support and services for whom I work. Also if you have the time to read this sort of stuff you could enlighten yourself by going to Unraveling Wittgenstein's net or if you are feeling objectionable perhaps here. Failing that, there are all manner of interesting things to read on the LibreOffice Planet news feed. Older items: 2023: ( J F M A M J ), 2022: ( J F M A M J J A S O N D ), 2021, 2019, 2018, 2017, 2016, 2015, 2014, 2013, 2012, 2011, 2010, 2009, 2009, 2008, 2007, 2006, 2005, 2004, 2003, 2002, 2001, 2000, 1999, legacy html
- Mail chew in the morning; thankfully a quiet time over Xmas. Chewed some minor OpenGL issues, implemented invert50 to fix an issue, and added some vcldemo code for that on the way to Bruce & Anne's in the car. Had some lovely meals, and fine time with B&A.
- Up; chewed through some old financial records with J. looked into setting up a SIPP variously. Double checked my Intel / GL driver fix. Indeed the old apitrace succeeds perfectly with the new driver. Caught up with the blog. Watched Hobbit #3 with the babes.
- A lazy day; slugged and read Adventues in Realtime at some length; had a walk on the race-course; watched The Hobbit #2. Pizza for tea, bed.
- Up lateish; slugging, played games, lunch. Bid a sad 'bye to R & A. M&D etc. watched The Hobbit #1. Bed.
- Went for a walk in the morning all together, to Lackford Lakes - got soaking wet; very English weather. Back for lunch & mulled wine. Played new games - Rapidough, Smash-Up etc. with T&B. on skype.
- Stayed up late chatting, played 'Family Row' with T& B too much fun.
- Late breakfast, out for a walk along an ancient Anglo-Saxon dyke nearby with the babes, had great fun swinging from a tree there too. Back for snacks, Amelia & Robert arrived later - lovely to see them; lunch, and presents.
- Somehow the babes got nerf-guns that turn into hand-bags from R. & A. - spent a while trying to persuade them not to look down the barrel, fire them at people etc.
- Watched Mystery Men in the evening, silly but reasonably family friendly.
- Up early; tidied kitchen a little, out to NCC for a quick Christmas day service. Helped variously with preparation. Bruce & Anne arrived. A lovely turkey feast, fine company, present un-wrapping; and a relaxing afternoon. Babes played some carols for the Grandparents.
- Watched The Prince & Me 4 in the evening, put babes to bed; stayed up late chatting, and getting to know A. a bit better.
- Up lateish; tried to recover giblets from M&S Turkey that arrived with them missing; checked butchers with Fathaer in town instead - a giblet free zone "I'd use Bisto myself" (said the butcher); heh. Home.
- Short walk onto the heath with various babes; Mum took H. and M. to crib-service; poured over API trace / GL output; finally upgraded the Intel GL driver - suddenly no problem; what a waste of time; phew.
- Mail chew; babes out skating, plugged away at GL vileness, unbelievable - failure (after considerable use) of
glBindFramebuffer - apitrace's that run nicely on AMD, but fail hard on windows/Intel no discernable reason; the deep joy of proprietary binary drivers, and a horribly designed and under-constrained GL API. - Parents over in the evening, good to catch up with them.
- Early partner call, into Cambridge with the babes - dropped at the Fitz for sketching; caught up with those still in the office. Set too debugging GL horrors on an Intel machine that finally fails.
- Mail chew; admin, partner call, tried to get to some more GL debugging done.
- Up early; mail chew, and some more - 1:1's with Andras & Kendy, poked at some Pivot import performance issues.
- Managed to push last week's ESC minutes as a future blog entry somehow; apologies for the noise etc. seems difficult to remove it from planet aggregators once it has arrived; annoyingly.
- Up earlyish; out to practice & play at NCC in the band. Back for a quick lunch.
- Into Bury St-Edmonds with four small girls to play at the Apex in the West Road Church Christmas Carols. Long practices through the afternoon, girls very taken with their first largish orchestral experience; concert in the evening - fun. Interested to play next-to Ruth Hole from the GB Junior Dressage team.
- Up late; wandered the house mending things - water-butt seal, trickle (gush?) vent on kitchen window etc.
- Out to visit Martin, Mary-Anne & daughters for a fine tea & time of fellowship, lovely.
- Mail chew, hopefully a final interview for LibreOffice documentation lead. Got my HD3000 setup with the latest GL drivers, still can't reproduce odd crashing issue; annoying. Chat with Mihai.
- Lunch. Anglian Water sent an engineer around to save us money; won several new brass fittings from him; lets see.
- H. home - disassembled old DVD player to play with the pieces; fun.
- Up early; mail chew; merged a patch; chunk of admin.
- Interested by the SJW discusion, and amazed to find myself with some things to agree with Eric Raymond about. Now that's unusual. Unfortunately - I also have some sympathy for the Contributor Covenant: people shouldn't be abused and harassed and the whole world should be a pleasant place to interact. The covenant is also unusually good for not including "giving offense" as a cause for action, that's some real progress. I agree with Bradley that Social Justice seems like an important goal to fight for; me too. My problem is primarily around enforcement of what look like common-sense rules. To Matthew Garrett (and other Geek Feminists) this appears to mean enforcing a glass-ceiling for Christians (and other small c conservatives) in Free Software and business. A ceiling based, not on their contributions or on anything they do in the project - but based exclusively on their personal ethical stance and its outworking. ie. "they disagree with me on (insert topic), so they should never have a position of authority". Is that Social Justice ? - perhaps. What gets to me though is the application of that: cheering on and justifying internet mobs attacking those with different views and driving them from their jobs. That is what really worries me. Eric captures this risk rather well I think. Sadly, the structures to ensure justice that we setup, can be and often are perveted to create injustice: part of the human condition. When it comes down to decisions that profoundly impact people's livelihoods - knowing that there is a fair, reasonable, balanced, compassionate approach to project discipline, removed from the heat of the moment is vital. It is on this basis that Eric also ironically fails: his call to eject or shun SJWs is also not the solution; indeed it looks like a mirror image of the basic problem (surely) ? I'd want to treat SJWs contributions like anyone else's, and to treat them with respect, and to try to winsomely persuade them that meritocracy as well as a pleasant working culture is actually a good and just goal. Anyhow, I'd like to hope that whatever a SJWs views, we can be friends and work together (I have lots of respect for several people with that worldview, not just Matthew ) - work together without polarising and excluding anyone; I certainly value interacting with their viewpoint. My hope is that we can remove the blatant personal attacks on both sides.
- Drove into Cambridge to pick up some awkward hardware - to unwind exactly what is going on with GL on Windows / HD 3000. Home; installed Windows.
- Mail chew; more mail chew. Wrote a Linux Format column on the awesome work from AMD open-sourcing huge chunks of their driver and developer stack as GPUopen - looking forward to seeing, and using the code.
- Paperwork for vendor setup; built ESC bug stats; sorted out my Linux Weekly News subscription.
- Out to hear H. play in the Soham Village College Christmas concert in Ely Cathedral; lovely. Met Loraine & Martin too.
- Up early; plugged away at E-mail, marketing bits etc. Booked FOSDEM 2016 travel, looking forward to it.
- James and Kate over for dinner, really lovely to see them.
Today we release an easy way to get stuck into playing with LibreOffice online alongside ownCloud - please do checkout the CODE page and have a play. The purpose of my blog here is to credit the people involved in the development so far: currently all of the core work is by Collabora - that's something we hope that making it easier to get involved will improve.
Some background
The history of the code we're showing today goes a long way back, but the specific pieces necessary for this work are rather newer. The initial work done around adapting LibreOfficeKit to implement tiled viewing of documents (for Android) whereby LibreOffice provides a simple API to produce pixels from abstract document regions was implemented by a Smoose and Collabora partnership.
Follow-on work to get basic editing functionality exposed via the LibreOfficeKit API was funded by The Document Foundation - which enabled basic editing on Android.
Then, after a hiatus, IceWarp weighed in and invested in the implementation of LibreOffice Online with Collabora; huge cudos to them. Its great to work alongside them.
Naturally a fundamental piece of bringing LibreOffice to the web, is LibreOffice itself. Many thanks to all those who have contributed to making it the success it is today.
Hard work from many Collaborans
Having credited those funding and investing in the work alongside Collabora, its well worth calling out the engineers that put their sweat and tears (hopefully no blood) into the work. Splitting down who did what here is somewhat complicated, since there are four main pieces, and some of the work overlaps several of these, but lets try; unless stated all the work is from Collabora:
Web Services Daemon
- The initial bootstrapping and creation of the fundamental pieces here: The initial creation of the webservice daemon, socket connection management (Tor Lillqvist)
- Tile cache (Tor Lillqvist)
- Save As (Tor Lillqvist)
- lokitclient test app (Tor Lillqvist)
- chroot build scripts & debugging (Tor Lillqvist, Jan Holesovsky)
- Pre-forking support for session processes (Tor Lillqvist)
- Web Service Daemon HTTP POST API "convert-to" for arbitrary document-conversion (Miklos Vajna)
- Initial testing framework (Miklos Vajna)
- Improved capability management (Tor Lillqvist)
- OS/X prototype port (Tor Lillqvist)
- Tile invalidation & cache management (Tor Lillqvist)
- systemd service descriptions (Tor Lillqvist)
- Two-level tile cache (Jan Holesovsky)
- Debugging tooling (Tor Lillqvist, Henry Castro)
- Return results from UNO commands (Jan Holesovsky)
- MessageQueue profiling and time-stamping (Jan Holesovsky)
- Fixes for new Cairo format basebmp (Caolán McNamara of RedHat)
- Signal handling & graceful shutdown (Henry Castro)
LibreOfficeKit
This API is provided by the LibreOffice core, and is used by both Android, LibreOffice Online, and GNOME Documents to do both tiled rendering and adding editing support.
- Writer tiled rendering (Jan Holesovsky, Tor Lillqvist)
- Impress tiled rendering (Andrzej Hunt)
- Calc tiled rendering (Kohei Yoshida, Jan Holesovsky, Henry Castro)
- Writer and Impress tiled editing (Miklos Vajna)
- Calc tiled editing (Jan Holesovsky, Henry Castro)
- UNO command arguments handling: JSON to property values (Miklos Vajna)
- Writer tiled rendering of comments/postits/annotations (Miklos Vajna)
- Make LibreOfficeKit work with libmerged (Matus Kukan)
JavaScript / leaflet
- Initial adaptation of Leaflet library, and integration with Web Services daemon, adding Web Socket support to fetch tiles, unwinding tile interleaving issues, making NodeJS usable for humans and other bootstrapping (Mihai Varga)
- Adapting zoom, implementing scrollbars (Mihai Varga)
- Selection rendering, and shape outlines (Mihai Varga)
- Search bar, in-document highlighting (Mihai Varga)
- Clipboard paste (Miklos Vajna)
- Fixes for image resizing, keyboard shortcuts and toolbars (László Németh)
- Remove tile fading animation (Henry Castro)
- Keypress and keycode conversion and capture (Henry Castro, Mihai Varga)
- Tile creation timing and cancellation (Kendy)
- Lots of linting cleanup (Mihai Varga)
- Toolbar implementation, and command-state synchronization (Mihai Varga)
- Style and font attribute selector (Mihai Varga)
- Clipboard / text copy pieces (Mihai Varga)
- Pre-fetching during editing only when idle (Mihai Varga)
- TileBench benchmark, test (Mihai Varga)
- Re-establish broken connections (Henry Castro)
- Print handling (Mihai Varga)
- Full-screen slideshow mode (Mihai Varga)
- Insert file handler (Mihai Varga)
- Undo & Redo pieces (Miklos Vajna)
- Selection extension and dragging (Andrzej Hunt)
- Misc. keyboard shortcuts (Laszlo Nemeth)
- Spreadsheet tabs & slide previews (Mihai Varga)
Shared front-end / backend bits
There are some chunks of work that are sufficiently wide-ranging that they involve significant work in both the client Javascript, and the LibreOfficeKit implementation, as well as touching the Web Services Daemon.
- Calc Row/Column header rendering (Andrzej Hunt, Henry Castro, Miklos Vajna)
- Packaging, Testing Virtual Machine Image build etc. (Andras Timar)
- Manual testing (Olivier Hallot)
- Part (eg. slide, sheet) annotations and API (Mihai Varga, Tor Lillqvist)
- downloadAs conversion API for printing, save-as etc. (Mihai Varga)
- Font preview rendering (Mihai Varga)
- Mouse event queueing and capture and synthesis (Mihai Varga, Andrzej Hunt)
- Spreadsheet formula-bar (Mihai Varga)
- Search all; API to return all hits for a search (Mihai Varga)
- Alpha transparent document rendering work (Miklos Vajna)
OwnCloud integration
- Original ownCloud Documents plugin - which is the lion's share of the work here is thanks to a number of ownCloud developers (Frank Karlitschek, Victor Dubiniuk, Jörn Friedrich Dreyer, Thomas Müller, Jan-Christoph Borchardt at ownCloud; Tobias Hintze, Friedrich Kossebau of KO gmbh)
- Initial port to LibreOffice Online (Jan Holesovsky)
- Security policy (Henry Castro)
- URL management (Hentry Castro)
- Document loading via ownCloud (Jan Holesovsky)
- Cleanup, and remove unused pieces (Henry Castro)
- Improve New Document handling (Jan Holesovsky)
- Extend file-types handled (Mihai Varga)
- Implement saving (Jan Holesovsky)
- Use pdf.js for PDFs for now (Andras Timar)
Thanks again to all of our engineers who made this happen, and to all those whose work we built it upon.
Conclusion
CODE, as is true of all Free Software, builds heavily on previous work done by many. Having said that, Collabora through the skill and dedication of our engineers, have clearly contributed huge amounts of expertise and effort to architect and implement this exciting new development in Cloud based productivity. We thank all our partners and customers who have worked alongside us to enable that. To play with it now and get involved please checkout the CODE.
2015-12-14 Monday.
- Up at 1:30am; hmm - poked at mail; merged a patch or two, chased a unit test failure; humbled by the TDF election results - thanks to all who supported me; some test-building. Fixed windows tindebox builds. Back to bed.
- Up again feeling like death warmed up; mail chew, text review, quick mgmt team call started mailing people. More mailing.
- Team call in the afternoon; dinner with the babes, back to work - helped Ashod get setup.
2015-12-13 Sunday.
- Lie in, up late - out for a quick run with H. and N. Home-made Pizza lunch; out to practice in the Memorial Hall for the carol service. NCC Carol Service - fun, chatted at the end & helped to clear up. Home for tea with babes, put them to bed late. Tried to sleep.
2015-12-12 Saturday.
- Up lateish; mail chew, bit of code fixing; helped N. make a Xmas present. Started writing Xmas cards for the team - what a privilege to have so many great guys around. Worked late on commercials with Holger; a dedicated man. Watched some of 'The Bridge' - slept badly.
2015-12-11 Friday.
- Mail chew; contract reading, etc. late lunch; partner call. Bit of hackery on OpenGL bits - CI finally liked my code (in non-debug mode), merged it.
- Up late, working on commercials with Holger, and press bits, mail & patch testing.
2015-12-10 Thursday.
- Up early; partner call; mail chew, hacked at OpenGL; some nice flicker-free goodness left & right; looking good.
2015-12-09 Wednesday.
- Mail chew; contract fiddling; sales team call; lunch. Call with an old friend; hacked away, TDF board call. Worked late with H. mending a phone nearby.
2015-12-08 Tuesday.
- Up early; mail chew; more mail chew; admin - knocked up slides, budgets, dug at sales pipeline, built ESC bug-stats. Monthly Mgmt call. Out in the evening to practice for the Xmas Carol Concert.
2015-12-07 Monday.
- Mail chew; more admin; chat with Niall. Plugged away at admin and estimation, team call in the afternoon. Voted in the TDF board election. John Hummerson over in the evening; good.
2015-12-06 Sunday.
- Tired; into NCC, ran the kids work; fine shared lunch, AGM bits, home. Slugged about for a while, out for a walk with N. Put up Christmas Trees, and strung lights around the place - which (amazingly) turned on and 'just worked'. Tea, tidied up, bed.
2015-12-05 Saturday.
- Up late, lazy breakfast with babes; washed & tidied up. Tried to get to some GL hacking; distracted by call with Niall and admin instead. Lunch. Played games with E. and N. while J. dropped H. off with Katie for a YFC ball-night.
- Potatoe peeling, dinner bits; babes watched a DVD; prepared for the youth tomorrow. Finally got to GL nasties.
- To add to my litany of "I can't believe OpenGL is so horribly un-usable" - discovered that the reason clipping (silently) doesn't work vs. textures it that no stencil buffer is allocated and attached to the frame-buffer object. You might think that doing a truck-load of operations drawing clip-masks of different shapes into a non-existent, non-attached stencil-buffer might trigger some (any) sort of helpful warning (we check for glError in a paranoid manner, nearly constantly). You might think that, but then that would make things easy to debug, and fast to develop against - and take all the skill out of it; right ? what would we then do with all those people's brains who had (somehow) learned to model the entire (global variable based) OpenGL state-set for every call ? finally found the few-line fix; urgh.
2015-12-04 Friday.
- Up lateish; mail chew, misc. calls. Plugged away at admin. Off early to help girls with their Quartet Juke-box, fund-raising at the School Fair - played well, first year I've not had to visit Father Christmas with a small person; nice.
- Home; out in the evening with Julia - lovely, really good to spend time organizing our shared mind.
2015-12-03 Thursday.
- Up early, mail chew, admin, wrote Linux Format column; Meetings much of the day. ESC call. Merged the nice new transition artwork from Andreas Kainz into 5.1 for Beta-2.
- Poked at profiling some horror spreadsheet - fun. Submitted a couple of FOSDEM 2016 talks - it should be awesome.
- Dinner, put babes to bed; back to work, couldn't sleep; plugged away at cleaning up OpenGL fixes until 4am; hmm.
2015-12-02 Wednesday.
- Mail chew, a whole day wiped out in admin; interesting talk with some new guys; chat with Eliane late. Built ESC stats; bed late.
2015-12-01 Tuesday.
- Mail chew, and hackery much of the day, sales team call. Admin, contract review, more hackery until late digging at redundant swapping, finally think I've cracked the Mac approach - idle swapping; need to prototype that. Worked late.
2015-11-30 Monday.
- Up; mail chew, synched with Caolan & Armin on some oddness in the VCL/gtk+ backend and pushed a cleanup & fix. Interested to hear from a Jeff that my issue was probably a known GStreamer bug.
- Some Amazonish Christmas-present shopping; trying to get good Cobalt HSS drills cheaply; hmm. 1:1' calls with Andras & Kendy.
2015-11-29 Sunday.
- Early up; quick breakfast; out to practice at NCC; played; Tony spoke, back for a fine lunch with Sue, Clive & Boys, and Bruce & Anne - chatted happily much of the afternoon; lovely. Gordon sermon before bed. Pillow-talked happily until too late.
2015-11-28 Saturday.
- Up earlyish; tried (somehow) to get GStreamer to work on Miriam's OpenSUSE 13.1 - enabled packman, burned many unhappy minutes wrestling with different versions of different things, broken gst pipelines, switching packages incrementally between vendors, installing more and more bits. I used to like VLC because it was one big lump of download that "just worked" until they decided to go with the "one hundred pieces any developer with lots of time can just plug together and debug, while no user can install or use anymore". Eventually discovered that deleting my
~/.cache/gstreamer, ~/.gstreamer* made things suddenly work: nice, sadly don't have the bad files now. - Breakfast - cheering. Nicki over with kids - plugged at reading around SalGraphics usage; more horrors.
- Lunch, out to buy a new fireplace/surround in Cambridge. Anything to be rid of the 30's monstrosity we have; an interesting selection - left the esthetics to J.
- Home; back to SalGraphics - eventually discovered that (depending on backend) we can and do end up with multiple wrappers of the same underlying OS resources; which causes my issues. Something like a rampant mis-use of multiple
fdopen's on the same underlying file; fun. At least it makes sense finally. - Up mending H's new phone screen with her; judicious heat-gun usage - trying to remove loca glue residue: seems WD40 is the miracle cure there; bed.
2015-11-27 Friday.
- Mail chew; hackery; lunch; interviews. Poked at the SalGraphics lifecycle - which is a complete mystery; inconclusively and at length; rather important if you want to key a cache/double-buffer of the screen contents on it.
2015-11-26 Thursday
- More tinderbox fixage; various nasty dependency issues, unwound a gallery build bootstrapping nasty. Plugged away at other bugs. ESC call in the afternoon, chat with Kendy. Dinner. More hackery until late.
2015-11-25 Wednesday
- Mail chew. Fireplace salesman arrived to measure up a couple of rooms. Nursed some tinderbox breakage - odd event ordering bits throwing up pre-existing bugs; nice. Nailed a VBA unit test issue, and another writer SolarMutex issue.
- Chat with Bjoern, Florian & Thorsten; Lunch. Crunched some update stats, board call, built ESC agenda.
- Remembered to link to the awesome 1st Packaging as directed by my great Sister in Law & Husband, for any of your of plastic packaging needs; end advert.
- Helped H. get setup with her first mobile buy / mend / resell iteration. Worked late, while J. at a PCC meeting. Changing global headers is insanely expensive.
2015-11-24 Tuesday
- More struggling with main-loops; product team call. Discovered that the new scheduler has the (non-optimal) idea of setting a MAX_UINT64 timeout in milliseconds to the glib main-loop timeout; and this is really a non-clever idea.
- Also (thanks Dimstar) managed to find the SRPMs for openSUSE 13.2 which was surprisingly hard (though finding the source in the build-service is easy).
- Plugged away; tested on windows; Norbert kindly tested on Mac; all good (encouragingly). Read stories for babes.
2015-11-23 Monday
- A day of E-mail, and lots of calls; 1:1's, partner team meeting, bit of hackery; team meeting; more hackery until late - trying to unwind a lot of evil in the VCL main-loop; we badly need a real 'idle' concept; starting to get to that.
2015-11-22 Sunday
- Off to NCC, Claire spoke, quickly home for a fine roast lunch with M&D; bid 'bye to them later, slugged a bit. Off to see David, some ladder steadying, and weather-board sawing action together. Home for tea, bed early.
2015-11-21 Saturday
- J. out at a Pregnancy Crisis conference in Birmingham with Sarah. Looked after Isaac; H. and N. out to YFC Edwardian tea-party event; played with M. and N. got a bit of work done too.
- David over in the evening; dinner, really good to catch up with him; M&D over, call with Tom & Becky; J. returned, up late chatting.
2015-11-20 Friday
- Up; mail chew, upgraded my Google+ - oh dear; found it impossible to add someone I searched for to a circle - weird; sad too - I need to use Circles to work around Google+'s searching bugs; some people simply don't show up and need their own individual circle. Another acute irritation is that people who pay for Google services, seem to get an emasculated Hangout experience - whereby they can't call, or be called by freeloaders (like myself) - which makes it hard to include or interact with them.
- Lots of admin catchup from a day out and a crazy week too.
2015-11-19 Thursday
- Up too early; mail chew, slideware. Train to Cambridge setup; good to catch up with Neil; Customer meeting all day, fun. Home, read stories to babes, bed early.
2015-11-18 Wednesday
- Mail chew; slideware building; built ESC stats; fun. Worked late on slideware.
2015-11-17 Tuesday
- Mail chew; hackery; calls; more hacking.
2015-11-16 Monday
- Practise with babes; chat with Robert; mail chew, struggled onwards with OpenGL / GLX API - such a hideous disaster-area of API mis-design it is harder to find than OpenGL: first, fully understand all global state the driver has, second - understand how each method manipulates it, third - understand how that intersects with each OS' use of the underlying resources.
2015-11-15 Sunday
- NCC, back for a pizza lunch. Played games, slugged; Quartet practice, managed to knock off a new Christmas Carol rather quickly; good. Bronny over for a chat with J.
2015-11-14 Saturday
- Out to Go-Ape in Thetford with Naomi - her annual trip with the Father; swung through trees variously; fun. Had a nice lunch together. Home, worked away at OpenGL rendering pieces.
2015-11-13 Friday
- Mail chew, sub-team call. Curious about Microsoft's principles around Cloud Computing. It is curious in a single article to highlight the inter-service co-operation between Governments and the safety brought by hosting your data in a place that it is easy for the local Gov't to get access to without your knowledge. While regulatory compliance is an important topic, having full control of your data & applications on a real private cloud still seems like a good approach for people with real privacy concerns.
- Some real hacking on OpenGL bits; sync. with Cor, more hackery, interview; dinner, played with babes, couldn't sleep, more hackery until late to get exhausted.
2015-11-12 Thursday
- Commercial team call, mail chew left & right, quick monthly mgmt call, ESC call; finally got to fixing an easy bug to stay sane.
2015-11-11 Wednesday.
- Mail chew, back to back documentation lead interviews. Lunch.
- Hacking on ValueSet's to let them have icons and labels hopefully improves the look of impress transitions, nice to do a bit of hacking.
- TDF board call.
2015-11-10 Tuesday.
- Into Cambridge, caught up with Tracie, met with Dom & Ben. Hacked a bit, home again for lunch. More hackery and E-mail.
- Out in the evening to help with the Cub's night-hike, spent a long time discussing interesting questions: the probability of asteroid strike, what to do when abducted by Aliens, the end of the world, Nazis - and their role (or not) in the twin-towers, and so on. Small boys are rather different to small girls it seems.
- Back to listen to some Milton Jones (the man is awesome), What's it like to have voices in your head ... I hear you ask, Militant Feminists ... I take my hat off to them.
2015-11-09 Monday.
- Up too early, train into London, no seats - worked standing up on a convenient luggage-rack; nice. Pleasant partner meeting. Lunch. Train to the office, went over financials with Tracie, couple of calls. Train problems, taxi home.
2015-11-08 Sunday.
- Off to NCC with John, played violin in the band; lead the older kids work downstairs; home for a quick lunch. Dropped M. off to a rememberance day parade. Applied slugging. Movie, bed early.
2015-11-07 Saturday.
- Off to Sue & Clive's, worked on report writing in the car at some length while J. drove. Had a lovely time together, great to see the work going on at 1st Packaging - fine roast dinner, out for a walk nearby. Bonfire in the evening with stories, marsh-mallows, fireworks, and fun. J. kindly drove home while I typed. Prepared youth work for tomorrow on Ruth, fun.
2015-11-06 Friday.
- Set too hacking a some main-loop work around impress transitions & effects I've been wanting to solve for a while. Made some progress.
2015-11-05 Thursday.
- Plugged at mail, calls; ESC call, team call - too much talking, too little hacking.
2015-11-04 Wednesday.
- Mail chew; paperwork review, signatures; contract tweakage. Dinner, put babes to bed, finally a patch to clarify the current OpenGL status, and settings (which take effect after a re-start).
2015-11-03 Tuesday.
- Mail, commercial team call; contract work.
2015-11-02 Monday.
- Up early; mail chew, 1:1 calls variously, kick-off call. More mail chew - somehow a ridiculous amount of admin piled up over the weekend . Team call.
- James & Kate came over - really lovely to see them, and spend the evening together while they're in the country.
2015-11-01 Sunday.
- Off to NCC with Jackie & Pete, played the violin; hitched home with the Staffs; roast lunch slugged for much of the afternoon, digesting. Slept terribly - lots to think over.
2015-10-31 Saturday.
- Up late; slugging, off to church to prepare for a light party this evening; got a Wii setup and mended the mis-aligned pool-table mechanism. Back for lunch; back in the evening for the party - put up a pinyata, struggled vigorously with Windows XP, PPT, and some lame bundled DVD player wrt. multiple monitors. And they say Linux is bad ... talk & DVD for the kids. Katie & Esther around for a sleep-over, late.
2015-10-30 Friday.
- Mail chew; lots of calls through the day with Kendy, Andras, Niall, a customer, Philippe, Kat and so on.
2015-10-29 Thursday.
- Horrible weather meant no Brimham Rocks; set off for home, admin and hackery in the car. Lunch. ESC and misc. other calls in the afternoon.
2015-10-28 Wednesday.
- Up early, mail chew, sync. with Kendy, Niall, sales guys. More mail chew, updated a patch. Out swimming in the afternoon, good to play with five lovely girls in the pool - lots of beach-ball-ing and splashing.
2015-10-27 Tuesday.
- Out in the morning for a walk along the river with the family; fun. Trotted along, nice to have a break. Back for lunch. Chat with Philippe, helped Dad assemble his new workbench - fine. Out in the evening with Julia - lovely to spend time together.
2015-10-26 Monday.
- Breakfast, setup PCs, mail chew; wrote up & mailed misc. meeting followups. Calls with Kendy & Andras.
2015-10-25 Sunday.
- Lie in assisted by the hour change. NCC - Claire spoke. Back for pizza lunch, slugged and slept a bit; H. back - frantic computer packing, watched the last LOTR; DVD with the family, drove to visit M&D. Sleep.
2015-10-24 Saturday.
- Breakfast, off to the office; started to hack but ship-wrecked by a number of fun meetings with all & sundry, lots of good things going on left & right it seems. Great to see Regina present the xmlhelp editing extension.
- Rushed for the plane; discovered my old BA Executive Club card is some use still for queue-jumping; nice. Hacked a bit on the plane finally, home - eventually.
2015-10-23 Friday.
- Fitful sleep on a bus - non-ideal; hacked a bit in the airport, fixed a bug or two. Plane to Hamburg, train and walk through the Industrial Museum to the CIB office.
- Met up with the crew; great to see the place - out for lunch with Ulrich, good to meet him. Back for a partner call, met and chatted with lots of good people turning up for evening nibbles etc.
- To a central hotel with Cloph; finally slept.
2015-10-22 Thursday.
- Up; sync. with Kendy and Andras; admin - chased nasty event posting / ordering issue. ESC call, partner call. Booked bus - urgh; 00:10 bus, for 08:15 Gatwick flight to Hamburg.
2015-10-21 Wednesday.
- Mail chew, call, quick interview; poked at some code, did some competitive review of Office 365 - which appears to function as a nearly non-stop advert for the off-line client. PPT Online is rather pretty though.
- Partner call, re-estimation. Dinner, partner call.
2015-10-20 Tuesday.
- Mail chew, research, lunch, partner call.
- Thrilled to see the announcement of the work we've been doing with the guys at CCS to provide great savings for the UK Government as they migrate to a supported Collabora Office. It is clearly a rather hard role to be a centralized purchasing department, tasked with working with SMEs to deliver change - and this is an impressive result from all involved. The back-story is that many UK purchasers that we interacted with in the past didn't believe there was any need to tender or consider cheaper alternatives (with far better Open Document Format support), since the CCS had an agreement with a one proprietary vendor. This lead to some amusing chicken & egg situations - eg. to join the OJEU tendering journal it was necessary to respond to a tender; but there are zero tenders for Office Suite software (across Europe). Its great to work with CCS to address this issue, and raise the profile of alternatives that can meet the Cabinet Office's guidance for a more open, and accessible way of communicating with citizens and storing their data. It is very pleasing to be able to help to turn great policy around open standards from the top of Government into positive action on the ground.
- Dinner, took M. to cubs; read stories, helped H. with maths revision. Tweaked ESC bug stat generation tool & built new stats.
2015-10-19 Monday.
- Mail chew; booked a hotel for the Hamburg Hackfest at the weekend - should be fun; come if you're nearby. Wrote status report.
- Lunch; upgraded to openSUSE 13.2; conservative transfer of data, discovered that workspace-grid is (sort of) working again in gnome-shell so switched to using that in place of XFCE for now.
2015-10-18 Sunday.
- Did the teens work at Church, a small group but went well. Brian & Andy over for lunch, played games. Applied slugging, read some LOTR to E. long stories, bed early, iPlayer action.
2015-10-17 Saturday.
- A lazy day; mended various laptop problems with babes - nasty XFS related kernel panic on start that made the system unbootable; worse after the panic
xfs_rescue wouldn't. Got various mine-testers with extensions installed and happy. - Lunch. Out to Claire Country Park with the family, via Glebe Farm near Ousden ; fun.
2015-10-16 Friday.
- Poked at mail, some bugs, read a lot of profiles, did some scratch estimation, customer call.
2015-10-15 Thursday.
- Poked at some bugs, built ESC stats rather late; boggled at the new calc perf. regression I created with Markus - high frequency creation & destruction of config objects while calculating is silly.
2015-10-14 Wednesday.
- Mail chew & catchup - customer call; built some analytics and crunched a chunk of data. Good to read some stories to babes in the evening at last.
2015-10-13 Tuesday.
- CP. Quarterly(cough) management meetings today; presentations, financials, robust discussion - sensible conclusions - the works. Out for dinner together in the evening - a good team.
2015-10-12 Monday.
- Up earlyish; took the Kendy & Andras to Thetford Forest for 'Go-Ape', misc. team-building, snacking, Orienteering, Segway riding with Guy, David & Diogo and mixed success; fun. BBQ, drove home with the lads - sat around and caught up with mail for a bit; out to the office for some Pizza & DVD action - bed late.
2015-10-11 Sunday.
- Breakfast, bid 'bye to G&A, NCC - Helen spoke; back for a use-ups lunch. Measured the roof for Solar Panels with Robert - fun.
- Into Cambridge for the fabulous Collabora 10'th anniversary bash; encouraging presentation, fine food, good company, gadgets to play with, and more. Great to meet lots of people in-person. Drove people back to bed late.
2015-10-10 Saturday.
- Up earlyish; party preparation in the morning, J. has been doing heroic work; people started to arrive - lots of fun with the family, wedding ring stretching with Bruce, read stories to babies etc. a cracking party for Mum's 70th. Chris even got a pass-the-parcel and a quizz in which was fun. Good to catch up with Richard. Great news from Tom (arriving later). Twelve sleeping overnight.
2015-10-09 Friday.
- Mail; admin; poked at configmgr listeners a bit. Lunch. Sync. with Tor, partner call. More mail chew.
- My parents arrived in the evening for dinner, and then Grant & Anne too - slept in the attic.
2015-10-08 Thursday.
- Bid Robert 'bye for now; mail chew, code review; fun customer pitch. Lunch. Tiny piece of hacking, mail, built ESC stats much too late in the day. Dug through interminable legalese. ESC call. Partner call, dug through more legalese, partner call.
2015-10-07 Wednesday.
- Up rather early; poked at mail; bought some RAM to try to take advantage of the (apparently) low price. Interviewing.
- I like Matthew Garret a lot, and have huge respect for his work, and I'm glad that he has the right to fork too. What concerns me most about his suitability for any leadership role - is not his impassioned feminism (I like to learn from and interact with spicy views) - but his eagerness to condone the sort of shameful, ochlocratic, attacks on people - hounded from their jobs - on the basis that they don't happen to share his political views. Apparently it's open-season for advocating glass ceilings for those whose views you don't like: so let me follow suit. Personally, I can cope with some unpleasant language (cf. the casual mjg scatology & (2nd hand / ironic?) 'deepthroating' metaphore in his post); and vigorous venting of frustration at me from time to time (though I would note that the totemic examples of Linus' apparent vituperative I've seen in the press are rather dated) - indeed, Sarah writes of being allowed to get away with subtle sexist or homophobic jokes - apparently a tad hard to pin down. I'm certain that I thoroughly disagree with Linus on all manner of political and religious topics, but who cares ? I'm sure that Linus (and the kernel community) wouldn't hold my personal views against any of my patches (as/when I have time for some): I guess that's the professionalism I value most - a focus on the technology. Personally, I'm attracted to places where free communication is allowed (even if it sadly ends up reading like an outraged trashy newspaper). As a bootnote - my hope is that LibreOffice provides a much friendlier place for people to get involved - the freedom to give offense doesn't have to be over-exercised to be present.
- More interviews; interesting; closed a couple of VclPtr bugs. Robert around in the evening - great to see him.
2015-10-06 Tuesday.
- Up early; mail chew; proposal writing all day; finally got one of them finished & sent. Mentoring lead interview in the evening; bed.
2015-10-05 Monday.
- Mail chew; reviewed some numbers; worked on proposals; plugged away at avoiding those most of the day. Handed over part of a project to Tor.
2015-10-04 Sunday.
- Up earlyish; drove to Hertford Town Church, spoke, had a fine lunch at Tania's, and caught up with the various families - and admired the home improvement works. Home later afternoon. Played with Minetest with a series of girls, installed WorldEdit for Naomi.
2015-10-03 Saturday.
- Lazy day; mended things variously around the house; prepped sermon on Colossians 1 for tomorrow in Hertford; applied slugging.
2015-10-02 Friday.
- Plugged away at misc. calls & meetings - eventually did a little Friday hackery; trying to make the configmgr UNO API for change notifications (an amazingly unused function) reasonably usable from the code - lets see how that goes. Sync. with a customer.
- Watched LOTR Return of the King side #1, with suitable censoring of particularly gruesome bits for the babes.
2015-10-01 Thursday.
- Mail chew; partner call / code reading / estimation frenzy; sync. with Kendy. Lunch. Chat with Philippe, partner call, filed expenses, ESC call. Fixed a nasty OpenGL / printing issue plaguing Windows users.
2015-09-30 Wednesday.
- Sync. with Kendy, wrote LXF Column; lunch. Customer call, board call; admin.
2015-09-29 Tuesday.
- Commercial team call, mail, admin. Lunch, partner call. Fixed a bug to stay sane. Built ESC bug stats. Plugged away at admin.
2015-09-28 Monday.
- Mail chew, poked at some of the conference backlog, security bits etc. up-loaded slides; team call - everyone made it home safe apparently. Plugged through admin backlog.
- Browsed the various improvements in our new Collabora Office site.
2015-09-27 Sunday.
- Up late, listened to a rather fine sermon; packed, passed the cathedral, coach to the airport, slept on the flight, slept on the train, picked up in Cambridge by wonderful wife & babes. Home for pizza tea.
2015-09-26 Saturday.
- Out to board meetings much of the morning with employees; lunch together, back for more talks at the Cabinn (somehow fell asleep) - out to a fine Italian restaurant in the evening.
2015-09-25 Friday.
- Dragged myself from sleep somehow; gave a final talk on regressions (as hybrid PDF):
- Wandered the conference talking to people variously; fun. Out for dinner afterwards with some friends, late night budget ranking. Bed earlyish,
2015-09-24 Thursday.
- To the conference, enjoyed various talks - great to hear from Eliane / EDX in Brazil. Hacked on slides. Gave a talk that tried to capture some of the work that has been done in the last year as hybrid PDF:
- Lunch; Thorsten's talk, partner meeting. Out to a rather fine party in the evening (via. a rather circuitous route). Bed rather late.
2015-09-23 Wednesday.
- Up early, poked slides; rushed breakfast; out to the conference - enjoyed the opening talks; lunch with Simon, gave a keynote on LibreOffice and Collabora:
- Caught up with Noel Grandin & fixed Peralex' gitdm-config affiliation, Noel: an impressive proportion of commits.
- Talked to partners, customers, awesome hackers, wandered the conference - scads of old friends; up late with Caolan, Cor & Kendy. Up late writing slides on VCL.
2015-09-22 Tuesday.
- Breakfast with the team; out to the RaceHall for some team-building goodness - lots of bombing around the track - trailing behind the leading risk-takers / drivers.
- Lunch; corporate review / presentations with the team. Bus back to the hotel, out to the venue, caught up with lots of developers and others before heading to the fine pre-meal to meet and eat with more people.
2015-09-21 Monday.
- Travel to Arhus - via Stansted, pleased to see both Mihai and mjayfrancis on the same RyanAir plane. Bus to the (cheap?) Cabinn hotel; on to meet up with Norbert, Bjoern and Andras for a pre-conf. board meet-up. Back for dinner, met up with Kendy, out for a drink with other Collaborans.
2015-09-20 Sunday.
- Out to NCC, Compassion Sunday, Claire spoke. Back for a big roast chicken dinner, slugged with the family happily, read stories.
2015-09-19 Saturday.
- Out to nearby Anglo Saxon village - tree climbing with small girls in the sun; wandered around the lake. Home for tea. Yes Minister in the evening.
2015-09-18 Friday.
- Mail chew; plugged away at slideware for next week. Partner call; more report poking, stats building, etc.
2015-09-17 Thursday.
- Up early; music practice with babes; work. Mail chew, estimation, Lunch. ESC call, more mail chew, report writing, slide bits.
2015-09-16 Wednesday.
- And somewhere it turned into Wednesday. Practice & breakfast with the babes. Reviewed a nice report. Built ESC bug stats. More testing, reviewed some nice patches from Tomaz & Tor.
- Lunch with J. lots of gerrit goodness merging code. Re-purposed a Linux SSD for a windows swap partition: feels like sacriliege, but there must be some way to make Windows 7 run two compiles in parallel.
2015-09-15 Tuesday.
- Mail chew, more meetings; customer call; sync. with Philippe. Hacked at particularly nasty OpenGL / flicking problem - apparently context switching causing glFlushing; hard to fix; up all night.
2015-09-14 Monday.
- Mail chew; 1:1's, caught up with Niall, chased OpenGL issues; team meetings.
2015-09-13 Sunday.
- Off to NCC; ran the teen kids group; back for a cracking lunch. Upgraded H's machine in the afternoon & installed minetest; visit from Allison & visited Nigel. Bed early.
2015-09-12 Saturday.
- Up earlyish; out to Sandringham with M. for her annual trip with Father - had a lovely day wandering the house and gardens (doing a fun quizz), eating lunch, playing in the playground in the sun. Home after a bit; lovely.
- Prepared for kids work tomorrow in the evening.
2015-09-11 Friday.
- Music practices in the morning; reviewed queued gerrit patches, drained mail queue; planned day. Lunch.
- Chat with Thorsten, partner call, customer pokeage; hackery; dinner, babes out to Friday-club. Watched LOTR 2, #2 in the evening.
2015-09-10 Thursday.
- Tackled a slew of admin that has been piling up; sync with Lubos. Booked flights to the Hamburg Hackfest - just after the conference, but should be fun.
- Plugged away at report writing; worked late.
2015-09-09 Wednesday.
- Into Cambridge, mail chew etc. Somehow my Samsung S4 refuses to boot (or crashes very shortly afterwards) if it is not plugged in & charging; very irritating indeed, hard to diagnose post-crash with adb as well; odd.
- Wrote a LXF column, met Tina, great to catch up with Daniel & Matt quickly - rapid lunch, Xero review with Lucy. Turned around some partner paperwork; built stats.
2015-09-08 Tuesday.
- Mail chew, slogged through some bugs; fixed a number of OpenGLContext referencing issues, chased a lifecycle coupling bug, chased some GL context bits; nailed a master regression in the timer scheduler. Built ESC bug stats.
2015-09-07 Monday.
- Mail chew, call with Kendy, Andras, lunch, team call, sync. with Tor, filed and triaged bugs, poked at some code. Dinner, put babes to bed, Lydia over, worked late.
2015-09-06 Sunday.
- NCC, Tony on starting The Story. Had Martin, Mary-Anne and their daughters over for lunch, fun. Afternoon tiling action, upgraded Naomi's openSUSE to install 'minetest' - rather sucked into huge underground voids - it beats digging them yourself.
2015-09-05 Saturday.
2015-09-04 Friday.
- Up early; mail chew, sync. with Kendy, interesting customer call. Pleased to see the UK Army trying to fix it's harassment problems; an extraordinarily crisp goal "to close with and kill the Queens' enemies" too.
- Sitting at the desk, distracted by the sight of the postman passing with someone else' pay-check letter in his hand it builds nostalgia for the days when someone else would post these to me monthly without any real concern as to how the mechanism that produced them worked.
- Posted ESC minutes. Prodded at admin, call with Kendy to plan projects; dug at the module graphing perl-script to get mergelibs included in the rendering; fun.
2015-09-03 Thursday.
- And so ended up tired but less buggy in the morning. Team call. Lunch with Katie & H. - going swimming. Back to some queued admin. Patch review, hacking, IRC, debugging etc. positive ESC call. Dinner, bed early; somehow a big 36 hours block of work helps you sleep like a baby.
2015-09-02 Wednesday.
- Up early, mail chew; team call, plugged away at bugs, patch review, code merging, more bugs and other misc. GL related bits - fun. Worked overnight to get things ready for 5.0.2.
2015-09-01 Tuesday.
- Up early; mail chew, patch review, ESC stats building. Patch review, team call.
- Pleased to see the Mentoring Lead job application period extended. Surely this is a dream job (although part-time) - possibly more applicants that can do less time - interleaved with their studies might fit ? Have you ever wished you could work part-time on Free Software ? do you have the C++ and mentoring skills we need ? would love to hear from you for the LibreOffice Mentoring Lead. role.
2015-08-31 Monday.
- Up very early, mail chew - partner call; team call - great to have Kendy & Miklos back. Reviewed some fixes for 5.0.2 read bugs etc. Product team call; slogged away until late on GDI and GL resource synchronization.
2015-08-30 Sunday.
- No lie-in; off to NCC, back for lunch with Martin, Loella & Kesiah - fun. Practiced quartet, LOTR reading, watched M's minecraft home expand itself.
- Floor lifting in kitchen; discovered leak in dishwasher outlet pipe - spraying water outwards - unfortuantely into a stack of absorbent stuff; not good. Unwound, diagnosed, disassembled etc.
2015-08-29 Saturday.
- Up early; mail chew & bought & installed minecraft on M's laptop (9 years old today); tested it - I can see why it's rather addictive already.
- Slugged; breakfast, present unwrapping, kids playing. Returned babes to their homes; showed M' the game. Lunch. Out to Brandon forest park for a walk & some playground action; lovely day.
- Home; tea, read stories. Back to improving GL API tracing, started to glup some GL tests into vcldemo; fed-up with recurring framebuffer / texture / context state mixups. Fixed a nasty issue in the framebuffer / context interaction; more to go. Up late.
2015-08-28 Friday.
- Up early, chewed mail, team meeting, hackery; discovered a rather beautiful
glDebugMessageInsert with Lubos that is just the thing for GL / apitrace debugging; wrapped it and added a lot more goodness. Partner call; estimation. - Miriam's swimming party in the afternoon 'home' DVD in the evening with friends; 2x here for a sleepover. H. repaired J's phone-screen nicely with a bit of supervision.
2015-08-27 Thursday.
- Up early, team call; poked away at mis-diagnosis of menu issue much of the day - bisecting where to place a glFlush - until eventually, ended up in a nonsensical place; must be a memory issue. Discovered instead that people who don't glClear their depth / stencil etc. buffers are doomed to a life of impotence and rage; so cleared it. Finally apitrace works, and things render more reliably too - not hidden behind random bits of (deep) memory.
2015-08-26 Wednesday.
- Early up, team meeting, interview , mail; hacking; wrote up a spec. Sync'd with Niall before his holiday. Plugged away at vile non-rendering menu problem; turns out it is rendered, but we're missing a glFlush - fun, it seems GDI has a similar issue with a
GdiFlush() call for similar purposes.
2015-08-25 Tuesday.
- Early up, mail chew; hackery. Early meeting. Hacking. Lunch. E. frenetic cycling, fell off her bike but ok. Plugged away at bits of hackery and admin.
2015-08-24 Monday.
- Up early, team meetings & 1:1's much of the day; mail chew, hacked on polishing up the software watchdog thread for busted OpenGL drivers that hang. Lunch. Really enjoying the CI infra. and it's ability to catch my stupid mistakes.
- Chat with Philippe, more fixing, built ESC bug stats.
2015-08-23 Sunday.
- NCC, family church, Tony spoke; caught up with the other Tony & Anne. Back for lunch, quartet practice in the garden - suprisingly good after a big gap. David & Allison over for the afternoon - good to see them. Bed earlyish.
2015-08-22 Saturday.
- Up earlyish; bid 'bye to Leanne, and off to Bruce & Annes. Tackled a bug in the car while J. drove - a 'VclPtr' bug turned out to pre-date LibreOffice 4.2 - good to stimulate more bug-hunting in lots of areas.
- Tried to hunt down how to return a phone found on the beach to it's owner; called EE. to help out: "take it to a shop". Lunch. Out to the beach ourselves near the Aldeburgh shell. Lots of lying on the beach with Sue, Clive, B & A.
- Back for some tea; hacked on another couple of issues on the way home, one real, one non-reproducible. Mail chew.
2015-08-21 Friday.
- Up rather early, hacked away at this and that; positive partner call. Chewed through mail, admin & bugs.
2015-08-20 Thursday.
- Mail chew; most pleased to notice a disabled person opposite get into their (ordinary looking) car and with a remote-control raise a roof-box through 90 degrees across the side of the car, from which a tether came, which then hoisted their wheel-chair inside, closed the flap for that, and then returned the box to the horizontal (while they drove off) - amazingly good.
- ESC call; hacked away at some code to disable OpenGL if we get a crash inside a block of OpenGL code.
2015-08-19 Wednesday.
- A day of phone calls , all positive, and E-mail, likewise.
2015-08-18 Tuesday.
- More mail chew, project review, bit of hackery on LOK pre-initialization. Thrilled to see Caolan's result of filter testing with a more comprehensive set of files:
0 import failures, 0 export failures, 0 coverity warnings built ESC bug stats.
2015-08-17 Monday.
- E-mail reading - a big backlog to wade through. Sync with Andras. Team calls, caught up with progress left & right. Leanne over in the afternoon to stay.
2015-08-16 Sunday.
- Off to Chocolate Church with the babes at Artistry in Cocoa. Back for a pizza lunch, slugged in the afternoon & LOTR DVD with babes in the evening.
2015-08-15 Saturday.
- Sorted through the snail-mail backlog. Ripped out some horrible black worktop & red and white tile thing with J. in the kitchen; started making good the wall. Helped M. make a present for N. out of bits of scrap timber. Good to be home.
2015-08-14 Friday.
- Up & out earlyish, briefed the kids on the more excessive claims of creation-science, but nevertheless visited the full-scale Noahs Ark replica - which is rather impressive: capacious and pleasant - albeit a superstructure on some steel floats; fun.
- Off to get the (not on strike) Hook of Holland ferry; discovered we in fact missed ours yesterday - urk; Stenna kindly fitted us on somehow. Several hours of reading LOTR, playing games, reading E-mail etc. Eventually, home, put babes to bed.
2015-08-13 Thursday.
- Packed, off to Arnhem to visit Cor, arrived, had lunch at his great training office - enjoyed the fine company, food, architecture, views of Arnhem from the top of the church spire, bronze bells, ice-cream, and more. Fun. Kids (typically) soaked in a local fountain. Back to drive on to Delft.
- Arrived lateish; met interesting e-beam lithography start-up chap; off to a super-market to get some pizza; fed babes - bed in a bit of a thunderstorm.
2015-08-12 Wednesday.
- Breakfast & out to Burg Eltz - a lovely castle nearby. Had a fine English tour; admired the treasury full of beautiful things, many from Hungary. Pleased that three brothers managed to live so long and apparently harmoniously in close proximity. Lunch at the castle restaurant.
- Out into Koblenz - visited the Deutches Eck at the junction of the Moselle and Rhein, rather impressive. Kids most impressed by fine, free water-playground and 2nd playgrounds nearby, and of course giant barges with cars on them etc.
- Home via super-market, watched Home, tea, bed.
2015-08-11 Tuesday.
- A fine breakfast on the veranda, enlivened by a small bird dropping in. Enjoyed some rides in their plug-in smart-car with Matthias. Bid a sad 'bye, and set off for Karlsruhr.
- Some chunk of driving; lunch, enjoyed the Scholss at Karlsruhr, climbed the tower and enjoyed the view; no time to really do the museum justice. Drove on to Dieblich near Koblenz, lovely AirBnB place turned out to be more palatial than expected, unpacked, ate, bed.
2015-08-10 Monday.
- Packed the house up; got the car-train across the alps to Interlaken. Lunch & something of a lame walk through the town and various industrial areas to the other lake - shopping on the way back. Inadvertently wandered across some para-gliding landing-place complete with lots of landing gliders. Enjoyed the children's playground, shopped, played more. Off to Bern via a rather large traffic jam.
- Stopped overnight with Matthias, Anita & family. , lovely to get to know them and their warm & friendly home more deeply. Very relaxing & interesting. Up rather late talking with Matthias.
2015-08-09 Sunday.
- A rainy day, read lots of LOTR to babes, Rico Tice sermon and Bible study with the babes from Philippians. Cleared later, out into the town for a last trip to the playground; packed & started cleaning the flat.
2015-08-08 Saturday.
- Up early; last walk up a mountain. Up to Cry d'Ere and walked down the ridge of the hill - past a lot of bike tracks and down to a reservoir for lunch. On downwards; shopping, cakes, Mr Bean, LOTR - tea, sleep.
2015-08-07 Friday.
- A very lazy day; up late, read LOTR, then some Sherlock Holmes to the babes, interspersed by Cludo, out to Lac Moubre in the afternoon for some swimming, back, DVD, bed early.
2015-08-06 Thursday.
- Up earlyish, up to Violettes, walked down the hill in the direction of Amminona, paused to dam a streamlet nearby at some length with the family. Walked on, lunch, an extraordinarily hot day, beautiful bise across the mountains. Bailed out early at Plumachit. Very crammed bus into town, walked home via the cake shop, DVD, tea.
2015-08-05 Wednesday.
- Packed, locked up, down to the lake for another quick swim, on to a largeish Italian Hypermarket to stock up on (fine) Italian food at prices the Swiss can only dream of. J. drove up to the top of the Simplon Pass as I pushed 5.0 pieces.
- Picnic at the top of the pass, a simply beautiful day with the family. Drove home myself. Couldn't get in - yours truly had cunning concealed the key - concierge kindly helped. DVD, fine tea, LOTR, bed.
LibreOffice under the hood: progress to 5.0
Today we release LibreOffice 5.0.0, a new foundation for ongoing work over the next months and years. It also has a fine suite of new features for people to enjoy - you can read and enjoy all the great news about the user visible features from so many great hackers, but there are, as always, many contributors whose work is primarily behind the scenes, and a lot of work that is more technical than user-facing. That work is, of course, still vitally important to the project. It can be hard to extract those from around eleven thousand commits since LibreOffice 4.4 was branched, so let me try to expand:
VCL - Toolkit Improvements
One of the largest areas of work in LibreOffice 5.0 is in the VCL toolkit, the graphics toolkit LibreOffice uses for all the widgets and rendering. 5.0 means modernizing and improving several aspects of it and bringing them into line with other cross-platform toolkits.
Mainloop / idle handling
This is a rather major change that landed in 5.0, and is a vital under-pinning to the ongoing attempts to make VCL and LibreOffice more efficient and performant, thanks to Jennifer Liebel and Tobias Madl (interview). The essential problem with our previous approach to deciding what to do next in LibreOffice (eg. should I do some more word-counting ? or process some deferred window re-sizing work ? or re-paint a windows' contents ?) was decided by a rather arbitrary set of random number of millisecond timeouts eg. 30ms for a re-paint, 50ms for a re-size - which was not only race prone, but also horribly inefficient - there being no solid basis to these pseudo-random numbers.
Thankfully in LibreOffice 5.0 we have a new 'idle' concept that prioritizes tasks we want to get completed and allows them to be executed in order at top speed. This combined with Jan Holesovsky (Collabora)'s work to ensure we can queue sub 10ms timeouts on Windows means we finally have a reasonably useful mainloop.
This has also helped us to find some power-draining bad behavior that was previously less visible - since frequently executed (say every 30ms) shortish tasks that wastefully woke the CPU without making any progress, now cause a 100% CPU spike - and can be addressed. Thanks to Ashod Nakashian for attacking several of these.
Lifecycle re-work (VclPtr)
For much of its lifetime, VCL widget lifecycle was a bit of a mystery, even to VCL itself. Widgets could be heap allocated, stack allocated, or be members of other widgets. If heap allocated they could be wrapped in various flavours of shared pointers. As such predicting when a widgets would be destroyed, and/or following its lifecycle across the code was non-trivial. Inside VCL we often used dog-tags: special listeners that would turn null when an object was destroyed to try to avoid referencing an object involved in several back-to-back callbacks. Unfortunately this support was rather incomplete, and lots of code would end up deferring deleting heap allocated widgets until idle in an attempt to avoid problems.
In an attempt to solve all of this mess, we now have a single smart pointer type: VclPtr to reference-count all Window (and OutputDevice) sub-classes, which are now always heap allocated. This gives a consistent lifecycle mechanism, which is even documented. We moved to a 'dispose' mechanism to break reference-cycles, replacing the previous explicit or implicit 'delete' mechanism, and have made lots of methods safe to call even on disposed widgets. This should, in the end provide predictable lifecycle, and much less fragile destruction code paths making it easier to safely re-factor code. In the meantime we continue to iron out problems, thanks to Noel Grandin (Peralex) for his invaluable help to me with this work, and Caolan McNamara (RedHat) and Julien Nabet among others for helping to fixup some of the aftermath. It is hoped that (ultimately) nearly all long-lived VCL types will use a similar lifecycle mechanism. This work was made possible by Caolan's huge re-factor to use VclBuilder for all dialogs.
Modern rendering: RenderContext
A bold attempt to switch the code-base from immediate rendering to deferred rendering was initiated. LibreOffice previously rendered what is seen on the screen in one of two ways - either immediately: ie. when you press an 'A' it tries to nail the pixels for 'A' immediately to the screen; or - via. a very deferred (30+ms delay) idle rendering = callback.
This situation is really non-ideal for modern rendering hardware and APIs - where we want to ensure the scene is fully and perfectly painted as a whole before showing it on-screen. Happily with the new idle handling work, there is no longer a hard-coded delay before deferred rendering can occur; so we started the task of removing immediate rendering, and replacing it with deferred rendering. This means replacing explicit rendering calls with area invalidation to queue this area for later re-rendering. In many cases this can remove any visible flickering and other intermediate rendering artifacts as the UI refreshes. Many thanks to Tomaž Vajngerl (Collabora), Miklos Vajna (Collabora), with help and fixing from Krisztian Pinter, Noel Grandin (Peralex), Jan Holesovsky (Collabora), Caolán McNamara (RedHat), Laszlo Nemeth (Collabora)
Gtk3 backend: Wayland
An very rough, initial gtk3 port was hacked together long ago by yours truly to prototype LibreOffice online via gdk-broadway. However thanks to Caolán McNamara (RedHat) who has done the 80% of the hard work to finish this, giving us a polished and complete VCL backend for gtk3. His blog entry focuses on the importance of this for running LibreOffice natively under wayland - the previous gtk2 backend was heavily tied to raw X11 rendering, while the new gtk3 backend uses CPU rendering via the VCL headless backend, of which more below.
OpenGL rendering improvements
The OpenGL rendering backend also significantly matured in this version, allowing us to talk directly to the hardware to accelerate much of our rendering, with large numbers of bug fixes and improvements. Many thanks to Louis-Francis Ratté-Boulianne (Collabora), Markus Mohrhard, Luboš Luňák (Collabora), Tomaž Vajngerl (Collabora), Jan Holesovsky (Collabora), Tor Lillqvist (Collabora), Chris Sherlock and others . It is hoped that with the ongoing bug-fixing here, that this can be enabled by default as a late feature, after suitable review, for LibreOffice 5.0.1 or at the outside 5.0.2.
LibreOfficeKit Improvements
LibreOfficeKit provides an easy way to re-use the rendering, file-format and now editing core from LibreOffice. In the last six months it has gone from being primaily useful for file format conversion, to being the foundation of LibreOffice on Android, and Online.
Headless rendering improvements
LibreOfficeKit re-uses our headless rendering backend, which allows us to render documents without underlying OS assistance, ie. without X11, Windows, OS/X etc. A number of performance and other rendering fixes were implemented here as part of the gtk3 and online work (headless rendering is also used on Android while our GL backend is maturing for that platform). Thanks to Caolán McNamara (RedHat) and Michael Meeks (Collabora).
Android editing extensions
Android editing builds on top of the LibreOfficeKit editing features, and provides the user with the Android equivalent of the gtktiledviewer feature list, like native cursor, text and graphic selection, resizing and more. Thanks to The Document Foundation & their generous donors these significant API extensions and core work are thanks to Miklos Vajna, Tor Lillqvist, Andrzej Hunt, Siqi Liu, Mihai Varga, Tomaž Vajngerl and Jan Holesovsky all of Collabora, as well as work from Pranav Kant (GSOC), and cleanups from Stephan Bergmann (RedHat)..
LibreOffice Online bits
LibreOfficeKit (alongside an adapted leaflet) is the basis for the new work targetting LibreOffice at the Cloud, checkout the code and a presentation. Huge amounts of tangled heavy lifting here were done thanks to: Tor Lillqvist, Mihai Varga, Jan Holesovsky, Henry Castro and Miklos Vajna, all of Collabora. With thanks to IceWarp for funding this work.
Conversion performance improvements
LibreOfficeKit provides a nice simple, clean API for loading and saving (ie. converting) documents. Thanks to Laszlo Nemeth (Collabora) and Mihai Varga (Collabora) we now have a new filter attribute: SkipImages to allow a significant acceleration for the use-case of converting any file type to HTML. This is really useful for re-using the wide range of LibreOffice filters to do document text indexing - giving a very significant speedup for large and complex documents. Another vital win here was to avoid doing an accurate word-count before export (for document statistics). Document conversion to text with this option should be significantly quicker for certain documents.
Build / platform improvements
Clawing back compilation time
With increasing template use in headers, compile times have taken a turn for the slower, thanks to Michael Stahl (Red Hat) who created a nice script bin/includebloat script to locate the largest and most problematic headers to be removed. As an example dropping boost/utility.hpp from several places removes ~830Mb of boost/preprocessor/seq/fold_left.hpp pre-processing.
Win64 porting action
The 5.0 release debuts a Win64 build - with many thanks to David Ostrovsky (CIB) with help from Thorsten Behrens (CIB), Norbert Thiebaud, Stephan Bergmann (RedHat) and others fixing and cleaning up a number of nasty platform-specific corner-cases across the suite. While we have had many 64bit platforms for years, the Windows LLP64 model can create issues.
Code quality work
Work is ongoing around code quality in many areas, with 120 or so cppcheck fixes thanks to Caolán McNamara (RedHat), Michael Weghorn, Julien Nabet, Noel Grandin (Peralex), and others. along with the daily commits to build without any compile warnings -Werror -Wall -Wextra etc. on many platforms with thanks primarily to Tor Lillqvist (Collabora) and Caolán McNamara (Red Hat) - this category of problems however is shrinking thanks to the increasing use of CI.
Coverity at ~zero
Having hit nearly zero coverity issues Caolán McNamara (RedHat) (with some help from others) does an awesome job of keeping the count at (or nearly at) zero each week with ~360 commits this cycle. We routinely have a few new issues in each build and fix a few others, the total being currently two issues (of 6+ million lines analyzed). Hopefully keeping the numbers at zero is a reasonably achiveable goal:
PVS-Studio
The company OOO "Program Verification Systems" develops the PVS-Studio static analysis tool and made results of a one-time analysis run available to LibreOffice developers. Dozens of reported issues were fixed by Caolán McNamara (RedHat), Michael Stahl (RedHat), David Tardon (RedHat), and Markus Mohrhard. You can read more about that (with cartoon) here.
Import and export testing
The new TDF donor funded crash-testing hardware combined with a significant effort from Caolán McNamara (RedHat), Michael Stahl (RedHat), Markus Mohrhard and several others we have got the number of (paranoid) assertions and/or crashes on import of our significant bugzilla document corpus (of 75k+ dodgy bug documents) down to effectively zero. It's wonderful to be able to catch commits that cause regressions here and nail them within days on master, before they have a chance to escape into the user-base.
Ongoing work here is to compile the crash-testing binaries with Address Sanitizer as well as starting to fuzz various document types and expanding the set of input file-types.
Clang plugins / checkers
We have continued to add to our clang compiler plugins; a quick git grep for 'Registration' in compilerplugins shows that we've gone from 38 to 59 in the last six months (double the growth of last release). These are used to check for all manner of nasty gotchas, and also to automatically re-write various problematic bits of code. Many are run automatically by tinderboxes to catch badness. Thanks to: Stephan Bergmann (Red Hat) and Noel Grandin (Peralex) for their hard work on these checkers this cycle.
The new plugins do all sorts of things, and usually come complete with a set of relevant fixes for the underlying code; here are some examples:
- loplugin:loopvartoosmall - checks that the bit width of a loop index variable is at least the size of the thing it is indexing over. In the case of unsigned values, this can prevent infinite loops. In other cases, it simply avoids us truncating data.
- loplugin:staticmethods - looks for methods that can be declared as static. This is both more efficient and makes the code more understandable, because it clearly indicates that the method does not depend on any object state.
- loplugin:vclwidget - enforces the various rules surrounding the usage of our new VclPtr ref-counting smart pointer for VCL objects. Ref-counting classes can be tricky to use in corner cases - so having a checker that validates at compile-time as much of the otherwise implicit rules is very useful.
- loplugin:constantfunction - looks for functions that should be removed/inlined, since they always return the same value. That is useful for finding old code that has become redundant due to refactoring.
- simplifybool - this detects and de-tangles particularly tortured boolean logic expressions to simplify them. Some examples are converting
a ? false : true to !a. - cstylecast and redundantcast- these detect and warn about C-style casts eg.
class Foo; Foo *pFoo = (Foo *)pBaa; ie. when a type is incomplete. These should really be safer static_casts. Also we detected and removed un-necessary casts to make the code easier to understand. - de-virtualization - this detects virtual methods that are never over-ridden, to replace them with better performing non-virtual methods.
- lopluign:deletedspecial - finds special member function declarations that are left undefined, which should actually be marked as
= delete to entail further compiler optimizations and warnings.
Other sets of cleanups were also clang assisted such as Noel's attack on cleaning up, making consistent and nicely scoping our enumerations. Stephan's drive to detect and remove implicit bool conversion, switching many inline methods from sal_Bool (really an unsigned char) to a true 'bool' whever possible, and several other helpful plugins.
Unit testing
We also built and executed more unit tests with LibreOffice 5.0 to avoid regressions as we change the code. Grepping for the relevant TEST and ASSERT macros we continue to grow the number of unit tests:

Our ideal is that every bug that is fixed gets a unit test to stop it ever recurring. With around 800 commits, and over seventy committers to the unit tests in 5.0 it is hard to list everyone involved here, apologies for that; what follows is a sorted list of those with over 10x commits to the relevant
qa/ directories:
Miklos Vajna (Collabora), Markus Mohrhard, Caolán McNamara (RedHat) Stephan Bergmann (RedHat), Noel Grandin (Peralex), Michael Meeks (Collabora), Michael Stahl (RedHat), Zolnai Tamás, Tor Lillqvist (Collabora), Bjoern Michaelsen (Canonical), Eike Rathke (RedHat), Takeshi Abe, Andras Timar (Collabora), PriyankaGaikwad (Synerzip) Windows Testing
While we have had a subset of unit tests that we run at compile time on Windows, our larger battery of make check tests has been hindered by strange thread-affine behavior on Windows related to handling various Window and event resources. Thanks to various locking, and inter- thread messaging fixes from Michael Stahl (RedHat), and Stephan Bergmann (Redhat) we now have far more robust and reliable unit testing on Windows.
QA / bugzilla
One metric we watch in the ESC call is who is in the top ten in the freedesktop Weekly bug summary. Here is a list of the people who have appeared more than five times in the weekly list of top bug closers in order of frequency of appearance: Adolfo Jayme, Beluga, Caolán McNamara (RedHat), raal, Julien Nabet, Jean-Baptiste Faure, Markus Mohrhard, m.a.riosv, Gordo, V Stuart Foote, Eike Rathke (RedHat), Andras Timar (Collabora), Alex Thurgood, Yousuf (Jay) Philips, Miklos Vajna (Collabora), Joel Madero, Cor Nouws, Michael Stahl (RedHat), Michael Meeks (Collabora), Matthew Francis, David Tardon (Redhat), tommy27, Timur, Robinson Tryon (qubit) (TDF). And thanks to the many others that helped to close and triage so many bugs for this release.
Jenkins / CI
Thanks to Norbert Thiebaud - we now have some rather excellent Jenkins / CI integration with gerrit, to allow us to test-build all incoming patches across our three major platforms. Using CI to test patches before pushing them to master has become another valuable tool to increase the quality of master (and thus its accessibility to casual builders), and to allow those without access to Windows & Mac devices to check their code builds there. Thanks to ByteMark and TDF donors we hope to have even more, fast hardware to throw at the CI build farm soon making this an even more attractive route to test submitted code. With over 25,000 builds from 13 build slaves since the beginning of the year (which compares favourably with the around 11,000 commits, it is hoped that with enough hardware we can compile and run tests vs. all incoming commits in future without introducing excessive latency.
Also for the next development cycle we have enabled tests beyond those run during compile. We enable a slew of extra assertions in a dbgutil build and run make check at least on Linux to apply a much larger set of extra tests to each individual commit.
Expanded bibisect
In this cycle we expanded the great Bi(nary)Bisect(ion) repositories - which contain thousands of compressed pre-built binaries to allow end-users to quickly ascertain almost down to a single commit that introduced a regression long after the date - to include Mac and Windows builds for the 5.0 epoch (ie. the range from the 4.4 branch to 5.0 branching. The 5.1 epoch is being built and refreshed reasonably regularly. Many thanks to Norbert Thiebaud, Matthew Jay Francis & Robinson Tryon (qubit) (TDF)
Code cleanup
Code that is dirty should be cleaned up - so we did a lot of that left & right:
Upgrading to (a) C++11 subset
In the 5.0 release we started to move more aggressively to the subset of C++11 we can now use with our updated compiler baselined. Features such as variadic templates, simpler initializations, and more. Work also involved removing deprecated std:: functions such as std::ptr_fun using std::any_of & std::none_of and other newer constructs such as auto. Thanks goes to many hackers cleaning the code including Stephan Bergmann (RedHat), Takeshi Abe, Nathan Yee, Bjoern Michaelsen (Canonical) and others.
Framework Cleanup
Thanks to Maxim Monastirsky we saved many hundreds lines of duplicate code from the framework, by creating nice generic controllers that could be controlled via small, clean XML configuration descriptions - great to see such cleanups.
Expanding integer id types
A number of legacy structures in LibreOffice have used 16bit indicees, and stored / serialied these to various structures for many years. This can cause problems with very large mail merged - such as those in-use at Munich City. Thanks to Katarina Behrens (CIB) - Writer in 5.0 allows more than 64k of: Page Descriptions, Sections and Style Names.
Ongoing German Comment redux
We continued to make progress, but somehow the last ~5000 lines of comment persistently appear to defy translation. Answers by E-mail postcard from German speakers much appreciated. Many thanks to: Michael Weghorn, Michael Jaumann (Munich), Daniel Sikeler (Munich), Albert Thuswaldner, Christian M. Heller, Philipp Weissenbacher. There are now only the following eight modules left to do: include, reportdesign, rsc, sc, sfx2, stoc, svx, sw
std:: containers
A systematic set of improvements to our usage of the std:: containers has been going on through the code. Things like avoiding inheritance from std::vector, changing std::deque to std::vector and starting to use the newer C++ constructs for iteration like for (auto& it : aTheContainer) { ... }. There are many people to credit here, thanks to Stephan Bergmann (Red Hat), Takeshi Abe, Tor Lillqvist (Collabora), Caolán McNamara (Red Hat), Michaël Lefèvre, and many others.
Writer
Thanks to Bjoern Michaelsen (Canonical) we have had a few key, long desired writer cleanups in 5.0. These include:
- Improvement and re-factoring of a number of core Writer UNO implementations around tables, reducing the code by some 20% and eliminating some code duplication. Unit tests have been added and it should now be easier to add further, including tests that check the writer core.
- Clean-up some very old classes implementing the observer pattern in a clunky way (
SwClient/SwModify), also adding a test harness to clarify its interface. Ultimately, the goal is to move away from this implementation towards one of the more modern implementations we use elsewhere. This work should help find a migration path later. - Consolidated multiple ad-hoc implementations of intrusive double-linked lists into one
sw::Ring and adding tests to clarify its interface. - Use compiler plugins to hunt for both the deepest cascading conditional expressions and assignments happening during evaluation of conditionals, which is errorprone, and expand the worst offenders into something that is more readable and debuggable.
writerfilter's resourcemodel
The resourcemodel building block of writerfilter (that handles Writer’s DOCX and RTF import in LibreOffice) was basically a bucket of old and unused stuff. The few still needed pieces from it are now moved into the relevant mapper/tokenizer/filter parts, and the rest is now removed. You can read more detail thanks to Miklos Vajna (Collabora).
Other wins
We had a number of other wins that are somewhat difficult to categorize, but well worth noting:
OOXML vs. MS Office 2007
MS Office 2007 has an unhelpfully different set of default values for many of its attributes - ie. the same XML (with an attribute ommitted) can produce different results in Office 2007 and later versions. Clearly this is a little irritating. Thanks to Markus Mohrhard for adding some infrastructure (and a set of fixes) for known problematic attributes in this regard. This should improve our interoperability with the zoo of documents out there.
Android - file-system abstraction
Thanks to TDF's donors and Jacobo Aragunde Pérez (Igalia) we implemented an abstract file-system API for Android - to allow arbitrary file-system backends to be plugged in (in a separate thread). An example OwnCloud backend was implemented to show-case this.
Base bits
Thanks to Matthew Nicholls we removed a couple of thousand lines of redundant wrappers in svx's dbtoolsclient - which was duplicated elsewhere in connectivity. Great to see this much cruft leave the code-base.
Getting involved
I hope you get the idea that more developers continue to find a home at LibreOffice and work together to complete some rather significant work both under the hood, and also on the surface. If you want to get involved there are plenty of great people to meet and work alongside. As you can see individuals make a huge impact to the diversity of LibreOffice (the colour legends on the right should be read left to right, top to bottom, which maps to top down in the chart):
And also in terms of diversity of code commits, we love to see the unaffiliated volunteers contribution by volume, though clearly the volume and balance changes with the season, release cycle, and volunteers vacation / business plans:
Naturally we maintain a list of small, bite-sized tasks which you can use to get involved at our Easy Hacks page, with simple build / setup instructions. It is extremely easy to build LibreOffice, each easy-hack should have code pointers and be a nicely self contained task that is easy to solve. In addition some of them are really nice-to-have features or performance improvements. Please do consider getting stuck in with something.
Another thing that really helps is running pre-release builds and reporting bugs just grab and install a pre-release and you're ready to contribute alongside the rest of the development team.
Conclusion
LibreOffice 5.0 is a great new foundation for building the next series of releases which will incrementally improve not only features, but also the foundation of the Free Software office suite. It is of course not perfect yet, this is the first in a long series of monthly 5.0.x releases, and six monthly 5.x releases which will bring a stream of bug fixes and quality improvements over the next months and years.
I hope you enjoy LibreOffice 5.0.0, thanks for reading, don't forget to checkout the user visible feature page and thank you for supporting LibreOffice.
Raw data for many of the above graphs is available.
2015-08-04 Tuesday.
- Up earlyish, out on a small boat across the lake to the fine palace on an island in the lake, beautiful paintings (some on marble), extraordinarily lush, but wall-less bedrooms. Wandered the tiered gardens, saw white peacocks and a fine aviary, on by boat to the next long fishing island.
- Babes seduced by (overpriced) leather handbag shopping, a sign of things to come methinks; restraint exercised. Ate on the beach, wandered around the island, back home via supermarket.
- Made some pasta for the babes, Italo arrived - enjoyed some great company, and an interview, talked late into the evening together and forgot to eat; botheration.
- Up extremely late trying to make the 5.0 under-the-hood write-up less incomplete - apologies to all who were left out, just skimming 11k commits to try to see the big picture takes hours, I'm sure many less-noisy committers got lost.
2015-08-03 Monday.
- Up early, chat with Niall - worked on 5.0 under the hood bits in the car - how is it that I get a good 4G signal climbing up to the Simplon Pass in a (short) tunnel in Switzerland ?
- Arrived by Lake Maggiore - managed to find the house up a rather windy road up the hillside - a beautiful place with a lovely view. Walked into Baveno to swim at the beach, did some shopping at reasonable prices; pizza on the lakeside, gellato & walked back to bed.
2015-08-02 Sunday.
- Up lateish; off to Lukerbad - a beautiful spa town at the end of an impressive mountain valley, wonderful hot water baths, flumes, sauna, soaking, freezing water, outside pools with mountain views; wow. Home for tea; All Souls sermon from Rico Tice as a family; put babes to bed.
2015-08-01 Saturday.
- Rather a busy morning, worked on under the hood bits in LibreOffice 5.0. Out to see a largeish underground lake nearby in Sion - the roof made of gypsum - with 20m roof-bolts to hold it up; pleasant.
- Walked up to Sion castle - enjoyed climbing the tower & seeing the Chapel's frescos, along with meeting a pleasant Swiss family.
- Back for some Jeeves & Wooster, read LOTR to the babes, fine fireworks across the valley for the Swiss National day.
2015-07-31 Friday.
- Up earlyish; some slugging, checked mail; up to Plain-Mort, and walked down to Violette - rather a fine walk in the sun - lovely. Back for a call which didn't happen. Cakes & working on a write-up for 5.0.
2015-07-30 Thursday.
- Up late, lots of slugging, read books, played games, lunch. Out for a short walk to the fine Christ-la-Roi statue nearby in Lens, lovely day. Back for Racelette with the babes. Bit of mail chew etc.
2015-07-29 Wednesday.
- Breakfast & off by car to the Grand Dixence Dam The world's largest gravity dam - a most impressive climb up to it, a fine view of glaciers in the valley, only 256m full currently. Then smothered in cloud. Cable-car down, quick lunch, and on a tour inside the dam - which has plenty of rather fine tunnels with a display to boot. Having a ~2km hydro-electric head must be good, but no-where near Itaipu for raw power of course.
- Drove home via Lidl - cheap food in Switzerland is only expensive - rather than obscenely so. Lots of very winding roads to climb and descend the valleys.
2015-07-28 Tuesday.
- Up, made packed lunch. Drive into Crans and took the lift up to Cry d'Er, a stiff walk up to Bellalui - managed to locate the Matterhorn - just not visible from the flat - occluded by other mountains.
- Walked along rather a knife-edge towards Col du Pochet, took a hair-raising ~40ft ladder journey with four small babes down past a number of plaques / crosses in memory of those that didn't make it; urk. Finally on sensible terrain again - walked back to Violettes cable-car, and bus back to the car.
- Bought cakes, enjoyed them at home, Howels Moving Castle - put babes to bed, watched parts of House of Cards a noxious but intriguing drama.
2015-07-27 Monday.
- Up late, Squirrel-walk into Montana, misc. shopping action, played in the playground, played mini-golf, walked around the lakes. Bought cakes, enjoyed them at home, relaxing.
2015-07-26 Sunday.
- Up early; packed breakfast, bought lift passes for several days. Up to Violettes and on upwards to the Plaine Morte. Walked down to the glacier, H. N. M. & myself went to stand on the edge of it - and admire the streams disappearing into inviting tunnels under the ice. Somewhat sobered to discover that the apparently looking solid, shale covered ground had a crevasse nearby showing some meters of ice underneath the soil. Back up the valley; to the ~3km peak.
- Down by cable-car, lunch at Violette, set off down to the midway car at Les Marolires, walked back to the flat. Family Bible Study, crisps, Jeeves & Wooster, spaghetti tea, put babes to bed, LOTR.
2015-07-25 Saturday.
- Up early; packed, drove - with more driving to Montana in Switzerland. A series of four rather good little girls, and a Father trying to get low-latency bluetooth audio (for laptop DVD playing) working (a failure), then finally a cable of the right length was purchased - but the buzz from the AC converter to power the show was too noisy; hmm - so mostly quiet movies.
- Switzerland simply lovely - mountains (though very little snow), staggering vistas, beautiful lakes, fantastic. Drove to the flat, unpacked, tea on the balcony, etc. Put babes to bed, and read them LOTR.
/ul>
2015-07-24 Friday.
- Up very early; into town to the Eifel Tower, queued and enjoyed it immensely - N. very pleased with her requested trip; walked down from 2nd floor enjoying the triumph of angle-iron & plate-steel. Paris looks somehow cleaner and whiter than London.
- Navigated the impressive queue at Notre Dame, and enjoyed the 'flower windows' and fine vaulting / buttressing. Walked to Chatelet and thence on to Rome.
- Met up with Charles, Melissa & baby for some picnic excellence in a nearby park (with playground) - good to catch up. Trains and Trams back variously, out to buy some food; ate; bed.
2015-07-23 Thursday.
- Up earlyish, last minute packing; set off for Dover - hopefully its possible to get past the striking French dockers. Lorries stacking several junctions up the M20. Only an hour delayed.
- Intense driving fun down to Paris; met lovely AirBnB host near Aulney sur Bois; out for a walk along the canal in the evening trying to teach French from passing signs to small people. Bed.
2015-07-22 Wednesday.
- Lots of deck clearing for holidays; train into Cambridge, built ESC stats & agenda etc. Several re-imagings of Windows 8.1 - which appears to work rather well at finding drivers for older hardware and auto-configuring itself - almost as good as Linux.
- Home; lost of packing action until late. Discovered it is reasonably easy to un-bolt and remove the central Prius+ seat with a few bolts. Seat amazingly heavy - clearly a chunk of the 2x Tonnes of car is just seats.
2015-07-21 Tuesday.
- J's birthday - some present un-wrapping action. Slogged away at Presenter Console / Impress for a good while; what a mess; mail; admin; review. Out to a local Karting track with Hannah, Emily, Katie, Elize & Paris - lots of fun. Back for a fine party tea. Put babes to bed. Back to slideshow - found a fix finally.
2015-07-20 Monday.
- Mail chew, 1:1 with Kendy, Niall, lunch with H. team call. Mail chew, booked LibreOffice conference travel - thank God for RyanAir direct Stansted to Arhus; wow.
- Legal review, second team meeting.
2015-07-19 Sunday.
- Off to NCC, tried to help the older kidlets understand Good Shepherds; home for a pizza lunch, got singing our quartet surprisingly well in harmony. Tried to replicate that with other music - not so easy.
- Advanced slugging, read books, lazed, Yes Minister in the evening. Bed.
2015-07-18 Saturday.
- Drove to Bruce & Anne's for a combined 80th and 45th birthday party celebration; a lovely time had by all, fine food, weather, wider family company etc. Babes played a quartet or two to celebrate. Chewed mail on the way home in the car, undid some data-loss, filed an easy-hack, etc.
2015-07-17 Friday.
- Up early; train into Cambridge not running, struck by lightning overnight or somesuch. Drove 5x stranded others into Cambridge. Battled with awful Windows machines & hardware.
- Meeting with Philippe & Tracie; quick lunch, back to battling hardware. Unbelievably broken Windows 7 - blue-screen and auto-re-booting with a totally generic crash-dump despite a full Acer BIOS & Intel driver upgrade, endless disk manager fiddling etc.. Attempted to install Windows 8 - after struggling to disable the horrendous anti-Linux 'secure-boot' foo - then external USB CD drive refused to play with the BIOS; irritating. Attempted to debug other thermal issues fruitlessly.
- Home via picking up kids, relaxed watched Yes Minister with them; bit more hackery before bed.
2015-07-16 Thursday.
- Mail chew, ESC call, Advisory Board call, worked on financials, misc. ranking bits.
2015-07-15 Wednesday.
- Spammed people wrt. regression testing ideas and started collating votes. Mail chew, poked at configmgr write noise, and odd effects around inlining in Calc.
- Miriam returned from Thorpe Woodlands having a great time, with lots of frenetic exercise .
2015-07-14 Tuesday.
- Mail chew; calls, fixed a 'base' crasher nasty; built ESC agenda - chased slideshow horrors; wow the slideshow presenter code has just some amazing things in it - its own timer thread, queues of idle handlers and user event posting to poke other idle queueing of screen rendering bits, un-necessary UNO interfaces and much more.
2015-07-13 Monday.
- Mail chew, 1:1 calls, lunch, dropped J to school. Team meeting. Into Cambridge, lots of fooling around with servers, swapping RAM banks, tweaking SSDs, several windows 7 blue-screens trying to format and partition a disk; eventually had to do that using Linux; DHCP mending with Vivek.
- Philippe arrived, then Guy & Katia - lovely to meet her; out for a fine dinner all together in town; quickly back via the office, train home, bed late.
2015-07-12 Sunday.
- Up earlyish; out to the Academy, spoke, home for lunch. Much slugging, watched a DVD with the babes, dinner, put people to bed early.
2015-07-11 Saturday.
- Up lateish; pottered out into town shopping with N. to have a drink & cake out with her to celebrate her grade 3 Violin yesterday - fun.
- Home; worked on Colossians 1 sermon; lots of breaking up the word & collating different gems from it.
- Parents over in the evening, enjoyed catching up with them.
2015-07-10 Friday.
- Mail chew; into the office, plugged away at hardware upgrades, SSDs into several machines, new hardware to configure - boggled again at Windows 8.1's appalling driver lameness: no network support out of the box as you expect on Linux. Eventually got things working(ish). Swapped RAM to try to find a compiler issue, failed, train home rather late. Bed.
2015-07-09 Thursday.
- Mail chew; and more mail chew, lunch. Chased various bugs, CI a bit overloaded on the eve of the -5-0-0 branch off, pushed several obvious looking fixes directly. Out to buy SATA cables, and poked at configuring my windows machine to be multi-head.
2015-07-08 Wednesday.
- Started on The Ship that Sang - fun; mail chew, poked at bugs, patches, posted ESC agenda, finally filed a batch of expenses, and pending E-mail.
2015-07-07 Tuesday.
- Up too early; 6:09 train to London, setup at the Open Source, Open Standards exhibition - lots of interesting discussion with lots of interested people - good stuff. Good to catch up with Simon.
- Back home via. picking up M., dinner with Lydia, Janice, Faith & Julia. Worked late nailing a slideshow bug.
2015-07-06 Monday.
- Mail chew; pleased to see Caolan's blog on the crash-testing results - great to see the combination of Markus' hard work getting this setup, TDF's investment in the beefy hardware, and of course Caolan, Michael Stahl & other's hard work clobbering regressions to get us down to a zero that (hopefully) the hardware can keep us glued to.
- Back to back calls all day, 1:1's 1:2's, team calls, dinner - and a customer call.
2015-07-05 Sunday.
- Off to a baptism at re:new and a shared lunch which was interesting, back in the afternoon slept on the sofa; pizza dinner, dancing competition on the trampoline, read stories; bed.
2015-07-04 Saturday.
- Up lateish, J. returned babes to their abodes left & right. Out to Holkam beach en-masse; lots of wonderful sun, sea, sand, swimming, digging, relaxing, reading - sun-burning and so on. Fish & Chips in the car on the way home tired.
2015-07-03 Friday.
- Mail chew, partner call, admin, lunch, interview, poked at some profiles; got to a bug fix: fun. Innundated by an endless series of little girls - 8x or so, took a brace to Friday-Club, movies, sleep-overs, the works.
2015-07-02 Thursday.
- Into Cambridge to attempt to nurse some poorly prototype hardware in the nice cool server room (on a hot day). More (mobile) prototype hardware arrived by mail. Back home, ESC call.
2015-07-01 Wednesday.
- Another day packed with alternating between different bits of admin, mail review, transcript fixing, conference planning. Partner call, got to fix a bug - fun.
2015-06-30 Tuesday.
- Catch up with JRB. Alternated between different bits of administration, trying to intersperse the more horrendous stuff between the less dull bits. Partner call.
2015-06-29 Monday.
- Up early, breakfast, mail chew, fun. Lots of 1:1 meetings, also fun; 2x team meetings, budgeting, invoicing, project reviews, SOW construction - lots of admin.
2015-06-28 Sunday.
- Up lateish; Isleham for church - a lady talking on spiritual jubilee; back for a fine pizza lunch. Out for a walk in the afternoon to a small, nearby motte & bailey from ~1000AD. Back for tea, stories, bed.
2015-06-27 Saturday.
- Very lazy day; up very early reading Vernor Vinge - what did Jeremy Allison do to me ? breakfast, slugged, read etc. most of the day. Interspersed with misc. home maintenance. BBQ in the evening.
2015-06-26 Friday.
- Mail chew, call with Mike, code reading, admin. Plugged away building & testing code variously. Maurizio over in the evening.
2015-06-25 Thursday.
- Up rather early; into London for a Westminster eForum on procurement, nice to see Whitehall in the sun. Met some interesting guys - curious to see Microsoft's view of the five year future including only rather trivial combinations of today's technology, whereas a question from Agiliysys on Artificial Intelligence automating beaurocratic tasks. Which is right I wonder.
2015-06-24 Wednesday.
- Mail chew, and more mail - does it never end ? lunch with Tony. More meetings, hackery etc. TDF board call. Fixed a trivial bug, isolated another.
2015-06-23 Tuesday.
- Into London for the Public Sector Show with Tim - not an ideal event - missed a couple of interesting people. Train home early. Mail chew on the train, more work at home, lovely dinner with the family. Bible study with Arun in the evening.
2015-06-22 Monday.
- Up early, music practices, mail chew, fixed embedded font bits for the headless backend. Endless meetings and 1:1's much of the day, worked on data for customers.
- Pleased to see GNOME Documents integration starting to look screen-cast-able, thanks to great work from our GSOC student Pranav (with Miklos' mentoring).
2015-06-21 Sunday.
- Up early; off to NCC to practise with Jackie & Peter. Played in the service, Tony spoke about service. Good to catch up with many afterwards. Back for a big BBQ lunch with various creative Father's Day cards - lovely.
- Practiced various quartets; needs individual practice too it seems. Out for a family bike-ride, fun. Played lego house building, read the start of Rendezvous with Rama to babes generally, long stories & bed early.
2015-06-20 Saturday.
- Up lateish; fixed a LibreOffice bug, pushed last night's fix; breakfast. Carpet & floor-boards up to see if there is a gas-connection near the fireplace, eventually located one. Out to buy and fit a new toilet seat - now with magic dash-pot to retard closing: hopefully more robust than the previous version.
- Emily over in the afternoon, watched Heaven is for real - spiritual candy-floss; enjoyable - while building your life on something more rocky. Late-night bug triage / chasing.
2015-06-19 Friday.
- Into Cambridge, caught up with Tracie & Lucy. Interesting customer meeting; picnic lunch in the Botanical Gardens with the office guys; sync. with Niall, train home, picked up babes; more mail.
- Watched the last Potter movie with M. Up late chasing a LibreOffice bug to its ancient roots.
2015-06-18 Thursday.
- Breakfast in bed; and a fine crop of birthday presents: primarily pretty clothes for J. and Sci-fi books to read to the kids with a crate of craft ciders. Mail chew, etc. out for a walk in the countryside with J. - oddly and encouragingly child-less.
- Partner call, project update call, ESC call, project update call.
2015-06-17 Wednesday.
- Built code overnight, checked out, chewed mail, reviewed bugs etc. on the train. Poked away at bugs, text review etc.
- Plane, train - dug into some basebmp evilness with mask bitmaps, a horrifying un-readble / debugging Vigra template morass.
- Lovely to be home with the wife & family again.
2015-06-16 Tuesday.
- To the venue, an interesting overview of cloud bits. I have a growing suspicion that I know where some of the sysadmins went; they transmogrified into Cloud Infrastructure Engineers.
- Quested for a Euro-compatible power socket fruitlessly, back to the hotel for a positive customer call. Prepped slideware and demos: worryingly robust - can this really be the bleeding edge ? Back to UniS - gave a talk, chatted to many people afterwards.
- Slides available as hybrid-PDF:
- Out for dinner with Markus W - to celebrate the PDF signing crowd-funding campaign. Up late with some interesting guys.
2015-06-15 Monday.
- Up early, off to the Swiss Open Cloud Day (tomorrow) in Bern, somewhat unfortunate acronym (OCD) - should be dead fun. Train met a friend, train met an SI.
- My 2nd AirBnB booking for Bern dropped out - hmm, lets hope they have comfortable park-benches. Met a Linda previously with SIL in Africa on the plane; finally found a place to stay; great mobile data connectivity on the train to Bern, and extremely beautiful scenery.
- Found a hotel somehow; mail chew; slide creation, bed.
2015-06-14 Sunday.
- Excited present unwrapping with E. - lots of fun lego bits, got 1kg of mixed 2nd hand lego; will that reduce the resource contention just or exacerbate it ?
- Off to NCC, sermon on the choice of the next sermon series, good to catch up with lots of people afterwards. Lamb roast lunch.
- David over in the afternoon, good to chat - kindly donated several original female lego-people to the cause. Much slugging, tea, stories, bed early.
2015-06-13 Saturday.
- E's seventh birthday party - helped make egg & sandwiches etc. prep. party food; morning / lunch-party - played garden games in the mixed weather, water-pistol fight towards the end.
- Slugged, watched movie, bit of hackery, patch review, bug triage etc. bed early, watched a movie about a writer living in a castle.
2015-06-12 Friday.
- Interesting partner meetings; dug into a particularly interesting idle handler bug with Miklos - seems writer has always had a spell-check timer that failed to stop triggering - now we execute those bits far faster, we can get a 100% busy loop in some cases.
- Bruce & Anne over for lunch - good to catch up with them.
2015-06-11 Thursday.
- Travel to London for a partner meeting; great to see some old friends, albeit far too briefly. Presented, demo'd, train home, unwound a silly problem with the last warning output from Noel's newest VclPtr plugin and pushed it to Jenkins for some CI goodness.
2015-06-10 Wednesday.
- Beat back the mail flow, board call, partner call.
2015-06-09 Tuesday.
- Mail chew, partner call; built ESC agenda, stats. etc. More partner calls.
2015-06-08 Monday.
- 1:1 calls variously, lunch, team meeting. Poked at misc. bugs and built some better ESC stats scripting.
2015-06-07 Sunday.
- Up lateish; off to a Church bash on Studlands Park, played Violin in the band; free hot-dogs, free cakes, free (giant) bouncy castle; various games etc. at the center of the local community: fun, and lovely weather for it.
- Home, slugging in the garden, reading & relaxing; good, Yes Minister with older babes in the evening.
2015-06-06 Saturday.
- Up earlyish, off to Wicksteed Park - lots of excitement, particularly from E. - her first go on the roller-coaster. Enjoyed a number of rides, and a go-cart race between H. J and myself driving the rest of the family.
- Alan & Claire arrived; caught up with them - played on various bits - swinging pirate ships, dodgems etc. much fun had by all; a fine lunch on the green, talked over life enjoyed the company.
- More rides; bid 'bye eventually; fish & chips in the car on the way home, managed to survive a lot of standing up somehow today. Put babes to bed. Found that Jenkins had passed the patch I'd been testing during the day, pushed it. Watched of 'The Quartet' with J.
2015-06-05 Friday.
- Mail chew; finally a bit of hackery; ran some timings on 'make check' and filed another Easy Hack to improve dbgutil performance.
- Encourging to see Cor publish a 60 page LibreOffice vs. OpenOffice comparison - which rather beats my original (by now obsolete) from 2012, it'd be great to keep that up-to-date though it's quite a job.
2015-06-04 Thursday.
- Up late; mail chew; sync. with Niall caught up with Mike. ESC call, posted minutes etc. Contract review.
2015-06-03 Wednesday.
- Up early; mail chew; contract bits; customer call; sync. with Niall, more contract bits.
2015-06-02 Tuesday.
- Up early, mail chew; elevating one leg all the time is a pain. Worked through admin tasks, tried to get to hacking. Customer call.
2015-06-01 Monday.
- Back to work; mail chew; 1:1's with the team variously. Lunch, team call, chat with Kendy. Team call. Out to the Doctor's who said the previous doctor gave me a "practically homeopathic" antibiotic perscription, and put me on the "domestos" version instead.
- J. meeting in the evening, worked late with the leg up.
2015-05-31 Sunday.
- Leg still worse, missed church & slept much of the morning; read stories to babes, chatted to M&D etc. most of the day.
2015-05-30 Saturday.
- Up lateish; set off to Ickworth House with the parents; an unexpected wool festival going on there too. Celulitius much worse in leg & spreading; off to get antibiotics with J. Lay with it elevated a lot.
2015-05-29 Friday.
- Mail chew, closed a few bugs; interview; parents over in the evening.
2015-05-28 Thursday.
- Up early; mail chew; call with Niall, admin; CRM bits, filed holiday; signed CP up for OIN. Chat with lfrb.
2015-05-27 Wednesday.
- Day off - up late, into Cambridge; wandered around the Fitzwilliam Museum a bit with the babes, interesting place. Lunch in the courtyard outside in the sun. Back to the office for a partner call, then a customer call; picked by by a homebound family; TDF board call. Worked late.
2015-05-26 Tuesday.
- Mail chew; pushed a few patches; Linux Format Column; customer call, chat with Niall, team call; more hackery.
2015-05-25 Monday.
- Up lateish; off to Bruce & Anne's for a Warren End party. Good to meet up with Sue, Clive & boys; as well as lots of neighbours. Hacked in the car on the way back.
2015-05-24 Sunday.
- Up late; read news, watched fascinating SpaceX GPU compute talk. J. and babes home in the afternoon; nasty cellulitis infected bite in leg - hmm. Out to Histon Baptist church for an afternoon service; pizza; bed early.
2015-05-23 Saturday.
- Up early; into Cambridge together by train, encouraged to have Andrzej and Ben show up - and see Andrzej's nice calc work; and get Ben's GSOC bits started. Many left; out for curry with Bjoern, Thorsten, Ben & Andrzej. Back home late; hacked on some bits until even later.
2015-05-22 Friday.
- Up early; train together to Cambridge - more hack-fest goodness much of the day; fixed a number of VclPtr issues.
- Out punting in the evening with the lads; back for a swift drink & train home. Talked with team, bed late.
2015-05-21 Thursday.
- Up early; breakfast & music practise with babes; breakfast with the guys; E-mail, drove into Cambridge - thanks to Doree - hackfest has food, rooms setup. Sam out to buy hubs, people started to arrive; encouraging to see such a great collection of hackers working away.
- Out to the Cambridge Beer Festival in the evening, thanks to them for sponsoring the conference attendee's presence; fun - talked until late. Drove the team home - 7x seats full of adults - unusual.
2015-05-20 Wednesday.
- Up early; into Cambridge - Andras & Kendy showed up, Quarterly review, lunch while working; misc. paperwork left & right. Back home for a roast meal, up late.
2015-05-19 Tuesday.
- Mail chew; slideware production & stats generation. Built ESC stats & agenda. Sam over in the evening, followed by Niall - good to catch up with them.
2015-05-18 Monday.
- Mail chew, document review, 1:1 calls variously. Lunch, team meeting, mail - dug at a SplitWindow regression; team meeting.
- Fit new Dishwasher catch. Re-assembled the bath, having angle-ground offending nails off the back of the panelling.
2015-05-17 Sunday.
- Up early; played violin at NCC; home for a fine lunch. Slept a chunk of the afternoon, dis-assembled the bath to clear the U-bend at some considerable length. The trainee-carpenter's "Easy to remove" ignored a large number of concealed screws, over-long nails & more; hmm.
2015-05-16 Saturday.
- Up earlyish; helped N. with LibreOffice draw - building a maths board game; replaced tyre on her bike. Attacked M's computer - Mozilla reporting all certificates as invalid even for google: turned out the date was mis-set (surely easy to check and do better here ) - a horribly unhelpful error message though; tweaked.
- Out to Harminda's birthday party; populated by a large group of people from the gym & spec-savers - an interesting lot.
2015-05-15 Friday.
- Mail chew; sync. with Niall; dish washer door catch spring broke; dis-assembled and adapted (a rather weaker one) from another spring. Project review call. Couple of bugs fixed in the evening & a hair cut.
2015-05-14 Thursday
- Into Cambridge, chat with Tim; paperwork; sync. with Tracie. Home early; bug fixing on the train.
2015-05-13 Wednesday
- Finally found my VclPtr horror by using a perl-script to process the gdb H/W watchpoint output; uncovered a rats-nest long overdue for fixing too - the power of applied prayer etc.
- New washing machine arrived; another Hotpoint (now Whirlpool apparently), if it does another decade - will be happy. Set too cleaning the code / rats-nest out. Lunch.
2015-05-12 Tuesday
- Mail chew, chased horror VclPtr smart-ref. counting issue - 2700 acquire/releases - and some of them wrong, for just one object; very strange.
- Partner call; Philippe call.
2015-05-11 Monday
- Mail chew; 1:1's, poked at VclPtr issues. Lunch. Team call. Chat with Tim, more mail chew, another team call.
2015-05-10 Sunday
- Up late with a head full of compressed fluff; in bed much of the morning, family off to church; deck-chair based slugging in the garden in the sun. Paddington movie with six small girls (Amie Jane & Sophie) in the late afternoon; stories, put people to bed.
2015-05-09 Saturday
- Up late; not feeling ideal. Set too trying to buy a new washing machine to be delivered soon. All sites dedicated to this appear to miss the: "I want it soon" angle - "whatever it is I want it Monday" seems to me to be the primary buying criteria for replacing broken stuff; why do people carefully hide that data behind layers of web-fluff ? Finally ordered something.
- Out to clean the church toilets - rota-fun; back and out to a Lode Chapel barbeque; put babes to bed.
2015-05-08 Friday
- Chased bugs & paperwork much of the day; accountants, Companies House, HMRC, etc. Took washing machine partially apart in the evening to diagnose horrendous racket; apparently bearings gone again; 1cm of play on the tub - irritating; only coaxed (almost exactly) another year of life out of the machine.
- Yes Minister with the babes in the evening; J. out at a party; worked late - helped H. with her %ages.
2015-05-07 Thursday
- Lots of VclPtr bug fixing; hmm. 1:1 with Tim, ESC call.
2015-05-06 Wednesday
- Into Cambridge, chewed through some bugs on the train. Meetings, with finance, HR, election fever in the office - luckily already postal voted. A slight irony in all of this is that the Conservatives campaigned vigorously against the (fairer and better) Alternative Vote plan; yet they would probably have got some 2nd or 3rd choice of my (protest) vote if it was in-place.
- Call; hacked at some bugs; beat back E-mail a bit; paperwork. Carlo over late for a lightning tour of Cambridge which was interesting; headed home for an ad-hoc dinner together. Put babes to bed, read stories, poked a bug, sleep.
2015-05-05 Tuesday
- 8am partner call; sync. with Kendy, 1:1's, team meeting. Lunch.
- Interested to see the Roundcube Next Fund-Raiser, looks very interesting. I'm particularly pleased to see (something like) an Affero-LGPL in action: hopefully that will allow a mix of Free Software & Proprietary companies to collaborate on a Free Software core that everyone can re-use, without some awful (C) assignment awfulness around it; nice work Roundcube !
- Built ESC bug stats. Document review; Consulting team call.
2015-05-04 Monday
- Up lateish; big breakfast; out for a walk with the babes in the sun, found a geo-cache; back for a late lunch, slugged in the garden in the sun in a deckchair; and finished reading the babes: "Selling the Wheel". Tea, read long stories, bed. Struggled to sleep - late-night conference fun messes with sleep cycles it seems.
2015-05-03 Sunday
- Up early; off to the conference with Cor; chatted with and caught up with people variously much of the day; checked GUADEC dates: mid-family-holiday sadly. Bus, tram, train, to Eindhoven.
- Airport; charged batteries, filed a few of my queued up Easy Hacks.
- Fixed a VclPtr silly or two on the plane; worked in the coach station.
2015-05-02 Saturday
- Up early; slide hackery; tram to the conference - why can The Netherlands get this Ubicard thing right across bus, train, tram etc. When the UK is still all paper-based ?
- Gave a talk at the openSUSE conference on what's new in LibreOffice:
- Followed by a rather similar talk in the Kolab conference track - to some interesting guys; overall rather a fascinating set of conference attendees. BBQ dinner together, and talked late into the night; back to a cheap hotel with Cor.
2015-05-01 Friday
- Up at 3:30am, flight to Eindhoven, meeting; on to Den Haag, caught up with old friends at the conference - wow, a fun conference with both free food, and free beer. Out for the sponsors dinner in the evening; to a hotel to write slides; up rather late.
2015-04-30 Thursday
- Mail chew, team calls, misc. code fixing, ESC call; late call; later to bed.
2015-04-29 Wednesday
- Mail chew; revenue recognition work; poked at conference travel for the forthcoming openSUSE / Kolab conference.
2015-04-28 Tuesday
- Report review & tweakage, built ESC bug stats, merged VclPtr but enough conflicts that it will need a re-merge to try to keep up with a rapidly moving master branch. Finally merged it.
- Board call while ferrying H. and M. to their lessons variously, stopped at playground on the way back; checked tinderboxen.
- Dinner, read stories to babes; wrote LXF column; mail; bed.
2015-04-27 Monday
- Admin, 1:1 calls , out to Agnes Forsyth's funeral - a lovely Christian lady; a piper at the funeral too. Back for team call, more 1:1's, team call, another 1:1 & dinner. A whole day of meetings; urk. Chatted with J. happily in the evening.
2015-04-26 Sunday
- Out to NCC at the Academy, Helen spoke. Back for lunch, slugging, babes playing in the sun in the street with Sophie. H. home from her fun 'Shine' + sleepover + barn-dance + film bash. Out for a run with J. played 'Bridges' with H. Tea, stories, bed.
2015-04-25 Saturday
- Breakfast, J. out for a seminar on teenage kids at church. Fed three babes - sawed up the last bits of the sofa to bin them; dis-assembled the malfunctioning toilet door - somehow broken its spring(s) - made some split-ring pliars from screws & a bolt with N. cannibalised pantry door for toilet door & ordered new parts.
- Started assembling some flat-pack kitchen units; David arrived, finished the assembly - had a fine pizza dinner together, read stories & talked companionably until late.
2015-04-24 Friday
- Mail chew, admin, misc. calls; got the VclPtr bits passing make check, and building on Mac / Linux / Windows. Not good to merge just before the weekend I suspect. H. out for a sleepover.
- Watched Jane Eyre on the BBC in the evening with Julia - horrific compared to the nuance depth of the book; hardly explicable without reference to it either.
2015-04-23 Thursday
- Reminded by Claire to update my blog; good idea.
- Mail chew; amused to see the pictures from Keith of what building LibreOffice can do to your laptop paint job; though I'm rather a fan of Thinkpads.
- Great to see Tobias and Jennifer's interview written up by Sam; nice work guys.
- Partner call; lunch; ESC call; pushed minutes. Poked at CI builds of VclPtr bits.
2015-04-22 Wednesday
- Customer call, interview, interesting lunch with Andrew Haley. Partner call, sync. with Tomaz, reviewed a nice blog.
2015-04-21 Tuesday
- Meetings with UKTI in the morning, good to catch up with the team. Collabora Quarterly meeting in the afternoon. Acutely irritated by parts2repair.com which appears unable to send me what I ordered; I guess the moral is to check scam adviser first or somesuch.
2015-04-20 Monday
- Wrote status report, 1:1 meetings, 2x team meetings, admin.
2015-04-19 Sunday
- NCC, Tony spoke, slugged much of the afternoon.
2015-04-18 Saturday
- A busy week chasing and missing the Alpha 1 deadline (today). Into Cambridge, fun customer meeting all day with Bob, lunch, museum, punting, etc.
2015-04-15 Wednesday
- Mail chew, partner call; team call; did some modelling and a bit of calc / StarBasic function creation. Built ESC bug stats.
2015-04-14 Tuesday
- Mail chew; plugged at various problems left/right with Noel in gaps. Admin bits, TDF observed acceptance tests. Took H. to hospital - seemingly she fractured her wrist yesterday, got a splint.
2015-04-13 Monday
- Mail chew; 1:1's, mail, product team call; quick lunch; consulting team call; poked a partner. Up late at night fixing VclPtr issues.
2015-04-12 Sunday
- Up; off to NCC; spoke. Home for a passover lunch, and some painting red-paint on door-posts & lintels with branches for fun. Poured over maps of Europe for some holiday planning via France, Germany, Switzerland, Italy etc. perhaps with some business interspersed (DV). Watched From Time to Time with the babes, rather lovely. Dinner, read stories; bed early.
2015-04-11 Saturday
- Up late; slugged a bit, more VclPtr fixing idly in the morning, along with starting to research Colossians 1 in earnest; worked through the day interspersing meals, playing with babes, VclPtr fixing and sermon building for tomorrow until after midnight.
2015-04-10 Friday
- Mail chew, sales bits interspersed with re-basing the VclPtr work - another huge whack of work - both encouraging: lots has changed and improved - code removed & cleaned up; and also disappointment at some needless conflicts; the trials of long-term branches.
- Reviewed Kendy & Miklos' sexy report of the Android editing infrastructure work that has been done; excellent stuff.
2015-04-09 Thursday
- Breakfast, bid 'bye to Niall - started to try to catch-up with vacation mail. Built ESC bug stats & sent agenda. Lunch. ESC call.
- Tried to get a modern llvm/clang installed on my openSUSE 13.1 and failed completely; short of breaking Mesa that seems impossible; tried the binary downloads of 3.5.1 which seem to get tangled with the system versions; sigh - I could really use the benefit of our plugins there.
2015-04-08 Wednesday
- Up early; drove into Cambridge, all-day sales review interspersed by an amusing, office-wide Easter-Egg hunt: dead fun. Out for a drink with the team, dinner with Kat & David in the evening, home with Niall.
2015-04-07 Tuesday
- Drove home, got a bit of work done on the way in the car. Also continued reading Selling the Wheel to the babes (due to popular demand). Got home - disposed of an old sofa by sawing it into pieces to fit into the (free) black-bin, rather than the (for-pay) municipal tip. Discovered a number of moths & a lost Asthma inhaler (1984), some marbles (I knew I'd lost them) and a lot of pens & pencils.
- Hannah dissassembled the Nexus One (debugging the broken power button), called in for a 2nd opinion. The power switch's flex cable is visibly cracked; and (seemingly) the flex assembly is glued into the PCB sandwich making it ... tough to fix. Broke down & bought a new flex assembly for GBP10 - impressed with H's disassembly skills.
- Cleared the house to prepare for Niall's arrival. Up late with Niall and J.
2015-04-06 Monday
- Up too early; off with Dad, Robert & 4x small girls to do a lot of rock-climbing at Brimham Rocks. Lots of fun had by all, exhausting though. Home after some snack-lunch & ice-cream. Late lunch, afternoon of varied slugging, bed early.
2015-04-05 Sunday
- Off to local church for a fine Easter service - putting flowers into chicken-wire to ornament a crude cross symbolizing resurrection; great.
- Back via a tour to the castle, for a fine roast meal. Dug at various tasks that need doing - examined the raised-beds idea, pressure-washed and improved Father's shed base - thanks to Gary: a neighbour (and Kingston/KCOM executive), and put up a washing line. Up late talking with the parents & Robert.
2015-04-04 Saturday
- Up; breakfast, finally got around to filing expenses. Walked into town, played in the castle park with the babes; home; lunch; egg painting with Grandma, poked in the garage with Father.
2015-04-03 Friday
- Out into town, walked up the castle steps, played in the gardens - home with the babes: by now stuck into some great dinosaur / explorer board-game. Helped Father tidy the partially-used paint glut in the garage to improve the arrangement.
- Out in the evening with J. to 'So' for a lovely meal together, and on for a pint at a local pub; good to have some time together - even though we're both exhausted.
2015-04-02 Thursday
- Quick mail poke in the morning; out for a walk to the Fountains Abbey estate - for a seven-bridge walk - a delightful rest in the sun.
2015-04-01 Wednesday
- Up, poked mail; chewed stats; breakfast, packed to set off for Yorkshire. Hacked in the car - cleaned out a number of key VclPtr issues - encouraging to see the bulk of unit tests now passing.
- Good to see Grandma & Grandpa, chatted while the babes disappeared into a frenzy of lego & railway-track construction. Read part of Bodge-It-Yourself to H.
2015-03-31 Tuesday
- Early calls, interview. Out into Ely to try to get some kitchen units sorted out and buy new shoes for small girls. It's good to take some holiday. Back home.
- Simplified our update statistics counter script to do more simple unique IP address counting; previously were blowing all memory on rather big machines by hashing unique IP addresses asking for updates per version; hmm, left the analytics running.
- Late interview, and partner call; slogged through more VclPtr bits.
2015-03-30 Monday
- Up early; round of 1:1's, team meetings, beat back E-mail; tried to take some time off. Chat with Stephan, unwound some more VclPtr construction-time ref-counting madness.
2015-03-29 Sunday
- NCC; enthused at the older kids wrt. Old Testament history, timelines, where various stories fits in a chronology of the ANE. Back for a large lunch.
- Set too moving bits around the house, piano out of my office, sofas around the place; built a standing desk from an old door, as an alternative.
2015-03-28 Saturday
- Drove to Reading to Stephanie's 18th birthday party; lots of fun with the family - somewhat moderated by an hour of delay on a shut M25 - in the sun; read 'Selling the Wheel' to the babes who were (surprisingly) interested.
2015-03-27 Friday
- Plugged away at mail and VclPtr problems. Harry Potter with babes in the evening.
2015-03-26 Thursday
- Mihai posted a nice blog with a small video of LibreOffice Online in action - hopefully we'll have a higher-resoluton version that doesn't feature some bearded idiot next time.
- Out to the Dentist for some drilling action. Back for some mail beat-back. Quick lunch, into Soham to collect H. and take her for her Viola exam, met her teacher. Celebratory ice-cream and hot chocolate.
- Home, profile reading, customer estimations. Dinner, put babes to bed re-organised office routing, cabling etc, moved machines downstairs.
LibreOffice On-Line & IceWarp
Today we announced a collaboration between IceWarp and Collabora to start the creation of LibreOffice On-Line, a scalable, cloud-hostable, full featured version of LibreOffice. My hope is that this has a huge and positive impact for the Free Software community, the business ecosystem, personal privacy, and more. Indeed, this is really one of the last big missing pieces that needs solving (alongside the Android version which is well underway). But wait - this post is supposed to be technical; lets get back to the code.
A prototype - with promise
At the beginning of the LibreOffice project, I created (for our first Paris Conference) a prototype of LibreOffice On-Line using Alex Laarson's (awesome) GTK+ Broadway - you can still see videos of that around the place. Great as the Broadway approach is (it provides essentially a simple Virtual Desktop model into your browser), the prototype taught us several important things which we plan to get right in LibreOffice On-Line:
- Performance - the Broadway model has the advantage of presenting the full application UI, however every time we want to do anything in the document - such as selecting, panning, or even blinking the cursor; we had to send new image fragments from the server: not ideal.
- Memory consumption / Scalability - another side effect of this is that, no matter how un-responsive the user is (how many tabs are you long-term-not-looking-at in your browser right now) it was necessary to have a full LibreOffice process running to be responsive & store the document. That memory consumption naturally significantly limits the ability to handle many concurrent clients.
- Scripting / web-like UI - it would have been possible to extend the gtk javascript to allow tunnelling bespoke commands through to LibreOffice to allow the wrapping of custom UI, but still the work to provide user interface that is expected on the web would be significant.
Having said all this, Broadway was a great basis to prove the feasibility of the concept - and we re-use the underlying concepts; in particular the use of web sockets to provide the low-latency interactions we need. Broadway also worked surprisingly well from eg. a nearby Amazon cloud datacentre. Similarly having full-fidelity rendering - is a very attractive proposition, independent of the fonts, or setup of the client.
An improved approach
Caching document views
One of the key realisations behind LibreOffice On-Line is that much of document editing is not the modification itself; a rather large proportion of time is spent reading, reviewing, and browsing documents. Thus by exposing the workings of document rendering to pixels squares (tiles) via LibreOfficeKit we can cache large chunks of the document content both on the server, and in the client's browser. As the users read though a document, or re-visit it, there is no need to communicate at all with the server, or even (after an initial rendering run) to have a LibreOfficeKit instance around there either.
Thus in this mode, the ability of the browser's Javascript to understand things about the document itself allows us to move much more of the pan/zoom reading goodness into your client. That means after an inital (pre)-fetch that responsiveness can be determined more by your local hardware and it's ability to pre-cache than remote server capacity. Interestingly, this same tiled-rendering approach is used by Fennec (Firefox for Android) and LibreOffice for Android to get smooth mobile-device scrolling and rendering, so LibreOfficeKit is already well adapted for this use-case.
Editing live documents
In recent times, The Document Foundation has funded, via the generosity of TDF's donors a chunk of infrastructure work to make it possible to use LibreOfficeKit to create custom document editors. There are several notable pieces of this work that intersect with this; I provide some links to the equivalent work being done for Android from Miklos Vajna:
Cursors & selection
Clearly blinking a cursor is something we can do trivially in the javascript client, rather than on the server; there are however several other interactions that benefit from browser acceleration. Text selection is a big piece of this - re-rendering text on the server simply in order to draw transparent selection rectangles over it makes very little sense - so instead we provide a list of rectangles to render in the browser. Similarly, drawing selection handles and interacting with images is something that can be handled pleasantly in the browser as well.
Keyboard / touch input
Clearly it is necessary to intercept browser keystrokes, gestures and so on, transport these over the websocket and emit them into the LibreOfficeKit core.
Tile invalidation / re-rendering
Clearly when the document changes, it is necessary to re-render and provide new tile data to the client; naturally there is an existing API for this that was put in place right at the start of the Android editing work.
Command invocation
Another piece that is required, is transporting UNO commands, and state (such as 'make it bold', or 'delete it') from the client javascript through into the LibreOfficeKit core. This is a matter again of proxying the required functionality via Javascript. The plan is to make it easy to create custom, bespoke UIs with a bit of CSS / Javascript magic wrapped around and interacting with the remote LibreOfficeKit core.
Serializing selections
Clearly as & when we decide that a user has wandered off, we can save their intermediate document, serialize the cursor location & selection - free up the resources for some other editing process. As/when they return we can then restore that with some small document load delay, as we transparently back their cached view with a live editable LibreOfficeKit instance.
What does that look like roughly ?
Of course, lots of pieces are still moving and subject to change; however here is a perhaps helpful drawing. Naturally integrating with existing storage, orchestration, and security frameworks will be important over time, contributions welcome for your pet framework:
The case for simple collaboration
A final, rather important part of LibreOffice On-Line; which I've left to last is that of collaborative editing.
The problem of generic, asynchronous, multi-instance / multi-device collaborative document editing is essentially horrendous. Solving even the easy problems (ie. re-ordering non-conflicting edits) is non-trivial for any large set of potentially intersecting operations. However, for this case, there are two very significant simplifying factors.
First there is a single, central instance of LibreOfficeKit rendering and providing document tiles to all clients. This significantly reduces the need to a re-order asynchronous change operation stream, it is also the case that editing conflicts should be seen as they are created.
Secondly, there is a controlled, and reasonably tractable set of extremely high-level operations based on abstract document co-ordinates - initially text selection, editing, deletion, object & shape movement, sizing, etc. which can be incrementally grown over time to extend to the core set of editing functionality.
These two simplifications, combined with managing and opportunistically strobing between users' cursor & selection contexts should allow us to provide the core of the document editing functionality.
Show me the code
The code is available as of now in gerrit's online repository. Clearly it is the Alpha not the Omega; the beginning, and not even the end of the beginning - which is a great time to get involved
Conclusion
LibreOffice On-Line is just beginning, there is a lot that remains to be done, and we appreciate help with that as we execute over the next year for IceWarp. A few words about IceWarp - having spent a rather significant amount of time pitching this work to people, and having listened to many requests for it - it is fantastic to be working with a company that can marry that great strategic sense with the resources and execution to actually start something potentially market-changing here; go IceWarp !
2015-03-25 Wednesday
- Happy Document Freedom Day - great to see Collabora partner: write some helpful thoughts about it. Of course we have a nice banner / wrap - and a custom LibreOffice theme that looks like this for the event:
.
2015-03-24 Tuesday
- Prep for Document Freedom Day tomorrow; chewed a lot of mail; misc. calls. Late customer call.
2015-03-23 Monday
- Mail chew, lots of 1:1's. Lunch, team meeting, calls, another team meeting. More calls.
2015-03-22 Sunday
- Off to NCC, spoke, back for a quick lunch. J. out to collect an exhausted H. from a fine YFC weekend, watched a program on time with the older babes. Bed early.
2015-03-21 Saturday
- Up, set about getting some ethernet cabling into the new office through an existing hole. Rather pleasant to have a window to look out of, but cold.
- Plugged away at Colossians 4, oddly biblegateway seems to not respond for me - hopefully due to over-use. Worked on talk for tomorrow until late.
2015-03-20 Friday
- Up early; somehow managed to fit an unfeasibly large desk into the car with J's help - to create the nucleus of a downstairs office.
- Plugged away at E-mail, and VclPtr fixing - finally wrote some documentation of what's going on there; needs some more work before posting to the list though. Plugged away at remaining issues with Noel's help.
- Bruce & Anne over for lunch.
2015-03-19 Thursday
- Chased endless more OutputDevice / VirtualDevice lifecycle conversions through our unit tests. ESC call, more slog.
2015-03-18 Wednesday
- Admin interspersed with chasing horrible lifecycle issues through our unit tests with VclPtr bits in-place.
2015-03-17 Tuesday
- Admin and E-mail backlog, interspersed with small build / bug fixes to retain interest in life. Built ESC bug stats. Lunch with J.
2015-03-16 Monday
- Into Cambridge, 1:1 calls, lunch with Tim, team meeting, met with Basil and Sam; another team meeting, poked at VclPtr cleanup with Noel - really hoping to see the light of day at some stage there. Train home.
- Dinner. Read stories, viola practice with H. customer call until late; bit more hackery; sleep.
2015-03-15 Sunday
- Babes had made J. a whole box full of Mother's day goodies. NCC in the morning, Tony spoke. Home for a fine lunch. Slugged in the afternoon, Bronnie dropped in. Watched a How we got to here documentary on 'Clean' with the babes. Bed.
2015-03-14 Saturday
- Up; J. off to the British Museum with H. into Cambridge with the babes to the Cambridge Science Festival. Lots of interesting things - Philiae talk and satelite construction, genetic determinism of Cuckoos (un-trained by reed-warbler parents to parisitize them), lunch; Bees & plants; bangs & crunches - back to the office; met up with J. & H. there, and home for a Fish & Chip tea.
- Hacked at VclPtr bits left & right - finally starting to unwind and elucidate the rather odd
toolkit/ / widget lifecycle until midnight.
2015-03-13 Friday
- Morning estimation, sales call, customer call; lunch. Sync with Fridrich, more estimation - a tragic drought of hacking.
- Extremely amused by an Anti-Virus vendor flagging its own software as malware. From the experience of generating a new LibreOffice release every week which is ~100Mb of code small - it is easy to show that AV software is a bundle of superstition and duct-tape that looks for tiny not-very-convincing 'signatures' and erroneously flags things left & right. Glad they get hoisted by their own petard sometimes too.
2015-03-12 Thursday
- Into Cambridge to meet the UK trade & industry rep. - interesting chap. ESC call, horrendous train stuffing on the way home - 2x 3 carriage train-loads of people don't fit into a 2x carriage train (as you might expect) - taxi home.
2015-03-11 Wednesday
- Mail chew. J. kindly dug through the expense queue for filing; positive board call.
2015-03-10 Tuesday
- Great to see the Wilhem Tux PDF signing & time-stamping work land in master for 4.5. Great also to see Noel Grandin's great progress on the VclPtr work.
- Built ESC stats and prototype agenda; misc. admin.
- Pleased to see the great work from Tobias Madl and Jennifer Liebel working as interns at Munich in master. This gives a rather nice priority based main-loop that separates idle priorities from timers - allowing eg. idle re-rendering and re-sizing tobe handled ~immediately and not on a timeout, which should make 4.5 much snappier in several cases. This should also enable a larger cleanup of the code to allow deferred instead of immediate painting.
- Chat with Thorsten, dinner, babes to bed; turned round some copy.
2015-03-09 Monday
- Mail; a round of 1:1's; more mail. Lunch with J. Back for a product team call, more chew, writing, then a consulting team call. Dinner. Built some stats.
2015-03-08 Sunday
- NCC, Simon Matthews spoke. Home for a large lunch, much slugging in the afternoon; bid 'bye to the parents; watched a documentary on 'cold' with the babes. Put everyone to bed.
2015-03-07 Saturday
- Built a socket blank to tile over for J. Out with H. and Father to Kelvedon Hatch Nuclear Bunker for an audio tour & inspection. Had lunch there, detour on the way home for an ice-cream. Bit of tiling in the evening, relaxed.
2015-03-06 Friday
- Mail chew; encouraging re-estimation call; lunch. Sync. with Tim, poked at legalese. Admired J. and Father's kitchen tiling progress. Relaxed with the parents in the evening.
2015-03-05 Thursday
- Up; burned much of the morning. Pitch creation. Lunch. More work chew, built latest LibreOffice on Windows with new VS2013. Out for a parent's evening. Parents over for dinner, enjoyed catching up with them.
2015-03-04 Wednesday
- Mail chew, document review, chat with Floeff; disappointing call with the TDF board. Encouraging call with customer.
2015-03-03 Tuesday
- Mail chew, contract fiddling; binary build & up-load an Android debugging build - a 2.4Gb chunk of native code into a 1Gb APK, fun. Chat with Simon. Lunch. Two customer calls, sync. with Tor, dinner.
2015-03-02 Monday
- Day of report writing, meetings etc. Product team call; had a review with Jacobo of his nice Android work, read some OwnCloud documents from Android. Consulting team call; more mail thrash.
2015-03-01 Sunday
- Built OT chronology / geography bits for the kids prep for visiting the British Museum; NCC - quick timeline / geographical bits, the wonders of 2000BC Mesopotamia and onwards.
- Home for lunch; tiling with J. attacking another section of wall; relaxed variously.
2015-02-28 Saturday
- Porridge breakfast, set the babes to their home-work; J. out to collect H. from a sleepover; poked at mail, fixed a nasty vcl VirtualDevice issue hurting slideshow on Windows. Nailed some more (hopefully nearly the last) multiple dispose / VclPtr lifecycle re-work issues; ran a dbgutil build to find more issues, helped Siqi with an Android build issue. Lunch.
2015-02-27 Friday
- Mail chew, nailed my dbaccess lifecycle issue; another double dispose issue - this time with horrible manual reference-counting. Interview. Lunch, helped get Julia setup splitting tiles off the wall. More mail, review; plugging at new VCL lifecycle bits idly.
- Dinner, read story to E, watched movie with M. and N. helped J. who has tiled the back-kitchen mostly cut the last few tiles. Back for some late-night mail / debugging.
2015-02-26 Thursday
- Up - mail chew; chat with Niall; more mail. Poked at x86 / android SIGILL a little more; perplexing - all .a object files are i386. Turned around partner paperwork.
- Spent some time chasing VclPtr reference counting issues; unwound how vcl destruction works in the end; every container has to explicitly delete its children; non-ideal.
- Home eventually; dinner with Lydia & Janice & Jules; back to work until late.
2015-02-25 Wednesday
- Up early, quick mail chew; set off for Cambridge; into the office to see Tracie; read a great report. Train on to Edinburgh, worked on budgets. Extraordinarily frustrating experience with intermittent connectivity and Evolution on the train for some hours.
- Enjoyed some of the talks at the Open Source Awards, and a great meal mid-stream.
- Extraordinarily honoured to recieve from Karen Sandler, on behalf of Collabora Productivity, the UK Open Source Awards 2015 - Best Organisation; gave a small acceptance spiel:
- It is an honour: in a Cloud obsessed world to have a Commodity Client Software company represented. In a world obsessed by Tablets: to encourage Free Software that makes your PC/Mac keyboard really useful. Naturally, we do have a Tablet & phone version making good progress now (for the paper-haters).
- LibreOffice 80+ million users: more than the UK's population. A brief correction - Collabora is only the 2nd largest contributor to the code - the 1st is volunteers in whose debt we all are. Everything we produce is Free Software.
- Collabora - has a mission we believe in: To make Open Source rock (ono). We're betting our Productivity subsidiary on ODF and LibreOffice.
- We're here to kill the old reasons not to deploy Free Software: with long term maintenance for three to five years; rich support options - backing our partner/resellers with a fast code-fix capability; and finally killing complaints - we can implement any feature, fix any bug, and integrate with any Line Of Business app for you.
- In the productivity space - innovation is long overdue; Free Software can provide that. Thanks for coming & your support
2015-02-24 Tuesday
- Mail chew, built ESC stats; mail; lunch. Customer call. Reviewed the LibreOffice 4.4 feature set to write a LXF column, rather encouraged.
- Booked train tickets to the great Open Source Awards tomorrow in Edinburgh.
2015-02-23 Monday
- Mail chew, 1:1 calls with people, lunch. Team call, sync with Lubos, mail, hacked a little bit on gtktiledviewer wrt. zoomed in selection overlay rendering. 2nd team call.
2015-02-22 Sunday
- Lie-in, out to NCC - Claire preached well; back for lunch with Dean and Moulouia(?) and their fun-sized girls. Quarter practice with the babes, watched a notably terrible 'Cindy' film; tea, read stories bed.
2015-02-21 Saturday
- Up earlyish; counted the area for tiles, into Bury to order just the right kind; to Noughton Park to play with the babes. Back for lunch.
- Spent much of the afternoon moving more cupboards from wall A (the wrong wall) to wall B (the right wall). Considered the plans to create fitted family lockers for the assorted junk that four babes produce - to match JP's version we admired in Toronto.
2015-02-20 Friday
- Mail chew, patch review, fixed an Android crasher, and tried to avoid a SIGILL running Android/Atom code on my AMD x86_64 machine in the android emulator: nasty, failed to overcome that with my Core II Duo. Perhaps new NDK's really generate lots of hyper-new instructions, odd.
- Took apart my Motorola Xoom which has failed to charge reliably recently. Very impressed with the non-soldered-in, surface-mount - get really well secured (by moulding in the chassis) power connector; removed and tweaked this with a needle to mend it (for now).
2015-02-19 Thursday
- Built ESC bug stats, and created a wiki page for the pending and awesome Cambridge LibreOffice Hackfests - May 21st to 23rd.
- H's friend Paris over; lunch. ESC call.
2015-02-18 Wednesday
- Plugged at mail, got through a number of the more vexing task backlog. Contract review, chat with Chris & Vladimir; partner call. Enjoyed the antics of 'Ludo Backslash' in Assylum, sleep.
2015-02-17 Tuesday
- Mail chew, admin in the car on the way to Bruce & Anne's worked there. Lunch - out for a walk across the warren with the family. Back, got several more annoying pieces done. Pancakes for tea. Some hacking in the car on the way home.
2015-02-16 Monday
- One-on-one calls, mail chew, lunch. Product team call. More mail & IM chew, Consulting team call. Poked at vclref changes a little to relax. Potter movie in the evening.
2015-02-15 Sunday
- Practiced & played at Church, Tony spoke well on 1 Thessalonians 4; pointed out the rather tragic Shades of Grey release on Valentines day. Romanticising getting pleasure from inflicting pain seems extraordinarily perverse to me. I feel for those in relationships whose shades of abuse will get deepened by this. Also for those wanting to improve their satisfaction with their spouse it all seems rather self defeating.
- Out to GenR8 to collect a tired but happy M. and N. - fun. Returned home to drill holes in walls left & right to wire up the audio for J's sound-system - to avoid it traipsing over the Kitchen. Back for a Sunday dinner, and put everyone to bed.
2015-02-14 Saturday
- Woke early, unexpected call from a friend. Wrote cards for daughters, wife, positioned flowers, chocolates etc. Back to bed. Breakfast.
- Took E. out for her annual trip to Banham Zoo - a wonderful set of displays, particularly the Amazing Animal display with a set of trained animals from Rats & Owls to Armadillos and more. Enjoyed the various feedings of Cheetas, Siberian Tigers etc. Had lunch together.
- Back for dinner, put babes to bed; did a bit of hackery trying to get the VCL lifecycle branch that (mostly Noel) has been toiling at into a better place.
2015-02-13 Friday
- Started on the task backlog - travel is really bad for focused E-mail handling / proposal writing. Plugged away and got some bits turned around. Interview. Dinner.
- Took N. and M. to Genr8 - a Christian weekend indoor camp-thing in Histon; an emptier house. Detour via Bar-Hill Tesco with E. to stock up on flowers & cards for tomorrow.
2015-02-12 Thursday
- Breakfast with Guy, ISE early - wandered the floor a bit. Train, plane, coach, coach home - lovely to see the family, read stories etc.
2015-02-11 Wednesday
- ISE show all day, lots of pacing of the floor, some customer & partner contacts, interesting discussions. Quick tea in the evening; chewed at proposals; poked people variously. Encouraged to read Why I ditched Microsoft Word (for LibreOffice).
2015-02-10 Tuesday
- Horrible train, bus, coach journey to Luton. Plane to Amsterdam, eventually got to the RAI, met up with Guy, out for a fine dinner, back to a fine AirBnB place; bed.
2015-02-09 Monday
- Mail chew, one-to-one meetings, status report, lunch. Product team call, customer call, consulting team call. Dinner, put babes to bed; plugged away in the evening until late - built ESC stats.
2015-02-08 Sunday
- NCC, played the Violin, ran the older kids group. Home for a fine lunch; slugged quietly, hair-cut - discovered the fridge's push-fit plumbing is leaking & rotting the inherited, horrible fake-flooring; bother. Poked at that. Bed early.
2015-02-07 Saturday
- Late up, J. out to take E. to a soft-play party; tidied the house, read the Economist; Sue, Clive & family + Bruce & Anne over. Out to Prezzo for an Anne's birthday treat - much enjoyed by everyone. Back, enjoyed a chat. Dinner, next Potter movie in the evening with H. and N.
2015-02-06 Friday
- Mail chew; call, more mail. Pointed people at Chris Lord's links to Mozilla compositing which look fun. Continued to assault the endless pile of admin. Potter movie with M. in the evening.
2015-02-05 Thursday
- Mail chew; interview; lunch; call with Thorsten, ESC call, pushed minutes. Plugged away at admin & proposal iteration in the evening until late.
2015-02-04 Wednesday
- Encouraged to see Simon's FOSDEM LibreOffice for Android bug report reveal a whole category of silly crashers: intents that point to non-local files fail to load as of now; Tomaz working on a fix.
- Mail chew, call with Chris; admin catch-up; sync. with Tim. Lunch. Call with Vladimir.
- Ran some profiles, chased some loose ends. Partner call. Sync with Joel. Interested to read Gerv's blog Je Suis... in passing.
2015-02-03 Tuesday
- To Beta Co-working (our kind hosts) - started working through the mail & task backlog from FOSDEM - finally found a patch to review, caught up with lots of people one on one, albeit briefly. Train, just caught the Eurostar, trains home.
2015-02-02 Monday
- Off to Beta Co-working; mail chew while waiting for the gathering to begin; all-day board meeting. Lots of budgetting & other discussion. Pizza dinner, bought in - more mail catchup. Back to the Hotel, caught up with Italo, then Thorsten, bed late.
2015-02-01 Sunday
- More FOSDEM goodness; lots catching up with people; out for a constructive lunch. More hanging out with all and sundry, caught up with some old friends; out for a (traditional) Kasbah dinner; up late.
2015-01-31 Saturday
- Early up; to FOSDEM to setup the booth-ness; met lots of people, sat in the (encouragingly well populated) dev-room and wrote slides while enjoying talks.
- Gave a talk on the great work from Kohei & Matus in LibreOffice 4.4. Slides:
- A long series of partner, customer, and old-friend meetings; such a fantastic crowd at FOSDEM. Foundations dinner in the evening, nice to see a good selection of the usual suspects. Back for drinks and sitting in the Astrid lobby until late.
2015-01-30 Friday
- Breakfast with the babes, mail chew; sync. with Chris; train to FOSDEM. Reviewed a nice report, chewed through older mail. Met up with Simon on the Eurostar; on to the hotel - met up with the lads, out to a fine LibreOffice dinner, on to the Delerium Cafe, and stayed up rather late talking.
2015-01-29 Thursday
- Quick mail check, morning off - out for a walk with J. along a rather perplexing Devil's Dyke nearby - apparently each end used to be an impassable fen / swamp. Nice to wander along, home for lunch; pushed 4.4 under-the-hood update. Tried to relax.
- ESC call, minutes, wrote a delayed Linux Format column. Watched Miriam's Christmas play on DVD initially with her (somewhat delayed). Dinner.
- Booked ISE flights - odd how I can dread booking travel so much when it's so easy.
LibreOffice under the hood: progress to 4.4.0
Today we release LibreOffice 4.4.0, packed with a load of new features for people to enjoy - you can read and enjoy all the great news about the user visible features from so many great hackers, but there are, as always, many contributors whose work is primarily behind the scenes in places that are not so easy to see. That work is, of course, still vitally important to the project. It can be hard to extract those from the over eleven thousand commits since LibreOffice 4.3 was branched, so let me expand:
Complete User Interface Dialog / Layout
The UI migration to a much improved, Glade compatible XML representation of VCL dialogs, complete with automatic layout is now almost complete (after thinking we'd done them all - Caolan discovered a lot of docking windows that need further work but these are now also migrated, all but two). Also a lot of work was put into cleaning up and tweaking the look / arrangement of dialogs. Many thanks to Caolán McNamara (Red Hat) - for his incredible work & leadership here, and to Adolfo Jayme Barrientos, Palenik Mihály (GSoC 2014), Olivier Hallot (EDX), Szymon Kłos (GSoc 2014), Rachit Gupta (GSoC 2014), Tor Lillqvist (Collabora), Jan Holesovsky (Collabora), Maxim Monastirsky, Efe Gürkan YALAMAN, Yousuf Philips and many others. Thanks also to our translators who hopefully will have much less string churn to suffer now. As a side-note the resource-compiler in rsc/ has gone on a nice diet.
Initial OpenGL rendering backend
The switch to move VCL to use OpenGL for rendering is one of those things that ideally should be entirely under-the-hood, but ends up having small but important visual impact. All the work here was done by Collabora engineers, with a beefy re-factor and the initial OpenGLContext management by Markus Mohrhard, much of the rendering implemented by Louis-Francis Ratté-Boulianne with anti-aliasing, and image scaling work from Lubos Lunak, various Windows fixes and porting work from Jan Holesovsky and some bits from Chris Sherlock. During the work we also implemented a half-way decent and increasingly complete VCL demo application exercising rendering. A rational for the work with some pictures is available.
By moving to a pure OpenGL rendering model, we can accelerate those operations that badly need to taking advantage of the power and parallelism of the huge APU die-area given over to modern GPUs. Being able to interact much more directly with the underlying graphics hardware helps us to both render our image previews at high quality, and not to sacrifice scroll / zoom performance: having our cake and eating it too. We've also used some of that power to not only significantly accelerate our image rendering, but also improve its quality too from before:

to After (NB. if your browser scales it too you're likely to loose the sense; zoom to 1:1 and checkout eg. the top of the circular window, or other high-frequency areas.)
There is a fair bit more work to get OpenGL into a suitable state including several odd Windows / lifecycle bugs; it is necessary to export SAL_FORCEGL=1 to override the black-listing, but we hope to nail these in the 4.4.x cycle. Several ongoing and intersecting features such as the true Idle handler work from Munich's Jennifer Liebel and Tobias Madl as well as more future / pending work in-progress from Munich's Michael Jaumann (working on OpenGL canvas) and Stefan Weiberg (on OpenGL Transitions) are due in 4.5, both mentored by Thorsten Behrens (SUSE).
Mobile Viewer / LibreOfficeKit
The recently announced Android Viewer (Beta) has a number of invisible pieces included there. Particularly the improvements to LibreOfficeKit: an easy way to re-use the rendering and file-format goodness from LibreOffice from Andrzej Hunt and Kohei Yoshida (Collabora) to get Impress and Calc rendering to tiles at least to a Beta level. You can read more about the just started editing work done for TDF there too. LibreOfficeKit has also become more powerful at extracting key document meta-data from yet more of the host of file formats that LibreOffice supports - important for indexing un-structured data.
Build / platform improvements
30% faster Windows builds
With the new build system functionally completed, we've looked at the most significant problem with it: rather slow build times on Windows. An investigation and some benchmarking revealed that the usage of Cygwin make was the main cause of the slowness, and hence Michael Stahl (Red Hat) made it possible to build LO 4.4 with a Win32 native build of GNU make, cutting from-scratch build time by almost a third over stock Cygwin make, and speeding up incremental rebuilds even more.
Win64 porting action
Another major improvement is from David Ostrovsky (CIB), which is to do some significant work towards completing the native Win64 port. This we expect will ship in LibreOffice 4.5, but should significantly help eg. Java users and those with very large spreadsheets. See the Windows 64bit wiki page for more detail, thanks also to Mark Williams for some tricky UNO bridge fixing work, and to Tor Lillqvist (Collabora) who laid a lot of the initial ground-work here.
Code quality work
There has been a lot of work on code quality and improving the maintainability and cleanliness of the code. Another 59 or so commits to fix cppcheck errors are thanks to Thomas Arnhold, Julien Nabet and Simon Danner, along with the daily commits to build without any compile warnings -Werror -Wall -Wextra on many platforms with thanks primarily to Tor Lillqvist (Collabora), Caolán McNamara (Red Hat), and Thomas Arnhold.
Awesome Coverity
We have been chewing through the huge amount of analysis from the Coverity Scan, well - in particular Caolán McNamara (Red Hat) has done an awesome job here; his blog on that is typically modest.
We now have a defect density that bumps along close to 0.00, though as Coverity introduces new checks, and new code gets committed that goes up and down a little; currently 0.02 so - 2 static checking warnings per 100,000 lines. That compares extremely well with the average Open Source project which has 65 warnings per 100,000 lines.
Grokking commits with coverity in them we have 1530 fixes since LibreOffice 4.3 with the top three contributors after Caolan (1378 commits) being: Norbert Thiebaud, David Tardon (Red Hat), Miklos Vajna (Collabora).
Increasing use of asserts
In the 3.5 release we switched away from custom macros to use normal 'assert' calls to sanity check various invariants; we're doing more sanity checking left and right these days:
Import and now export testing
Markus Mohrhard (Collabora)'s great import/export crash testing has been further expanded to cover 76,000+ problem/bug documents up from 55k last release, with a selection of odd images now also included. Another major win here was the provision by TDF (thanks to our donors) of a beefy new 64 core box to run the load/save/validate tests on. This, combined with some re-working and better parallelism of the python scripts driving that, has speeded up our test runs from five days to under one - allowing rapid diagnosis of new regressions in a much smaller range. We've also been able to do some Addresss Sanitizer runs of the document set which has resulted in a number of fixes, thanks too to Caolán McNamara (Red Hat) for some great work there.
Clang plugins / checkers
We have continued to add to our clang compiler plugins; a quick git grep for 'Registration' in compilerplugins shows that we've gone from 27 to 38 plugins in the last six months. These check all manner of nasty gotchas that people can fall into in our code. Some of these plugins are used manually but many are run by a tinderbox and some users to catch badness quickly. Thanks to: Stephan Bergmann (Red Hat) and Noel Grandin (Peralex) for their hard work on these checkers this cycle.
The plugins do all sorts of things, for example Bjoern Michaelsen (Canonical) wrote a plugin that detects deeply-nested conditionals such as these monsters. These are hard to read and a severe pain to debug through. Some of the worst offenders in sw/ have been rewritten and the plugin can easily be applied elsewhere in the codebase.
Unit testing
We also built and executed more unit tests with LibreOffice 4.3 to avoid regressions as we change the code. Grepping for the relevant TEST and ASSERT macros we continue to grow the number of unit tests:

Our ideal is that every bug that is fixed gets a unit test to stop it ever recurring. With around 1000 commits, and over seventy committers to the unit tests in 4.4 it is hard to list everyone involved here, apologies for that; what follows is a sorted list of those with over 10x commits to the
qa/ directories:
Miklos Vajna (Collabora), Caolán McNamara (Red Hat), Kohei Yoshida (Collabora), Michael Stahl (Red Hat), Stephan Bergmann (Red Hat), Zolnai Tamás (Collabora), David Tardon (Red Hat), Noel Grandin (Peralex), Matúš Kukan (Collabora), Luboš Luňák (Collabora), Markus Mohrhard (Collabora), Tor Lillqvist (Collabora), Thomas Arnhold, Andrzej Hunt (Collabora), Eike Rathke (Red Hat), Jan Holesovsky (Collabora) QA / bugzilla
Over the last six months the QA team has grown in size and effectiveness, doing some amazing work to bring our un-triaged bug count right down from one thousand (which we thought was good) to just over three hundred bugs. It's particularly knotty triaging some of those last bugs - with rather deeply technical, or super-hard-to-reproduce combinations lurking at the bottom: some excellent work there. It is rather hard to extract credits for confirming bugs, but the respective hero list overlaps with the non-developer / top closers listed below.
One metric we watch in the ESC call is who is in the top ten in the freedesktop Weekly bug summary. Here is a list of the people who have appeared more than five times in the weekly list of top bug closers in order of frequency of appearance: Caolán McNamara (Red Hat), Adolfo Jayme, tommy27, Julien Nabet, Jean-Baptiste Faure, Jay Philips, Urmas, Maxim Monastirsky, Beluga, raal, Michael Stahl (Red Hat), Joel Madero, ign_christian, Cor Nouws, V Stuart Foote, Eike Rathke (Red Hat), Robinson Tryon (TDF), Miklos Vajna (Collabora), Matthew Francis, foss, Sophie (TDF), Samuel Mehrbrodt, Markus Mohrhard (Collabora). And thanks to the many others that helped to close so many bugs for this release.
Bjoern Michaelsen (Canonical) also wrote up a new year QA update which is well worth reading.
Another win that should help us tweak our bugzilla to make it more user friendly and better structured is the migration from FreeDesktop infrastructure to TDF, with thanks to FreeDesktop for taking our large bugzilla load for all these years. This was completed recently - so now we file bugs at http://bugs.documentfoundation.org/. Thanks to Robinson 'colonelqubit' Tryon (TDF), and Tollef Fog Heen as well as our sysadmin team for that work. As is perhaps obvious, Robinson is working for TDF (funded by our generous donors) half-time to help improve our QA situation.
Code cleanup
Code that is dirty should be cleaned up - so we did a lot of that.
Ongoing German Comment redux
We continued to make progress, but sadly only a small amount of it on translating our last lingering German comments across the codebase into good, crisp technical English. This is a great way to get involved in LibreOffice development. Many thanks to: Philipp Weissenbacher, Christian M. Heller, Jennifer Liebel (Munich), Chris Sherlock (Collabora), Michael Jaumann (Munich), Luc Castermans, Jeroen Nijhof, Florian Reisinger and a number of others with just one commit. Further reductions in the number of false positives from bin/find-german-comments suggest that there are only ten top-level modules left containing German, nine of them worth translating: i18npool, include, reportdesign, sc, scaddins, sfx2, stoc, svx, sw
One particularly encouraging contributor to our German Comment translation efforts was Lennart Poettering who it seems has an amusing plan afoot.
Upgrading to (some) C++11 subset
As time advances, C++ improves, with the upgrade of Visual Studio we've been able to move to a subset of C++11 (as supported by VS 2012) as a new compiler base-line. We also removed several optimization disabling workarounds for bugs in old GCC versions that don't do C++11 anyway, and hence both GCC and MSVC can now build all of LO with optimization. Thanks to Stephan Bergmann (Red Hat) for researching and driving this work.
OOXML Tokenizer cleanup
This cleanup builds on work by Miklos Vajna (Collabora) in the last release. A big chunk of our OOXML tokenizer was generated code, which is reasonable but it was generated using XSLT (which is trending below cobol). This was re-written from 4200 lines of XLST into 1300 lines of python - to produce the same output with a large increase in hack-ability. Then some optimization was done by Jan Holesovsky (Collabora for CloudOn), to reduce inefficiency in the generated output saving 2.2Mb from the 8Mb (stripped) writerfilter DSO. Great to see this sort of code cleanup, source size shrink and binary shrink at the same time. You can read more about it in Miklos' blog.
std:: containers
A systematic set of improvements to our usage of the std:: containers has been going on through the code. Things like avoiding inheritance from std::vector, changing std::deque to std::vector and starting to use the newer C++ constructs for iteration like for (auto& it : aTheContainer) { ... }. There are many people to credit here, thanks to Stephan Bergmann (Red Hat), Takeshi Abe, Tor Lillqvist (Collabora), Caolán McNamara (Red Hat), Michaël Lefèvre, and many others.
Performance improvements
Performance is one of those very hard to see things, that is nevertheless viscerally felt: "why am I still waiting ?". There are a number of rather encouraging performance improvements by different people in LibreOffice 4.4 that are worth noticing.
Autocorrect performance
For reasons that elude me, some people like to have huge auto-correct lists. These are stored as zipped XML. Daniel Sikeler (Munich) put some lovely improvements into the loading of these. In particular he discovered that we were re-parsing our BlockList.xml a large number of times, fixing this made a big difference. Combining that with switching to use the threaded & improved FastParser - yielded a further win. The auto-correct list is loaded after the 1st key-press, so getting this from 4.3 seconds down to 1.5 seconds (for huge correction lists) is a big win.
Image management
While profiling saving in various file formats, it was discovered that we frequently swap in (ie. re-load, and de-compress) images - this of course takes significant CPU time, particularly since we then immediately continue to preserve the (original) data in the file. In some cases this was taking a large proportion of save time for large image-filled presentations eg. Thanks to Tamaz Zolnai (Collabora) for cleaning up and fixing this, as well as hunting perennial image loss issues.
Fast Serializer
As a general rule any class named 'Fast' in the inherited OpenOffice code is a horrible mis-nomer. Many thanks to Matus Kukan (Collabora) for fixing this. We discovered that 25% of save time of large XLSX sheets was consumed in the Fast Serializer, which did a staggering 9.9 million system-calls, each writing some tiny fragment of an XML attribute eg. separate writes for opening elements, element names, attribute names namespaces etc. Matus reduced this to 76k calls to do the same thing, a 99% decrease. Quite apart from the system-call overhead we reduced cachegrind CPU pcycles for 'SaveXML' from over 12bn to under 3bn for a simple sample.
Bundle libjpeg-turbo
It has been known for many years that JPEG-turbo provides superior de-compression performance - "In the most general terms, libjpeg-turbo is 2.1 - 5.3x as fast as libjpeg v6b and 2.0 - 5.8x as fast as libjpeg v8d.". Naturally Linux vendors use the system packaged libjpeg, but when we distribute on Windows - we now bundle a 2x speed-up in the form of libjpeg-turbo - thanks to Matúš Kukan (Collabora) with some cleanups from Stephan Bergmann (Red Hat). Volunteers to make jpeg-turbo integrate nicely on Mac appreciated.
Mail merge performance
Mail-merge works by building a huge document containing the result of all the mails to be printed / merged into a single file. The wisdom of this is highly debatable, but nevertheless thanks to Lubos Lunak & Miklos Vajna (both Collabora for Munich) who put some significant effort in to very substantially accelerate large document merge, in some cases by several orders of magnitude. Sadly OpenOffice.org took a major regression here in version 3.3, and that is now comprehensively fixed. This turns a 2000 record mail-merge from a matter of hours down to a few minutes.
Calc Performance
There were a number of rather pleasant performance wins in this release of LibreOffice, which cumulatively have rather a helpful effect.
Range dependency re-work
For previous LibreOffice releases Kohei Yoshida (Collabora) spent a big block of time unifying runs of similar formulae into FormulaGroups - that fill down a large span of a column - since this is a common case for large data sets. This allowed a large memory reduction, and lots of great data sharing. However dependency management was de-coupled from this and was still performed per-cell. That is particularly expensive if you consider a range reference that is common for the whole formula group: resulting in lots of setup, and tear-down cost: essentially to notify the entire formula group. In 4.4 calc adds a listener type that is tailored for these formulae groups - potentially turning tens of thousands of complex data structure entries into a single entry. This saves a large chunk of memory, and a lot of CPU time walking lists, it also saves a ton of time when broadcasting the changes. There is plenty more work to be done to extend this, and ideally in future we should use the same approach for single-cell references as well. Thanks too to Eike Rathke (Red Hat) and Markus Mohrhard (Collabora) for some associated fixes.
Script type optimizations
For various reasons, detecting the script-type of a cell is an expensive operation; is it some asian text, complex text or simple - which affects the font, sizing & various metrics. Kohei Yoshida (Collabora) discovered that in several common operations - copying/pasting large chunks of data - that this work was being needlessly re-done and removed this cost. Similarly, for simple data types with standard formatting on eg. a large span of doubles, it was possible to significantly simplify the calculation of script types.
Chart deferred re-rendering
Another area that (still) causes some grief is that whenever a data range changes which a chart depends on, the entire chart is re-generated. That involves tearing down a lot of drawing shapes and re-creating them, which in the case of text is particularly expensive. Kohei Yoshida (Collabora) implemented a great optimization to defer this work until the chart is visible. This should have a pleasant effect on editing time for large data sets which are charted on many other sheets, and also for macros operating on many charts.
Getting involved
I hope you get the idea that more developers continue to find a home at LibreOffice and work together to complete some rather significant work both under the hood, and also on the surface. If you want to get involved there are plenty of great people to meet and work alongside. As you can see individuals make a huge impact to the diversity of LibreOffice (the colour legends on the right should be read left to right, top to bottom, which maps to top down in the chart):
And also in terms of diversity of code commits, we love to see the unaffiliated volunteers contribution by volume, though clearly the volume and balance changes with the season, release cycle, and volunteers vacation / business plans:
Naturally we maintain a list of small, bite-sized tasks which you can use to get involved at our Easy Hacks page, with simple build / setup instructions. It is extremely easy to build LibreOffice, each easy-hack should have code pointers and be a nicely self contained task that is easy to solve. In addition some of them are really nice-to-have features or performance improvements. Please do consider getting stuck in with something.
Another thing that really helps is running pre-release builds and reporting bugs just grab and install a pre-release and you're ready to contribute alongside the rest of the development team.
Conclusion
LibreOffice 4.4 is the next in a series of releases that incrementally improve not only the features, but also the foundation of the Free Software office suite. It is of course not perfect yet, this is just the first in a long series of monthly 4.4.x releases which will bring a stream of bug fixes and quality improvements over the next months as we start working in parallel on LibreOffice 4.5.
I hope you enjoy LibreOffice 4.4.0, thanks for reading, don't forget to checkout the user visible feature page and thank you for supporting LibreOffice.
Raw data for many of the above graphs is available.
A great French translation of this is kindly made available at linuxfr.
2015-01-28 Wednesday
- Mail chew; worked on marketing, ploughed through tedious tasklets, sales call, partner call, another sales call. Worked on a write-up of 4.4 things you can't see in the evening too.
2015-01-27 Tuesday
- Mail chew; great to see the Android Editing Tender announced by TDF. Naturally I (and another board member) was recused from that discussion / decision. My hope is that after the heavy lifting is out of the way, it will become much easier to get more people involved there. The work itself has a has a large element of generic tiled-rendering functionality which is re-usable in a number of situations to improve rendering performance. Reading Miklos' nice write up of some of the work so far.
- Lunch. Reviewed my notes from the ODF plug-fest. Sync. with Thorsten.
- Up late replacing J's cracked glass on her Galaxy S3 - managed to buy all the necessary bits, incluing a heat-gun for 20% of the cost of having it replaced by the cheapest shop I could find; thank God it still works.
2015-01-26 Monday
- Mail chew, 1:1's with the guys; lunch with J. Product team call; more mail chew, sync. with Sam; Consulting team call; more mail churn. Dinner, babes to bed, more admin. Pleased to see the progress that Noel has made on the
feature/vclref branch.
2015-01-25 Sunday
- Up early; walked to the venue; debugged the xmloff CustomShape engine feature - apparently not working; started to dig into it, eventually made my own engine & started building some shapes too. Series of talks on what had been achieved; had to leave early to get a train. Home to the family.
- The thing I worked on during the hackday was getting at least some start made to the problem of having a QR code engine built-in; courtesy of zint's backend (finding the best version of zint, which seems un-maintained, is remarkably hard - perhaps at some stage we'll want to replace it with a good internal solution). Anyhow - after some significant chew we have a custom-shape in the
feature/barcode branch that renders something like this:
It was interesting to find & fix the functionality that allows you to enter:
<draw:custom-shape draw:style-name="gr1" ... draw:engine="org.libreoffice.draw.barcode" draw:data="QR code contents">
This apparently lets you create and associate arbitary (even say python) components as 'engines' to render the content of custom-shapes - which is interesting; although apparently not-used; I had to fix that first. Hopefully this can open up a world of pretty & fun new user-created functionality creating and embedding document elements in simple scripting languages.
Of course - lots still remains to be done before this can be useful - and most likely there is a better way of doing it. My hope is that the rest of the code there allows a fall-back to be serialized for users without the required plugin, but I imagine it will need quite some tweaking yet; why not come and play at FOSDEM or the LibreOffice hackfest immediately afterwards. Update posted some technical bits to the dev-list too.
2015-01-24 Saturday
- Up in the dark & cold, trains, on an Intercity and well on the way to Cardiff by 9am; pleased with laptop power there too.
- Struggled with CMake - gdcm refusing do as its bid, configuring from a build directory, but still it fails; turns out configuring in the source directory pollutes things to the point that it then fails to configure even if you're elsewhere: funky. Stuck into some interactive CMake thing that would't let me build the makefiles, despite a clean configure and no errors: wow; eventually tweaked around the un-reported error.
- Arrived, walked to the venue; missed the pitches. Met Malcolm and various others; long discussions about paper vs. electronic records - didn't get any DICOM work done - instead started on some QR code pieces.
- Building closed early, out to a bar to meet other interesting parties around the place. Late night kebab & walk to the hotel.
2015-01-23 Friday
- Into Cambridge for Quarterly meetings; good to catch up with Philippe, Tracie & Guy; go over the positives & areas for improvement together - had lunch as we worked, drew up some projections.
- Home earlyish. Tea - Naomi B. over to play, babes watched Moonacre, put them to bed, watched the next Harry Potter in the series with the biggers.
2015-01-22: Thursday
- Set an alarm on my Galaxy S4 - why is it that the whole 'alarming' bit of alarms is missing; some anaemic 'bling bong bop' that happens a couple of times & gives up seems to be normal these days. It reminds me of the Onion's sounds of the rainforest fire-alarm; the urgent, incrementing volume, irritating beep setting has eluded me somehow.
- Nice write-up of the LibreOffice on Android viewer from Serdar @ InfoWorld.
- Tried to dig out a simple Microsoft OpenGL sample without much luck: disappearing cubes left/right; eventually found one - upgraded Visual Studio to install MFC - which forced a re-boot (goodness!).
- Lunch; booked train to the Cardiff / NHS Hackfest this weekend.
2015-01-21: Wednesday
- To work early, polled the play store in a loop, encouraged to see that Tomaz had found a big performance win as well as the cause of some missing tiles in our Android Alpha; spreadsheet tile positioning and text sizing still seems to be off however; hmm.
LibreOffice Android View (Beta)
Today Collabora released (cf. Press Release) a Beta snapshot of the viewer work we've been doing for and with SMOOSE for some months. This provides a version for testing (it's really not finished yet), of LibreOffice running on Android you can install it from Google Play.
What does it look like ?
The writer functionality is probably the best piece of the component, allowing pleasant screen-shottage and rather good viewing.
Impress presentations are supported here is an old one around cairo rendering support, you can see the swipe-in-from-the-left page switcher:
We also have some (very early) calc tiled rendering; there are some text scaling issues that we're working on there:
What did that involve ?
A huge amount of work. Much of the initial work was done by Tor Lillqvist, while at SUSE (now Collabora), creating a cross-compilation framework which we continue to use for iOS, Android and was originally setup to do cross-compiles to Windows - so that we could have a predictable toolchain, and a reliable/repeatable free-software build environment. Tor also did some amazing bootstrapping work to overcome several debilitating limitations of C++ on Android, get to get the initial startup, and packaging into a good state.
Matus Kukan (Collabora) also did a chunk of work for CloudOn to help link the entirety of LibreOffice into a single shared library image - helping startup performance & improving Android support. This significantly helps to work around the built-in Android linker's low limit of shared libraries it can handle before failing. It also helps to export nearly no symbols, and to let ld's garbage-collection throw away as much object code as possible: though there is still way more to loose.
Other work done for CloudOn by Jan Holesovsky (Collabora) and Tor Lillqvist was to implement tiled rendering inside Writer - making it possible to render arbitrary portions of documents at arbitrary zoom factors. We are deeply indebted to them - you can of course enjoy the same code inside CloudOn's iOS app.
Ian Billet worked during the Google Summer of Code 2012 to make a document browser, which has subsequently been taken over and much improved by Jacobo Pérez of Igalia creating the document browser we have today. It is of course somewhat regrettable that Android has no standard built-in file browser making this necessary. Of course the viewer also hooks into the OS to allow opening downloads, attachments etc. in the normal way.
Since FOSDEM 2014, Smoose and Collabora in the person mostly of Tomaz worked to re-target the excellent Fennec tiled-rendering code from Mozilla's android browser to target instead of the Mozilla core - the LibreOffice core. This involved great chunks of re-factoring, and hard work both in the Android and C++ core. We re-use and added tiled rendering to the LibreOfficeKit API - an API to allow simple re-use of LibreOffice for file format conversion and document rendering via a rather trivial C and C++ API. LibreOfficeKit under Linux has the advantage of requiring no linkage to the code - being an (almost) purely abstract API.
Andrzej Hunt worked through Google Summer of Code 2014 to improve and extend tiled rendering to Calc and Impress and the LibreOfficeKit tiled-rendering API. You can read about that on his blog. One side-effect of that, recently much improved by Miklos Vajna (Collabora) is the gtktiledviewer test app which deliberately uses a non-VCL widget-set, and LibreOfficeKit to render a series of tiles on a stock Linux desktop. This significantly to helps accelerate debugging. Kohei Yoshida (Collabora) was also involved in reviewing, re-working and merging the calc tiled-rendering code to master.
Many thanks to all involved, particularly our client SMOOSE without whose support, Collabora would not have been able to prioritize this work.
Getting involved
The code for the viewer is almost exactly what is in the git / master branch in the android/experimental/LOAndroid3 directory. It should build out of the box with a simple make, of course after you have followed the compilation instructions and Android how-to. Needless to say - we've left a lot of juicy, easy-to-fix bugs for you to gloriously fix - give it a try.
Finally if you want to hear, and see more, and get involved with what we're up to, a great way to do that is by coming to Kendy's LibreOffice on Android talk at FOSDEM this year, or Jacobo's document manager talk.
Can you use LibreOffice in some way ?
Collabora provide bespoke consulting solutions to help people use LibreOffice in the most effective & optimized way. Sometimes that means using LibreOffice as part of your product, sometimes it means optimizing, improving or extending to meet your use-case. We also sell long-term Enterprise support for LibreOffice to make it easy and risk-free for you to deploy LibreOffice in your organisation on Windows, Linux, Mac and (soon) Android too - checkout LibreOffice-from-Collabora for more details.
2015-01-20: Tuesday
- Slept well for a change; into Cambridge - chewed mail on the train; call when I got in; built ESC stats. Quarterly meetings. Paperwork in the evening, and out for a meal with Guy, Tracie & Philippe. Home late.
2015-01-19: Monday
- Mail chew, several back-to-back 1:1 calls, lunch. Product team call; churned action items. Fixed some odd glsl float -> int casting behavior and looked at the sexy GLSL scaling work from Lubos, faster & higher-quality; nice.
- Consulting team meeting; amused that Chrome - despite its multi-process model, seems to get into a mode whereby a new tab process renders for a bit then dies suddenly - but re-starting the whole shell makes it work; micro-kernel advocates rejoice.
2015-01-18: Sunday
- Up early; amused to agree with David Cameron's right to cause offence - if not with his Sunday broadcast; then again it's amusing that such attacks on freedom of speech get turned by the security services into attacks on our freedom of expression, association etc. by attacking anonymity and security on the internet.
- NCC in the Akademy, Helen spoke on the parable of the prodigal son.
- Home for lunch; tidied up, and did some quartet practise with the babes - watched 'Up' together; long stories; bed early.
2015-01-17: Saturday
- Slugged, read the Economist, tidied a bit. Out to Nate & Julie's for lunch with the whole brood; back; added some tertiary insulation to a velux window - just in-case. J. out to the Pregnancy Crisis Centre Quiz Night, read a round of 4x stories; bit of code review, mail read, bed.
2015-01-16: Friday
- Appalled to get a spam from the IET recruiting Patent Examiners - a noxious combination. Surely they should know better; wrote to their publication.
- Mail chew; call; more admin. Lunch.
- Had a call with Ben Kallos who is apparently an (awesomely clueful) City Council Member of New York City - and has a great vision for Open Source in New York & the USA.
- Call with Kohei - some amazing work even in his last two days; calc tiled rendering looking great.
- Somewhat amazed at the Pope's comments (as reported) - the expectation of sometimes being offended is the other half of the coin of Free Speech: something I wholeheartedly support; religion should have no special privilege of avoiding offence. Of course, just because you should be allowed to say almost anything offensive doesn't mean you have to. Humour is a great gift helping introspection, and reflection even if it bites sometimes.
2015-01-15: Thursday
- Couple of early interviews. Sync with Nemeth. Lunch, poked at some code with Moggi. Advisory Board call. Counted remaining German comments, and even translated a few: down to an amazing ~6k or so - within spitting distance of completion.
2015-01-14: Wednesday
- Mail chew / communication overhead. 1:1 with Philippe. Partner call, customer call, analyzed some profiles.
2015-01-13: Tuesday
- Built ESC bug stats, partner call to report an interesting OpenCL issue, poked at that.
2015-01-12: Monday
- Mail chew; series of 1:1's with my team, 2x team meetings and more mail / customer catchup.
2015-01-11: Sunday
- NCC; David & Vicci over for a fine lunch, followed by getting N's party setup & catching up with Vicci ; lovely. Cooking party - with D. & V. did some ace judging. Long stories, bed.
2015-01-10: Saturday
- Watched the SpaceX launch with some little girls; out together for A. Louise' birthday party - good to catch up lots of Julia's extended family. Home.
2015-01-09: Friday
- Up rather early; mail chew, ran some more timings; debugged a windows GL context / threading crash a bit. Plugged away at some contract/text. Booked at the Hotel Astrid for FOSDEM. Potter movie in the evening with the babes.
2015-01-08: Thursday
- Mail chew, sync. with Chris, chewed document, built stats, profile reading, customer outreach. Dinner.
- Worked late trying to work out why an XLSX generated by Excel is so slow to load, only to discover Excel made a complete hash of it and that 98% of what it wrote is irrelevant nonsense; a quick save in LibreOffice, and it 1/3rd of the size (zipped) and loads twice as fast: good.
2015-01-07: Wednesday
- Early start, train to Norwich via Stowmarket; interesting meeting with Tim, out for lunch & annual review; train back again - got some mail flushed intermittently as I went.
- Suitably horrified by the attack on free speech today. Horrible. Interested by the confusing narrative of peaceful Muslims vs. aggressive ones I found this analysis of positions including Qutb's provide some enlightening hermenutical keys. Theology aside, I worry for the backlash on my (blameness) Muslim neighbours. Beyond that - this sort of ideology strikes me as pretty curious with its powerful message that God's only hands are our hands - ie. the idea that we should go around smiting people because God is incapable of doing it in a timely way. To shoot someone and say "God is the Greatest" seems to me to be tantamount to a faithless personal aggrandisement. Christianity, while acknowledging just war etc. seems to me to not only try to humanely seek temporal justice, but also to recognise its profound limitations. Who can give two lives in return for those they took ? I take comfort from Romans 12's "It is mine to avenge; I will repay," says the Lord ... Do not be overcome by evil, but overcome evil with good. - (emphasis mine). If only it were easy. Yet that same confidence in an ultimate judgement that is not only certain, but truly just - taking into account all circumstances and backgrounds - informs a Christian motivation for prison policy: societal protection & re-habilitation among many other things. Still - a sad day.
2015-01-06: Tuesday
- Mail chew, burned some time digging into an unhelpful profile. Booked FOSDEM travel; should be awesome.
- Poked at OpenGL context clearing on thread switching - sorted that out. Finally got around to filing a big chunk of expenses.
2015-01-05: Monday
- Calls, project kick-off with Miklos & Tomaz. Sync. with Tor, mail chew. Lunch. Built ESC bug stats, sent agenda. Dinner, churned through some profiles.
2015-01-04: Sunday
- NCC, ran an older kids group study on the latter part of John 2. Back for a fine lunch, helped N. to make-good the remains of the wall & cupboard. Dinner, put babes to bed. Park Street sermon on encouragement.
2015-01-03: Saturday
- Up late; set too moving a large display cabinet / cupboard from one wall to another - an awful chip-board / MDF hybrid horror. Managed to get it re-assembled up-side-down on the other wall eventually - set too making good the horror of the wall revealed in the process with poly-filler. Watched another Princess movie.
2015-01-02: Friday
- To the park with kids, fine lunch; packed & drove home. Watched a Pricess movie & a Harry Potter. Sandy over too. Bed.
2015-01-01: Thursday
- Lie-in, breakfast, out for a walk. J. drove back to B&A's, while I hacked on vcl reference re-working for fun, and wrote up a project plan / estimation. Got back, relaxed, ran some more tests. Fine dinner, watched University Challenge.
My content in this blog and associated images / data under images/ and data/ directories are (usually) created by me and (unless obviously labelled otherwise) are licensed under the public domain, and/or if that doesn't float your boat a CC0 license. I encourage linking back (of course) to help people decide for themselves, in context, in the battle for ideas, and I love fixes / improvements / corrections by private mail.
In case it's not painfully obvious: the reflections reflected here are my own; mine, all mine ! and don't reflect the views of Collabora, SUSE, Novell, The Document Foundation, Spaghetti Hurlers (International), or anyone else. It's also important to realise that I'm not in on the Swedish Conspiracy. Occasionally people ask for formal photos for conferences or fun.
Michael Meeks (michael.meeks@collabora.com)