9:59:59.000,9:59:59.000 Welcome to the only talk of this time span 9:59:59.000,9:59:59.000 I am glad that I am the only one talking 9:59:59.000,9:59:59.000 and I hope I will somewhat interesting [laughs] 9:59:59.000,9:59:59.000 That's a very good honour to be the only one talking 9:59:59.000,9:59:59.000 I just wanted to do a status report of the Debian Printing team 9:59:59.000,9:59:59.000 because it's been quite a long time, I've been working on this part of Debian 9:59:59.000,9:59:59.000 and I've tried to attract people into helping me for printing in the last years 9:59:59.000,9:59:59.000 and it hasn't really worked. 9:59:59.000,9:59:59.000 So I'll just do another attempt and see what that gives 9:59:59.000,9:59:59.000 and hopefully give you some insight on how the whole thing works 9:59:59.000,9:59:59.000 A little introduction about me; 9:59:59.000,9:59:59.000 I'm a Swiss guy, I was basically grown up with computers 9:59:59.000,9:59:59.000 If you followed my talk from last year, 9:59:59.000,9:59:59.000 I showed you some of the Swiss computers back then 9:59:59.000,9:59:59.000 and some Motorola 68k Swiss-specific stuff that I was basically born with. 9:59:59.000,9:59:59.000 I am currently working at Liip, CH. 9:59:59.000,9:59:59.000 It's a Swiss company that has websites 9:59:59.000,9:59:59.000 and I'm working there as an eLearning specialist, 9:59:59.000,9:59:59.000 webapp backender and sysadmin. 9:59:59.000,9:59:59.000 Whatever that means. 9:59:59.000,9:59:59.000 Towards Debian, I've been translating things 9:59:59.000,9:59:59.000 at the Ubuntu site since 2005, 9:59:59.000,9:59:59.000 maintaining packages since 2009. 9:59:59.000,9:59:59.000 I've been a developer since 2011 9:59:59.000,9:59:59.000 and I've been maintaining some packages since then. 9:59:59.000,9:59:59.000 That's not the most interesting part of the talk 9:59:59.000,9:59:59.000 so let's go forward. 9:59:59.000,9:59:59.000 This session's intent is to present the state of the Debian printing stack, 9:59:59.000,9:59:59.000 its evolution until today, the leftover work 9:59:59.000,9:59:59.000 and also how I got trapped into maintaining that part of Debian. 9:59:59.000,9:59:59.000 I mean, I don't have a particular interest in printers 9:59:59.000,9:59:59.000 but, yeah. 9:59:59.000,9:59:59.000 How you can help! 9:59:59.000,9:59:59.000 So let's dive into the past 9:59:59.000,9:59:59.000 If you have questions, just raise your hand and interrupt me 9:59:59.000,9:59:59.000 Don't feel shy 9:59:59.000,9:59:59.000 It started in June 2010, I adopted foomatic-filters 9:59:59.000,9:59:59.000 because it was severely outdated 9:59:59.000,9:59:59.000 There was no upload for a year, missing 5 new upstream releases 9:59:59.000,9:59:59.000 We were lagging severely behind Ubuntu 9:59:59.000,9:59:59.000 and the maintainer was quasi-MIA 9:59:59.000,9:59:59.000 Typical case for adopting a package some months before the freeze. 9:59:59.000,9:59:59.000 I was kind of looking for things to help the freeze out 9:59:59.000,9:59:59.000 and this was broken on my machine, 9:59:59.000,9:59:59.000 that's were the trap was working me first. 9:59:59.000,9:59:59.000 It just made it into Squeeze because I did the upload 9:59:59.000,9:59:59.000 3 hours after the freeze was suprise announced at the DebConf then 9:59:59.000,9:59:59.000 So I managed to get it through, somehow. 9:59:59.000,9:59:59.000 But that was the only package I was maintaining there for Squeeze 9:59:59.000,9:59:59.000 Then in July, I sent this Request For Comments 9:59:59.000,9:59:59.000 for forming a printing task force 9:59:59.000,9:59:59.000 to various mailing lists 9:59:59.000,9:59:59.000 the cups maintainers list, et cetera 9:59:59.000,9:59:59.000 to see if it was possible to gather some people 9:59:59.000,9:59:59.000 around maintaining the whole printing stack under a team umbrella 9:59:59.000,9:59:59.000 because before that it was just sets of packages 9:59:59.000,9:59:59.000 maintained by individuals on their own side of debian 9:59:59.000,9:59:59.000 This thing was kind of working 9:59:59.000,9:59:59.000 but as soon as people went MIA 9:59:59.000,9:59:59.000 or just had other interests then the packages were rotting. 9:59:59.000,9:59:59.000 Then I started integrating the Ubuntu delta into Debian 9:59:59.000,9:59:59.000 because Ubuntu apparently had more need than Debian 9:59:59.000,9:59:59.000 to have a working printing infrastructure then. 9:59:59.000,9:59:59.000 and they had been fixing this stuff on their site. 9:59:59.000,9:59:59.000 It's interesting to take a look at the Ubuntu delta 9:59:59.000,9:59:59.000 in the first place, why there was one. 9:59:59.000,9:59:59.000 One argument for that is that the updates were not proposed 9:59:59.000,9:59:59.000 back to Debian at all 9:59:59.000,9:59:59.000 No patches to enter to the bug tracker 9:59:59.000,9:59:59.000 no other was than just looking at the packages in Ubuntu 9:59:59.000,9:59:59.000 and seeing there were updates there 9:59:59.000,9:59:59.000 so I should maybe take the patches back 9:59:59.000,9:59:59.000 but there was no upward communication. 9:59:59.000,9:59:59.000 On the other hand, the packages were not getting 9:59:59.000,9:59:59.000 any or much attention in Debian, either. 9:59:59.000,9:59:59.000 No one was actually taking a look at this diff 9:59:59.000,9:59:59.000 and making sure that things were working. 9:59:59.000,9:59:59.000 It was working for some parts but there were many bugs still. 9:59:59.000,9:59:59.000 But it's still free software 9:59:59.000,9:59:59.000 so patches were sitting there 9:59:59.000,9:59:59.000 you had a nice link from the PTS to get one big patch 9:59:59.000,9:59:59.000 you could apply to the Debian package 9:59:59.000,9:59:59.000 and you could just integrate that. 9:59:59.000,9:59:59.000 The patches were available. 9:59:59.000,9:59:59.000 It was not that bad. 9:59:59.000,9:59:59.000 The work started at the beginning of the Wheezy cycle 9:59:59.000,9:59:59.000 around 2010 or 2011 9:59:59.000,9:59:59.000 by basically adopting new packages 9:59:59.000,9:59:59.000 and polishing the Ubuntu changes 9:59:59.000,9:59:59.000 like taking one change at a time 9:59:59.000,9:59:59.000 making one clean commit out of that 9:59:59.000,9:59:59.000 and uploading releases one after another 9:59:59.000,9:59:59.000 integrating new upstream releases 9:59:59.000,9:59:59.000 and all good, no? 9:59:59.000,9:59:59.000 Well, not exactly 9:59:59.000,9:59:59.000 because the dependency stack was at that time a little complicated, so to say. 9:59:59.000,9:59:59.000 because every package was liking against its dependencies 9:59:59.000,9:59:59.000 and some of the drivers had been promoted to the print server task. 9:59:59.000,9:59:59.000 So the print server task was pulling like, hplip and gutenprint 9:59:59.000,9:59:59.000 but not other drivers for some reason 9:59:59.000,9:59:59.000 and it was pulling cups 9:59:59.000,9:59:59.000 and cups was pulling poppler 9:59:59.000,9:59:59.000 and then, yes, that basically. 9:59:59.000,9:59:59.000 You can go on the wiki page to revise history 9:59:59.000,9:59:59.000 but basically that was what was there when I was cleaning up the stack. 9:59:59.000,9:59:59.000 I started discussing the thing on the list 9:59:59.000,9:59:59.000 and we were like 2 or 3 and many people were agreeing with the thing 9:59:59.000,9:59:59.000 but I was not many for doing the thing [laughs] 9:59:59.000,9:59:59.000 So I started cleaning up the dust 9:59:59.000,9:59:59.000 renaming the drivers, 9:59:59.000,9:59:59.000 now all printer drivers are namespaced somehow 9:59:59.000,9:59:59.000 they all start with the same binary name 9:59:59.000,9:59:59.000 reworking the dependency tree 9:59:59.000,9:59:59.000 making sure you have a printer-driver-all that just recommends all available 9:59:59.000,9:59:59.000 drivers that the print task can depend on. 9:59:59.000,9:59:59.000 So, by default you get all available free software drivers 9:59:59.000,9:59:59.000 just in case you might want to install a printer. 9:59:59.000,9:59:59.000 There is this pyppd, 9:59:59.000,9:59:59.000 that is a compressor that would take the pdd files 9:59:59.000,9:59:59.000 and turn them into an xz compressed python script 9:59:59.000,9:59:59.000 that will uncompress itself into pdds 9:59:59.000,9:59:59.000 that basically allow disk space reduction of 80% 9:59:59.000,9:59:59.000 That was written during a Google Summer of Code 9:59:59.000,9:59:59.000 and I just wrote the dh wrapper around that to automate that for the printing 9:59:59.000,9:59:59.000 packages 9:59:59.000,9:59:59.000 so if you put the ppd files in the right place 9:59:59.000,9:59:59.000 and run that tool, it will just do the compression 9:59:59.000,9:59:59.000 and replacement and removing in the right place. 9:59:59.000,9:59:59.000 We have moved all of the packages to git 9:59:59.000,9:59:59.000 because some of them were in no VCS 9:59:59.000,9:59:59.000 some of them were in SVN 9:59:59.000,9:59:59.000 I don't we had any in CVS 9:59:59.000,9:59:59.000 but moving to git was a good thing 9:59:59.000,9:59:59.000 in collab-maint by then because I didn't have the interest in making a proper 9:59:59.000,9:59:59.000 team namespace 9:59:59.000,9:59:59.000 I wondered if it was easier just to put everything there 9:59:59.000,9:59:59.000 and what might happen is that someone would be interested in putting patches. 9:59:59.000,9:59:59.000 That didn't happen. 9:59:59.000,9:59:59.000 We hijacked the debian-printing list, 9:59:59.000,9:59:59.000 because no one was using that 9:59:59.000,9:59:59.000 and it was totally logical to use that 9:59:59.000,9:59:59.000 as a maintainer list, to have everything in the same place. 9:59:59.000,9:59:59.000 and cleaning out dependencies, apparently that was twice on the slide. 9:59:59.000,9:59:59.000 During that time, we managed to package all known free software drivers. 9:59:59.000,9:59:59.000 There were some laying around that were not packaged, 9:59:59.000,9:59:59.000 some that were a little complicated to package. 9:59:59.000,9:59:59.000 I tried to search through OpenPrinting and whatever 9:59:59.000,9:59:59.000 and find some others that were not packaged 9:59:59.000,9:59:59.000 that were maybe supporting one or two printers. 9:59:59.000,9:59:59.000 I wondered, it was probably good to have them in Debian anyway 9:59:59.000,9:59:59.000 could be useful to one or two users. 9:59:59.000,9:59:59.000 Consolidated the foomatic packaging 9:59:59.000,9:59:59.000 and caught back on upstream versions. 9:59:59.000,9:59:59.000 I think in wheezy we had most of that. 9:59:59.000,9:59:59.000 But there's still cups. 9:59:59.000,9:59:59.000 cups is like the thing you don't really want to touch when you do printing 9:59:59.000,9:59:59.000 because that is the complicated part, 9:59:59.000,9:59:59.000 everything else is just drivers, filters and small programs 9:59:59.000,9:59:59.000 It's easy when you start packaging, 9:59:59.000,9:59:59.000 small things in different languages 9:59:59.000,9:59:59.000 It's funny. 9:59:59.000,9:59:59.000 But cups is a little frightening. 9:59:59.000,9:59:59.000 So I wondered, cups is one big thing 9:59:59.000,9:59:59.000 and it has an Apple upstream, 9:59:59.000,9:59:59.000 it's not really the thing you want to touch. 9:59:59.000,9:59:59.000 cups is not really known for the super whatever free software friendly. 9:59:59.000,9:59:59.000 The wheezy freeze was upcoming and cups hadn't seen uploads for a year 9:59:59.000,9:59:59.000 so I started fixing one thing after another 9:59:59.000,9:59:59.000 and I started uploading NMUs 9:59:59.000,9:59:59.000 I ended up doing 16 NMUs in a row 9:59:59.000,9:59:59.000 Not every NMU got the freeze exception request 9:59:59.000,9:59:59.000 but almost all of them 9:59:59.000,9:59:59.000 So for each of the NMUs, there was a discussion 9:59:59.000,9:59:59.000 with the release team all of the changes that would enter wheezy. 9:59:59.000,9:59:59.000 Yeah, that. 9:59:59.000,9:59:59.000 In 2013, cups was especially made complicated 9:59:59.000,9:59:59.000 by the fact there was no public VCS. 9:59:59.000,9:59:59.000 There used to be an SVN but it was down for some reason. 9:59:59.000,9:59:59.000 There also used to be a public bug tracker, 9:59:59.000,9:59:59.000 but it was down for some reason. 9:59:59.000,9:59:59.000 The few contacts I had with Apple 9:59:59.000,9:59:59.000 was just over private mails 9:59:59.000,9:59:59.000 because they had no mailing lists, 9:59:59.000,9:59:59.000 or it was closed or it was down. 9:59:59.000,9:59:59.000 So not exactly the upstream you are very fine working with 9:59:59.000,9:59:59.000 It's just a black-hole, you get a new tarball 9:59:59.000,9:59:59.000 No changes, you get a Changelog, but you don't get the individual changes 9:59:59.000,9:59:59.000 and of course the package back then had no test suite working, no autopkgtest 9:59:59.000,9:59:59.000 So, yeah, that. 9:59:59.000,9:59:59.000 But finally after doing 16 NMUs, I thought to myself, 9:59:59.000,9:59:59.000 Yeah, what does that mean? The real maintainer would not get back to 9:59:59.000,9:59:59.000 uploading that for the stable release so I might as well just update 9:59:59.000,9:59:59.000 and we'll see what happens. 9:59:59.000,9:59:59.000 So apparently the trap worked. 9:59:59.000,9:59:59.000 I ended up with one more big package, that's cups. 9:59:59.000,9:59:59.000 So where do we stand now? 9:59:59.000,9:59:59.000 If you run sid, you probably have most packages 9:59:59.000,9:59:59.000 that are in there are the most recent upstream version. 9:59:59.000,9:59:59.000 In the last year, we moved from collab-maint to printing 9:59:59.000,9:59:59.000 because it's now easier because now I'm a DD 9:59:59.000,9:59:59.000 so I could easily create a new alioth group 9:59:59.000,9:59:59.000 and we thought it's also easier to see who was actually still in the team. 9:59:59.000,9:59:59.000 We sent out the mail to various persons that had contributed and asked them to 9:59:59.000,9:59:59.000 request the membership in alioth 9:59:59.000,9:59:59.000 The ones that are just MIA don't request and they're not members 9:59:59.000,9:59:59.000 So that the list on alioth is somewhat relevant 9:59:59.000,9:59:59.000 We kind of managed to maintain the bug flow at a reasonable level. 9:59:59.000,9:59:59.000 I started, there was like 400 bugs and now we are around 300 9:59:59.000,9:59:59.000 but that means also that the new bugs are addressed within a reasonable delay, 9:59:59.000,9:59:59.000 somehow. 9:59:59.000,9:59:59.000 So now, the FLOSS drivers are in Debian 9:59:59.000,9:59:59.000 There was a new one, I think 3 months ago, 9:59:59.000,9:59:59.000 some guy did a driver for 2 or 3 Brother printers 9:59:59.000,9:59:59.000 that just works currently. 9:59:59.000,9:59:59.000 So we packaged that and it's in Debian. 9:59:59.000,9:59:59.000 Also the Ubuntu diff is kept minimal 9:59:59.000,9:59:59.000 we've integrated some of the Ubuntu specific changes 9:59:59.000,9:59:59.000 into the Debian packaging just to avoid have them creating a new diff 9:59:59.000,9:59:59.000 or maintaining a diff over time. 9:59:59.000,9:59:59.000 We could do that easily with dpkg-vendor for example 9:59:59.000,9:59:59.000 The package is the same, 9:59:59.000,9:59:59.000 just at build-time it will do different things 9:59:59.000,9:59:59.000 So for example, the default pdf page is different 9:59:59.000,9:59:59.000 and the two pages are in the Debian package 9:59:59.000,9:59:59.000 but when you build it on Ubuntu you get the Ubuntu page. 9:59:59.000,9:59:59.000 It has the advantage that the Ubuntu 9:59:59.000,9:59:59.000 employees don't have to maintain that patch over time 9:59:59.000,9:59:59.000 We manage to get the diff to zero, sometimes 9:59:59.000,9:59:59.000 Sometimes, you just see a peak in Ubuntu 9:59:59.000,9:59:59.000 because they want to be to faster than the music 9:59:59.000,9:59:59.000 and they do their stuff. 9:59:59.000,9:59:59.000 That's the bugs for all printing packages 9:59:59.000,9:59:59.000 it's not that bad. 9:59:59.000,9:59:59.000 I had to do actual work, for my work 9:59:59.000,9:59:59.000 in July and August it rose a little. 9:59:59.000,9:59:59.000 For cups, as you might have noticed if you're googling it now 9:59:59.000,9:59:59.000 we've gone from 1.5.3 in Squeeze 9:59:59.000,9:59:59.000 to 1.7.5, now in Jessie. 9:59:59.000,9:59:59.000 So it's two minor upstream releases 9:59:59.000,9:59:59.000 with quite a lot of changes 9:59:59.000,9:59:59.000 and I think we packaged all intermediate versions 9:59:59.000,9:59:59.000 and it's not bold to say that Wheezy will release with a minor version of 1.7 9:59:59.000,9:59:59.000 I mean Jessie, yes. Thank you. 9:59:59.000,9:59:59.000 I'm getting old! 9:59:59.000,9:59:59.000 We've enabled the full testsuite 9:59:59.000,9:59:59.000 so lots of patches within the testsuite 9:59:59.000,9:59:59.000 but not for disabling things, mostly for ignoring things in the error logs 9:59:59.000,9:59:59.000 because cups' testsuite will count the number of errors in its error log 9:59:59.000,9:59:59.000 so you have to take things out so that the count always matches 9:59:59.000,9:59:59.000 autopkgtest is basically printing to /dev/null 9:59:59.000,9:59:59.000 but we test that this continues to work when other parts of the archive change 9:59:59.000,9:59:59.000 so printing to /dev/null works 9:59:59.000,9:59:59.000 Good news! 9:59:59.000,9:59:59.000 We've patched in the systemd socket activation and activity timeout 9:59:59.000,9:59:59.000 The socket activation was originally from Lennart 9:59:59.000,9:59:59.000 and then changed by Gentoo to not have that mandatory, 9:59:59.000,9:59:59.000 because Gentoo also has sysvinit 9:59:59.000,9:59:59.000 where Red Hat just has systemd so they don't have an option at runtime 9:59:59.000,9:59:59.000 to either activate or deactive the socket activation 9:59:59.000,9:59:59.000 So it's a mix of the Red Hat patch and the Gentoo patch 9:59:59.000,9:59:59.000 plus cleaning, of course. 9:59:59.000,9:59:59.000 The activity timeout was from Ubuntu 9:59:59.000,9:59:59.000 Basically now in sid if you run systemd, or upstart 9:59:59.000,9:59:59.000 after 30 seconds of not doing anything the cups server will shutdown itself 9:59:59.000,9:59:59.000 and doesn't do anything and when you print something or access the web 9:59:59.000,9:59:59.000 interface over the 6631 port, it just launches itself in a part of second 9:59:59.000,9:59:59.000 and prints and then after 30 seconds shuts down again. 9:59:59.000,9:59:59.000 As for upstream, we have regular good and constructive contact 9:59:59.000,9:59:59.000 with upstream. 9:59:59.000,9:59:59.000 They have again a public VCS, bugs repository 9:59:59.000,9:59:59.000 so we can actually communicate on the public place 9:59:59.000,9:59:59.000 and have the various changes also as individual units 9:59:59.000,9:59:59.000 so it's quite easier then. 9:59:59.000,9:59:59.000 As for the constructive contacts, 9:59:59.000,9:59:59.000 I also have good private emails with Mike 9:59:59.000,9:59:59.000 Michael Sweet from Apple 9:59:59.000,9:59:59.000 about this GnuTLS vs OpenSSL discussion 9:59:59.000,9:59:59.000 we had in debian-devel some months ago 9:59:59.000,9:59:59.000 because GnuTLS introduced some incompatibilities 9:59:59.000,9:59:59.000 So I thought we could just build against OpenSSL 9:59:59.000,9:59:59.000 No problem, cups has the GPL 2 exception 9:59:59.000,9:59:59.000 and it was rightly pointed out that every package 9:59:59.000,9:59:59.000 that uses libcups2 also needs the GPL 2 exception for OpenSSL. 9:59:59.000,9:59:59.000 So it wasn't really possible. 9:59:59.000,9:59:59.000 So we had that discussion and actually 9:59:59.000,9:59:59.000 upstream was interested in finding a solution 9:59:59.000,9:59:59.000 eventually patching in another SSL library 9:59:59.000,9:59:59.000 if that would help the Linux distributors 9:59:59.000,9:59:59.000 It was kind of surprising to me that Apple would be doing that 9:59:59.000,9:59:59.000 but they were! I must say, so that's good. 9:59:59.000,9:59:59.000 Now we dropped the OpenSSL and it just builds the latest GnuTLS version 9:59:59.000,9:59:59.000 The Linux Foundation still needs to maintain several things 9:59:59.000,9:59:59.000 that got dropped from cups 9:59:59.000,9:59:59.000 That is one drawback of having cups owned by Apple is that 9:59:59.000,9:59:59.000 they basically dropped everything that was not interesting for them. 9:59:59.000,9:59:59.000 So they want to just make sure you can print on Apple certified printers 9:59:59.000,9:59:59.000 and the rest is left up the community. 9:59:59.000,9:59:59.000 So the Linux Foundation took over the cups filters 9:59:59.000,9:59:59.000 and the cups broadcasting management, 9:59:59.000,9:59:59.000 so you can announcement between cups servers 9:59:59.000,9:59:59.000 to get the queues in your local queue, et cetera 9:59:59.000,9:59:59.000 So that's taken over by the Linux Foundation 9:59:59.000,9:59:59.000 I'm thankful they do that job 9:59:59.000,9:59:59.000 I'm happy I don't have to do it myself 9:59:59.000,9:59:59.000 because it probably wouldn't work 9:59:59.000,9:59:59.000 and Till Kamppeter is working with them making that happen, 9:59:59.000,9:59:59.000 so I'm glad he does and thank you. 9:59:59.000,9:59:59.000 We also have some people helping, 9:59:59.000,9:59:59.000 I would like to thank Brian Potkin in particular 9:59:59.000,9:59:59.000 for being precise, tireless and helpful 9:59:59.000,9:59:59.000 I don't know if he is at DebConf 9:59:59.000,9:59:59.000 but he's been participating on the list quite a lot 9:59:59.000,9:59:59.000 for tracking down some bugs 9:59:59.000,9:59:59.000 reporting some useful bugs 9:59:59.000,9:59:59.000 preparing some patches also. 9:59:59.000,9:59:59.000 That's been useful. 9:59:59.000,9:59:59.000 You might have seen from the list of packages 9:59:59.000,9:59:59.000 we also have packages that I don't maintain myself 9:59:59.000,9:59:59.000 but that are also in the Debian Printing team; 9:59:59.000,9:59:59.000 we have Jonas for ghostscript and IJS, 9:59:59.000,9:59:59.000 c2050 by Marco, 9:59:59.000,9:59:59.000 cups-bjnp by Joe, 9:59:59.000,9:59:59.000 min12xxw by Stefan 9:59:59.000,9:59:59.000 and tea4cups by Mike. 9:59:59.000,9:59:59.000 Those packages don't move very often, 9:59:59.000,9:59:59.000 but when they do we have updates. 9:59:59.000,9:59:59.000 So it's good. 9:59:59.000,9:59:59.000 In other parts of the stack, we still have hplip 9:59:59.000,9:59:59.000 that is maintained indepedently by Mark Purcell. 9:59:59.000,9:59:59.000 That also gets updated regularly so it's fine. 9:59:59.000,9:59:59.000 and cups-pdf by Martin-Ăric 9:59:59.000,9:59:59.000 which is apparently working too. 9:59:59.000,9:59:59.000 So thanks! 9:59:59.000,9:59:59.000 For the future; scoping the problem, 9:59:59.000,9:59:59.000 non-free plague and some incoming challenges. 9:59:59.000,9:59:59.000 The problem of printing is that it's still a must-be of our world. 9:59:59.000,9:59:59.000 When you discuss with people some people say cups is really shit, 9:59:59.000,9:59:59.000 we could just drop that from the default installation. 9:59:59.000,9:59:59.000 Well you know, people still print 9:59:59.000,9:59:59.000 The non-paper world is probably in the advertisement 9:59:59.000,9:59:59.000 but it's not there at all. 9:59:59.000,9:59:59.000 Printing when it works is boring, 9:59:59.000,9:59:59.000 it just has to work. 9:59:59.000,9:59:59.000 But when it doesn't, it's really annoying. 9:59:59.000,9:59:59.000 So it's that type of technical challenge that 9:59:59.000,9:59:59.000 you will only get complaints when it doesn't 9:59:59.000,9:59:59.000 and when it does everyone is happy, no bugs, nothing, it just works. 9:59:59.000,9:59:59.000 And that's fine. 9:59:59.000,9:59:59.000 On the other hand, printing is damn complex. 9:59:59.000,9:59:59.000 Printer manufacturers come up with new protocols every 3 months basically. 9:59:59.000,9:59:59.000 They can even change printing protocols 9:59:59.000,9:59:59.000 within the same product suite, for some reason. 9:59:59.000,9:59:59.000 You get different IPP versions, PCL support 9:59:59.000,9:59:59.000 different memory requirements 9:59:59.000,9:59:59.000 now you can directly feed PDFs to printers 9:59:59.000,9:59:59.000 but the printers will sometimes fail 9:59:59.000,9:59:59.000 because the internal PDF rendering will fail for some reason 9:59:59.000,9:59:59.000 so you have to circumvent that in the printer drivers 9:59:59.000,9:59:59.000 You also have different sending protocols, 9:59:59.000,9:59:59.000 AirPrint, the Google cloud print is coming, 9:59:59.000,9:59:59.000 we have now IPP over USB for some printers 9:59:59.000,9:59:59.000 It's like an ever changing landscape for printing 9:59:59.000,9:59:59.000 It's a thing we've been doing for years 9:59:59.000,9:59:59.000 and it's still changing for some reason. 9:59:59.000,9:59:59.000 It's complex also because it takes any format as input; 9:59:59.000,9:59:59.000 you can print images, Word documents, PDFs, PostScript 9:59:59.000,9:59:59.000 and you have to make sure that's transformed to whatever 9:59:59.000,9:59:59.000 the printer is ready to get. 9:59:59.000,9:59:59.000 Sometimes that's PostScript, sometimes that's PDF, 9:59:59.000,9:59:59.000 sometimes it's a raw whatever, sometimes it's a bitstream. 9:59:59.000,9:59:59.000 So we have complex chains 9:59:59.000,9:59:59.000 and one of the biggest problems is that when a user has a problem, 9:59:59.000,9:59:59.000 the probability is 1 that you don't have the printer. 9:59:59.000,9:59:59.000 I mean, I have one printer at home 9:59:59.000,9:59:59.000 I test it when I do new uploads 9:59:59.000,9:59:59.000 and I just print the test page and that works 9:59:59.000,9:59:59.000 but when a guy has a problem on a printer, I don't have it. 9:59:59.000,9:59:59.000 So it's quite hard to reproduce. 9:59:59.000,9:59:59.000 There's still IP in the drivers 9:59:59.000,9:59:59.000 We have full manufacturer suites that have no acceptable FLOSS support. 9:59:59.000,9:59:59.000 I'll do some fingerpointing now. 9:59:59.000,9:59:59.000 I hope this is not video-taped. 9:59:59.000,9:59:59.000 Oh shit. 9:59:59.000,9:59:59.000 We've had this project from Debian France 9:59:59.000,9:59:59.000 they were basically offering books for people 9:59:59.000,9:59:59.000 that would be happy to contribute to something 9:59:59.000,9:59:59.000 and I mentored two guys to take a look at what Brother is doing with the drivers 9:59:59.000,9:59:59.000 I invite you to go there, the documentation is quite extensive 9:59:59.000,9:59:59.000 and they tried to see how we could package that even in non-free 9:59:59.000,9:59:59.000 just to consolidate the thing and have a somewhat clean dump of files 9:59:59.000,9:59:59.000 even in non-free so that we could install that 9:59:59.000,9:59:59.000 instead of downloading a 2002 .deb, that has no debsums 9:59:59.000,9:59:59.000 But the web page layout changed in the middle of the project. 9:59:59.000,9:59:59.000 They just revamped the website. 9:59:59.000,9:59:59.000 So we had a crawler that would get the various drivers and it just changed 9:59:59.000,9:59:59.000 completely, in the middle of the project. 9:59:59.000,9:59:59.000 For some printers you have two different versions 9:59:59.000,9:59:59.000 Either for SI or imperial units. 9:59:59.000,9:59:59.000 Because, I don't know, the printers has different physical size 9:59:59.000,9:59:59.000 or I don't know. 9:59:59.000,9:59:59.000 You have C-shell all over the place, 9:59:59.000,9:59:59.000 I don't think we have any valid C-shell interpreter yet in Debian 9:59:59.000,9:59:59.000 For many drivers, there is no co-installation possible 9:59:59.000,9:59:59.000 because they used the same named files with different contents 9:59:59.000,9:59:59.000 in the same place 9:59:59.000,9:59:59.000 So you need a different file with the same name, the same place 9:59:59.000,9:59:59.000 for two different printers. 9:59:59.000,9:59:59.000 So basically you can even print to one or the other 9:59:59.000,9:59:59.000 but not to two at the same time. 9:59:59.000,9:59:59.000 It still uses printcap, that's been deprecated 9:59:59.000,9:59:59.000 since at least Etch, I didn't check 9:59:59.000,9:59:59.000 but something very old. 9:59:59.000,9:59:59.000 There are a lot of bugs all over the place 9:59:59.000,9:59:59.000 it's loads and loads of shell code that would unpack 9:59:59.000,9:59:59.000 parts of PPD files to generate files to put in other places, 9:59:59.000,9:59:59.000 download things from the Internet... 9:59:59.000,9:59:59.000 A whole load of crap, frankly. 9:59:59.000,9:59:59.000 But we should not only finger point at Brother 9:59:59.000,9:59:59.000 at Samsung they are doing exactly the same, or worse 9:59:59.000,9:59:59.000 I didn't take a look at that precisely 9:59:59.000,9:59:59.000 but the Brother project was quite frightening 9:59:59.000,9:59:59.000 and I don't think we will ever do something useful there. 9:59:59.000,9:59:59.000 I don't know if that's, I don't know. 9:59:59.000,9:59:59.000 [??]: I seem to remember a Samsung printer driver installer 9:59:59.000,9:59:59.000 from some years back 9:59:59.000,9:59:59.000 that would require applications printing 9:59:59.000,9:59:59.000 to run as root 9:59:59.000,9:59:59.000 setuid flag on certain applications so it might be used for printing. 9:59:59.000,9:59:59.000 [Didier]: I'm not surprised. 9:59:59.000,9:59:59.000 That's the dark corner we don't to see. 9:59:59.000,9:59:59.000 There are free drivers that work quite well 9:59:59.000,9:59:59.000 and there are a whole lot of things in the dark corner 9:59:59.000,9:59:59.000 that, you don't want to buy these printers 9:59:59.000,9:59:59.000 because there's no way to make them work reasonably 9:59:59.000,9:59:59.000 unless you download a some very very rare old Debian package, 9:59:59.000,9:59:59.000 fix the debsums inside and something like that. 9:59:59.000,9:59:59.000 For Jessie, new things: 9:59:59.000,9:59:59.000 ghostscript moved to AGPL, 9:59:59.000,9:59:59.000 that makes some people very happy. 9:59:59.000,9:59:59.000 so what we'll probably do is upload the latest non-AGPL version 9:59:59.000,9:59:59.000 and have that in Jessie 9:59:59.000,9:59:59.000 and we'll probably see what happens then 9:59:59.000,9:59:59.000 because we release soon and it's quite a complex problem 9:59:59.000,9:59:59.000 we won't have time to fix that before. 9:59:59.000,9:59:59.000 So, we'll move some versions up 9:59:59.000,9:59:59.000 but not to the latest upstream version. 9:59:59.000,9:59:59.000 Apparently we're the only ones to care, 9:59:59.000,9:59:59.000 all the other distributions have uploaded the AGPL version and it's there. 9:59:59.000,9:59:59.000 CUPS 2.0 is around the corner, 9:59:59.000,9:59:59.000 we hope it will get there by the end of the year. 9:59:59.000,9:59:59.000 It introduces upstream systemd support, 9:59:59.000,9:59:59.000 TLS certificate validation, 9:59:59.000,9:59:59.000 maybe it's time for us to do that! 9:59:59.000,9:59:59.000 They moved to OpenSSL support 9:59:59.000,9:59:59.000 and many OSX enhancements, 9:59:59.000,9:59:59.000 whatever that is useful for us. 9:59:59.000,9:59:59.000 Expect 2.0~beta1 in experimental in the next weeks/months, 9:59:59.000,9:59:59.000 we'll see. 9:59:59.000,9:59:59.000 So what you can do. 9:59:59.000,9:59:59.000 Frankly, I'm getting bored by all that. 9:59:59.000,9:59:59.000 It's been years now, I've been maintaining the printing stack. 9:59:59.000,9:59:59.000 Not exactly alone, but for some parts quite alone. 9:59:59.000,9:59:59.000 It's true to say that I've got quite a lot of 9:59:59.000,9:59:59.000 collaboration with Ubuntu to make that work. 9:59:59.000,9:59:59.000 There are many things that I just have to 9:59:59.000,9:59:59.000 patch back into Debian and it just works 9:59:59.000,9:59:59.000 but it's sometimes a little boring to do that all alone. 9:59:59.000,9:59:59.000 I'm glad others are helping in the team 9:59:59.000,9:59:59.000 but for the most part, particularly cups, 9:59:59.000,9:59:59.000 it's not that easy. 9:59:59.000,9:59:59.000 But it's not too complicated, believe me. 9:59:59.000,9:59:59.000 Trust me! 9:59:59.000,9:59:59.000 One point is, I'm very bad at motivating people 9:59:59.000,9:59:59.000 or documenting the processes. 9:59:59.000,9:59:59.000 For example the Teams page on the wiki, 9:59:59.000,9:59:59.000 I probably edited it twice, once in 2010 9:59:59.000,9:59:59.000 and once last year for the printing BoF 9:59:59.000,9:59:59.000 and it's still sitting there with not many updates 9:59:59.000,9:59:59.000 So someone motivated by processes documentation should jump on the ship 9:59:59.000,9:59:59.000 and do some stuff there. 9:59:59.000,9:59:59.000 This talk was an attempt at motivating people, at least 9:59:59.000,9:59:59.000 So we'll see if that works. 9:59:59.000,9:59:59.000 On the long-term; 9:59:59.000,9:59:59.000 what we need is move drivers writers bascially 9:59:59.000,9:59:59.000 because there are tons of printers that come out 9:59:59.000,9:59:59.000 that don't get full support and that people use, basically 9:59:59.000,9:59:59.000 and the problem is not making sure everyone can buy the printer they want 9:59:59.000,9:59:59.000 people will have printers they have there and they want that to work 9:59:59.000,9:59:59.000 and it doesn't. 9:59:59.000,9:59:59.000 So we need people to actually write drivers for printers. 9:59:59.000,9:59:59.000 We need more bug triagers, 9:59:59.000,9:59:59.000 that they become wanna-maintainers, hopefully. 9:59:59.000,9:59:59.000 and less bugs, pretty please. 9:59:59.000,9:59:59.000 We can achieve less bugs two ways; 9:59:59.000,9:59:59.000 by fixing more bugs or by introducing less bugs. 9:59:59.000,9:59:59.000 So maybe we should do the two. 9:59:59.000,9:59:59.000 That's all from my little Debian Printing stack status. 9:59:59.000,9:59:59.000 If you have questions, I am happy to try to answer them. 9:59:59.000,9:59:59.000 Otherwise, I think we can all move to dinner! 9:59:59.000,9:59:59.000 [Wookey]: I'm a bit interested in printing 9:59:59.000,9:59:59.000 because we have lots of corporate printing 9:59:59.000,9:59:59.000 which doesn't work because it's all run for Windows people. 9:59:59.000,9:59:59.000 So the poor Linux people are thoroughly ignored 9:59:59.000,9:59:59.000 and in fact if we print to the printers, they tend to crash! 9:59:59.000,9:59:59.000 Which is a bit sad 9:59:59.000,9:59:59.000 and people complain that the printers are very unreliable 9:59:59.000,9:59:59.000 and actually it's us [laughs] 9:59:59.000,9:59:59.000 There's a fifty percent chance of things exploding 9:59:59.000,9:59:59.000 But what I haven't been able to find is 9:59:59.000,9:59:59.000 where do people that have to worry about corporate installations hang out? 9:59:59.000,9:59:59.000 I couldn't find anywhere to ask questions 9:59:59.000,9:59:59.000 because our IT people go: 9:59:59.000,9:59:59.000 "We don't know how it's supposed to work in Linux-world, 9:59:59.000,9:59:59.000 we have no fucking idea. 9:59:59.000,9:59:59.000 Please tell us what to do and we'll do that" 9:59:59.000,9:59:59.000 and I don't know anything about printing, 9:59:59.000,9:59:59.000 or who to ask, or where to go. 9:59:59.000,9:59:59.000 Is there a place? 9:59:59.000,9:59:59.000 There must be lots of people who have big installations 9:59:59.000,9:59:59.000 and there must be some people who understand how this works 9:59:59.000,9:59:59.000 [Didier]: The debian-printing list is not that much use 9:59:59.000,9:59:59.000 it gets the automated mails from the maintainers mails 9:59:59.000,9:59:59.000 so we could drop that if people started to use that. 9:59:59.000,9:59:59.000 That would be one option, I think you should look into 9:59:59.000,9:59:59.000 OpenPrinting and if no list exists there 9:59:59.000,9:59:59.000 they should probably create one. 9:59:59.000,9:59:59.000 I think they have one, they have summits 9:59:59.000,9:59:59.000 and they have meetings for whatever printing related- 9:59:59.000,9:59:59.000 [Wookey]: Somewhere on the OpenPrinting site, 9:59:59.000,9:59:59.000 would be a good place then? 9:59:59.000,9:59:59.000 [Didier]: Yes, I think. 9:59:59.000,9:59:59.000 [??]: Hi, I was just wondering if you would comment on- 9:59:59.000,9:59:59.000 What's your perspective on backports things like that. 9:59:59.000,9:59:59.000 So once we go stable, how do you see supporting the printing stack 9:59:59.000,9:59:59.000 for 2 years/5 years, however long stable's going to be out there. 9:59:59.000,9:59:59.000 [Didier]: There are two answers for that; 9:59:59.000,9:59:59.000 one is, there's quite a lot of security work to do for stable already 9:59:59.000,9:59:59.000 and we had a, I think, privilege escalation in stable. 9:59:59.000,9:59:59.000 So we had to revamped the whole configuration system in stable, for cups, 9:59:59.000,9:59:59.000 during the wheezy cycle. 9:59:59.000,9:59:59.000 So that kind of takes the time that would be allocated for backports. 9:59:59.000,9:59:59.000 The other answer is, patches welcome! 9:59:59.000,9:59:59.000 So I didn't do backports for wheezy yet, 9:59:59.000,9:59:59.000 just because I had enough on my plate for sid. 9:59:59.000,9:59:59.000 But I would happily help anyone wanting to prepare backports 9:59:59.000,9:59:59.000 I think it shouldn't be too hard. 9:59:59.000,9:59:59.000 cups is probably buildable right away. 9:59:59.000,9:59:59.000 [??]: So that's cups, how about drivers? 9:59:59.000,9:59:59.000 [Didier]: Same. 9:59:59.000,9:59:59.000 If anyone's interested I could just help making sure it happens. 9:59:59.000,9:59:59.000 It's unlikely I would do it myself. 9:59:59.000,9:59:59.000 [??]: Thank you. 9:59:59.000,9:59:59.000 [Ben]: Do new drivers typically depend on a new version of cups? 9:59:59.000,9:59:59.000 [Didier]: Usually not, because they build against libcups2 9:59:59.000,9:59:59.000 but libcups2 is kind of ABI stable, since years 9:59:59.000,9:59:59.000 So it shouldn't be too much. 9:59:59.000,9:59:59.000 [Ben]: So the missing hardware support, is as I understand it 9:59:59.000,9:59:59.000 always considered an important bug 9:59:59.000,9:59:59.000 and worthy of a stable update. 9:59:59.000,9:59:59.000 So that means that if you wanted to, you could update drivers, 9:59:59.000,9:59:59.000 add new drivers, in stable. 9:59:59.000,9:59:59.000 For hardware enablement. 9:59:59.000,9:59:59.000 [Didier]: That's interesting, yeah. 9:59:59.000,9:59:59.000 [Ben]: I also had a question about drivers, which is 9:59:59.000,9:59:59.000 typically when I plug into a new printer, 9:59:59.000,9:59:59.000 I get a list of possible drivers 9:59:59.000,9:59:59.000 possibly limited to the exact model, or not. 9:59:59.000,9:59:59.000 But there always seems to be more than one option per model. 9:59:59.000,9:59:59.000 I assume that because there are multiple collections of drivers 9:59:59.000,9:59:59.000 in the package. 9:59:59.000,9:59:59.000 How, as a user, supposed to decide which of those to use? 9:59:59.000,9:59:59.000 [Didier]: Trial and attempt? [laughs] 9:59:59.000,9:59:59.000 I mean, for some printers you get a recommended version 9:59:59.000,9:59:59.000 from foomatic that has this parenthesis recommended thing. 9:59:59.000,9:59:59.000 You should just pick that one. 9:59:59.000,9:59:59.000 I think we also mostly have multiple drivers per printer 9:59:59.000,9:59:59.000 because sometimes for a single printer, 9:59:59.000,9:59:59.000 depending on where in the world it was 9:59:59.000,9:59:59.000 it would work better or worse with different printer drivers. 9:59:59.000,9:59:59.000 The one database that we use for that is foomaticdb 9:59:59.000,9:59:59.000 That is maintained on the OpenPrinting website 9:59:59.000,9:59:59.000 Where exactly you should report bugs isn't exactly clear, 9:59:59.000,9:59:59.000 also for me, so I should clarify that. 9:59:59.000,9:59:59.000 [Ben]: I've never selected a driver and found that it didn't work 9:59:59.000,9:59:59.000 So as far as I'm concerned you're doing fine there. 9:59:59.000,9:59:59.000 It's simply because, having been presented with a choice, 9:59:59.000,9:59:59.000 I don't know what the difference would be. 9:59:59.000,9:59:59.000 [Didier]: Was that on the cups web interface? 9:59:59.000,9:59:59.000 [Ben]: Yes. 9:59:59.000,9:59:59.000 [Didier]: I think there the selection isn't very smart 9:59:59.000,9:59:59.000 but when I think that you use python-cups or one of the 9:59:59.000,9:59:59.000 GNOME or KDE frontends, 9:59:59.000,9:59:59.000 you have a little less options, I think. 9:59:59.000,9:59:59.000 But that's more frontend work, than whatever cups related 9:59:59.000,9:59:59.000 but I don't have a better answer, now. [laughs] 9:59:59.000,9:59:59.000 Any other questions? 9:59:59.000,9:59:59.000 [Wookey]: Kind of following on from what Ben said 9:59:59.000,9:59:59.000 I'd been under the impression that those were different ways of talking to the 9:59:59.000,9:59:59.000 printer 9:59:59.000,9:59:59.000 because there are always 17 ways of talking to any given printer 9:59:59.000,9:59:59.000 So I kind of thought that those were all different flavours 9:59:59.000,9:59:59.000 But again, it's extremely unclear. 9:59:59.000,9:59:59.000 Do I want foomatic-thingy or hplip-thingy or somethingelse-thingy? 9:59:59.000,9:59:59.000 I just say, you try one and usually it works 9:59:59.000,9:59:59.000 and you go, "I can sit here and try all 17 9:59:59.000,9:59:59.000 but I don't know whether that's good." 9:59:59.000,9:59:59.000 And sometimes there's the interface to printer you have to specify 9:59:59.000,9:59:59.000 so our fancy printer in the office has 81 different ways of talking to it 9:59:59.000,9:59:59.000 and you go, "I don't want to try all those!" 9:59:59.000,9:59:59.000 The 4 I've tried all make it crash! 9:59:59.000,9:59:59.000 [Didier]: Just need one that works! 9:59:59.000,9:59:59.000 [Wookey]: Exactly. 9:59:59.000,9:59:59.000 There seems to be a very small number of people that understand this stuff 9:59:59.000,9:59:59.000 There's Till and maybe 3 other people somewhere. 9:59:59.000,9:59:59.000 [Didier]: Yeah. 9:59:59.000,9:59:59.000 [Wookey]: Right. 9:59:59.000,9:59:59.000 [Didier]: We should talk more to Till! [laughs] 9:59:59.000,9:59:59.000 He's making most of that work on the Ubuntu site. 9:59:59.000,9:59:59.000 I think, as a Canonical employee. 9:59:59.000,9:59:59.000 [Wookey]: I vaguely gathered that the cups browsing thing has disappeared 9:59:59.000,9:59:59.000 upstream 9:59:59.000,9:59:59.000 So we're keeping it in a Debian and Ubuntu, while we can. 9:59:59.000,9:59:59.000 Is that right? 9:59:59.000,9:59:59.000 [Didier]: Yes. 9:59:59.000,9:59:59.000 Basically using a zeroconf/avahi thing. 9:59:59.000,9:59:59.000 [Wookey]: That's how Apple want it to work 9:59:59.000,9:59:59.000 but especially in a big office, that doesn't work at all 9:59:59.000,9:59:59.000 because you're on different network segments 9:59:59.000,9:59:59.000 [Didier]: One thing that was dropped and that hasn't been reintroduced 9:59:59.000,9:59:59.000 on OpenPrinting, is the LDAP support. 9:59:59.000,9:59:59.000 It used to be in cups, that's now removed. 9:59:59.000,9:59:59.000 It was used in big corporations that had 9:59:59.000,9:59:59.000 like, an LDAP list of printers. 9:59:59.000,9:59:59.000 Instead of listening to the noise of all printers 9:59:59.000,9:59:59.000 announcing themselves on a network. 9:59:59.000,9:59:59.000 And we regularly get users asking, 9:59:59.000,9:59:59.000 the latest one was, 9:59:59.000,9:59:59.000 "The browsing daemon has 10% CPU, 9:59:59.000,9:59:59.000 is that because I have 100 printers at my office?" 9:59:59.000,9:59:59.000 Well, yes! [laughs] 9:59:59.000,9:59:59.000 I don't have the capacity of recoding that anyway 9:59:59.000,9:59:59.000 If a big corporation wants to get LDAP support, 9:59:59.000,9:59:59.000 they should make LDAP support! 9:59:59.000,9:59:59.000 [Wookey]: Fix it, yeah. 9:59:59.000,9:59:59.000 [Didier]: But I'm open to integrating that as a Debian patch 9:59:59.000,9:59:59.000 if that helps, but can't really fix that myself. 9:59:59.000,9:59:59.000 [Wookey]: If I had any time I would like to help you with printing. 9:59:59.000,9:59:59.000 But I have too many hats already, so I'm not promising anything! 9:59:59.000,9:59:59.000 [Didier]: Yeah, thank you. 9:59:59.000,9:59:59.000 [Wookey]: Mostly so I could actually print stuff, 9:59:59.000,9:59:59.000 without having to run Windows in a VM. 9:59:59.000,9:59:59.000 Which in practice is how I printed my stuff to get here! 9:59:59.000,9:59:59.000 [Didier]: Yeah, it's bad. 9:59:59.000,9:59:59.000 Actually, one thing that geeks like us should know 9:59:59.000,9:59:59.000 is how to pick the correct printer when you buy one 9:59:59.000,9:59:59.000 [Wookey]: Yeah, my home printers all work fine. 9:59:59.000,9:59:59.000 The cups browsing works, stuff prints, 9:59:59.000,9:59:59.000 it's all lovely. 9:59:59.000,9:59:59.000 It's when you go to work that the whole things a disaster 9:59:59.000,9:59:59.000 [Didier]: Yah. 9:59:59.000,9:59:59.000 [??]: Which manufacturers should we prefer? 9:59:59.000,9:59:59.000 [laughter] 9:59:59.000,9:59:59.000 [Didier]: I'm not paid by any of these, but HP printers mostly work fine 9:59:59.000,9:59:59.000 Either through hplip or other things. 9:59:59.000,9:59:59.000 That's baseline, I would say. 9:59:59.000,9:59:59.000 Others work too! [laughs] 9:59:59.000,9:59:59.000 If anyone has contacts at Brother, 9:59:59.000,9:59:59.000 tell them to contact me and we'll manage something 9:59:59.000,9:59:59.000 and recommend some good practices for modern printing 9:59:59.000,9:59:59.000 if you know, because that's not an acceptable way 9:59:59.000,9:59:59.000 of providing Linux support, I think. 9:59:59.000,9:59:59.000 Anyway, other questions? 9:59:59.000,9:59:59.000 Everyone's hungry. 9:59:59.000,9:59:59.000 Good, thank you very much. 9:59:59.000,9:59:59.000 [applause] 9:59:59.000,9:59:59.000