This is my (in)activity log. You might like to visit
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
Stuff Michael Meeks is doing
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
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
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
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
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
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
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.
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
- 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)
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
- 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)
- 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
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)
- 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.
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.
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.
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.
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.
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.
Up early; partner call; mail chew, hacked at OpenGL; some
nice flicker-free goodness left & right; looking good.
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.
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
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.
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.
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.
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.
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.
Mail chew, a whole day wiped out in admin; interesting talk
with some new guys; chat with Eliane late. Built ESC stats; bed late.
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.
My content in this blog and associated images / data under
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
Michael Meeks (firstname.lastname@example.org)