I skipped #monkigras 'cos of #FOSDEM and now you're telling me I coulda done both?! #
Powered by Twitter Tools
Sometimes two campaigns that I care about a lot pick the same day to hold an awareness-raising drive. It happened again on Tuesday.
The one I took part in was advertising the Stop ACTA London Protest on Sat 11 Feb. The Anti-Counterfeiting Trade Agreement (#ACTA) is a plurilateral international agreement on enforcement of so-called “intellectual property rights” – copyrights, trademarks and so on. It’ll have major implications for freedom of expression, access to culture and privacy. It will also harm international trade and stifle cooperation. (More background at EDRI or a fairly large AJE page – thanks to Occupy Bristol for the AJE link.)
So the one I didn’t support at the time was the Move Your Money UK launch day. That’s a great idea too, suggesting that if we, the 99%, are actually unhappy with the big banks and their titled leaders, we should move as much as possible out of those banks and into financial institutions that we control. As you might expect for someone whose first memory of mutuals is a trust account at the local building society, I support that too. I still have building society accounts, as well as banking with the co-op bank and recently joining my local credit union. I’ve moved my money. Why don’t you?
I didn’t try to support both campaigns simultaneously on social networks because I thought it would reduce the number of people who saw my message. I backed the ACTA protest because a lot of my networks were already discussing Move Your Money and I thought Stop ACTA would benefit more. Was that the right decision? Who can tell? What would you have done?
Not even a month after my predictions for the year, and the first of them has failed. I said:
No IPO for Facebook: This could go either way. My bet is it will be very late 2012 or early 2013
They said:
Facebook unveils $5bn stock market flotation plans
Hrmph. Thanks Zuckerberg, you impatient hasty prediction-killer!
If you use a computer for any amount of time, you may find some backlighting for your computer screen is beneficial.
I couldn’t find any medical research that says one way or another whether it’s a good thing or not, though I did find one article which states “one of the recommended tips for reducing computer eye strain is to control the screen glare caused by both indoor and outdoor lighting” (Reduce eye fatigue by backlighting your monitor).
I thought I’d give it a try. Via hackaday I read about the awesome Ikea Dioder light strips; the white 4-piece strips are now £19.99, reduced from £40, which makes them a bit of a bargain. So I snapped some up on a recent trip to Ikea, and so far I’m impressed.
Here’s my laptop screen with and without the backlight. I stuck the backlight to the edge of the desk behind the laptop:
And here’s my monitor with the backlight:
And here’s the LED strips stuck on the back of the monitor:
The LEDs are low power. They don’t get warm, and come with fairly long cables. You can either run them serially or have them on individual spurs from the main plug.
So far I’m preferring them to normal halogen or tungsten desk lights. The light is whiter, which is somehow more pleasant. And my eyes definitely feel happier when I’m working at night.
This week has been a mini detox, with copious juices. Here’s the recipes for a couple of them, from Sainsbury’s magazine. These make enough for one glass. Throw the ingredients in a juicer, or apparently you can put them in a liquidiser with 300ml water and then strain well.
Apple and Carrot Detox SpeederAlternatively you can just chuck a handful of whatever sounds good into the juicer. This morning’s was an arbitrary amount of carrots and apple, with a chunk of ginger for extra kick.
Enjoy!
And now a slightly longer than usual rant: The problem with the o2 network disclosing mobile browsers’ phone numbers that I repeated 2 days ago (and it appeared on our co-op website) snowballed yesterday to the point that it was on the short bulletins from ITN, BBC, IRN… and probably many more. And then o2 fixed it. Good!
The reply claims that it’s only since 10th January which is rather at odds with other claims that it has been happening since at least March 2010 in some situations.
I started buying from o2 in December. I was using Three, but their network where I stay in Norfolk isn’t reliable and you can’t just buy a device in a shop for The Phone Co-op. The dongle from o2 is a recent Huawei USB device that just worked in debian and was fairly easy for me to get working in Ubuntu. There’s space in it for a memory card, so maybe I could boot from it… but that’s an idea for later.
The o2 deal is OK but not great, and the included wifi is nowhere near as good as it looked: when it says it includes “BT Openzone” that doesn’t include any of the “BT Openzone-H” hotspots that are much more common. You’re only allowed to register one device for wifi, so no using your phone, tablet and laptop at different times!
I can’t believe it’s legal to advertise that as “unlimited wifi”, but o2 is still a better offer than access to “BT Openzone-H” hotspots at £39/month (yes, that’s the price for wifi-only…).
Ultimately, I think the problem is that there’s a rubbish choice of mobile (wifi or 3G) internet access providers in the UK. It’s a completely and utterly failed market, so you need to use Virtual Private Networks and similar tricks to protect yourself from the dysfunctional networks. My VPN meant my mobile number was safe: how about yours?
As luck would have it, I had already proposed a resolution about protecting customer privacy to The Phone Co-op (affiliate link) for our AGM on Saturday 4 February (if you’re a member, let me know). We were trying to find a compromise wording and I don’t think this little o2 scandal has hurt my proposal at all!
At least the phone co-op’s mobile service is based on Orange’s network, which wasn’t affected. How does your network perform? There’s an Internet Service Provider evilness test which might tell you.
I’m on a train tomorrow, and thought it was a good opportunity to use my phone as a wifi hotspot.
This works flawlessly with the Samsung Wave 3 (though the GUI to turn it on is a bit suboptimal). It turns out it’s not so simple with the iPhone – because the network operators appear to have “upgraded” the experience for iPhone users.
On an iPhone you turn on Personal Hotspot by going to Settings, then General, then Network. You get a straightforward-looking button “Set Up Personal Hotspot”, like so:
Unfortunately, when I click on it, I get a prompt to visit my network operator’s website, at http://www.o2.co.uk/iphonehelp/modem:
Fortunately there’s a button “Go to Website”. Unfortunately, when you click on it, this is what you get:
That small text says “File not found“.
I opened the website in my desktop browser, and it redirects to http://service.o2.co.uk/IQ/SRVS/CGI-BIN/WEBCGI.EXE?New,Kb=Companion,question=ref(User):str(Mobile),T=guruCase,VARSET_COBJID=11820,Problem=Obj(11820) (that’s a nice URL). The page is basically a collection of FAQs, but rather surprisingly the first FAQ is not “How do I set up tethering?”:
While I was on that page, I got prompted to use o2′s online support chat, which seemed like a shortcut to solve the problem. I was connected to Guru Hayley, and encouraged to ask her anything. Turns out anything does not mean “how do I set up tethering?”:
“Our system isn’t working” is the new “my dog ate my homework”.
Ok, so reading through the FAQs a bit more it looks like I need an “Internet Tethering bolt-on”. According to the “My tariff & Bolt Ons” page on o2′s website, I already have “iPhone Web Bolt On (Unlimited data access in the UK on your iPhone)” and “Unlimited Wifi for iPhone SIMO (Unlimited Wi-Fi access on your iPhone at over 7,500 Wi-Fi hotspots from The Cloud or BT Openzone in the UK)“. Leaving aside whether it should be “Wifi” or “Wi-Fi” (doesn’t matter but at least be consistent), neither of these sound like “iPhone Internet Tethering”, so let’s have a look at the other bolt ons I can add to my account:
None of those sound like “iPhone Internet Tethering” either.
So if I want internet tethering on my iPhone it looks like I need to email o2 and wait 24 hours, or call them up at 5p a minute (probably to be told to call back when their system is working).
Or I could just stick my SIM back in the Samsung Wave 3 when I need tethering, and skip the “Bolt-On”. Which option seems easier, cheaper, and more likely to work in the time available – and less offensive to a customer who’s just wasted 30 minutes on what should be a perfectly simple task?
Perhaps I’ll just read a book on the train tomorrow…
It feels like my Amazon order has been in transit for ages. It was dispatched over 40 years ago and I’m still waiting …
For my day job I build storage systems. A lot of what I do at present involves caring a lot about how different OSes deal with things like new LUNs being presented from a SCSI target, or errors along a subset of the available paths to a device.
It will come as no surprise to you to discover that they all suck (for values of all equal to Linux, Solaris, Windows and VMWare). New LUNs are particularly annoying. I'm in the situation that creation and removal of a LUN is exceptionally easy.
Hmmm. Maybe I need to back up here a bit first. SCSI has the concept of a target (think, device, eg hard drive). Each target can present multiple logical units. Each of these is assigned a number - a Logical Unit Number. Most devices (a hard drive, or a CDROM drive) will present a single LUN. A storage array will tend to present multiple LUNs; one for each volume that is exported to the host. At the host level each LUN really just looks like a separate device (for Linux /dev/sda and /dev/sdb may well be separate LUNs on the same array, rather than 2 separate arrays/hard drives, for example. At the block device level you don't care about the difference usually).
Anyway. For various reasons I end up adding and removing LUNs quite often. And there are ways for the array to indicate that this has happened to the host (the UNIT ATTENTION/REPORT LUNS DATA CHANGED check condition seems to be favoured these days, as a complete Fibre Channel LIP can be disruptive). What I'd like to happen in that case is the host to pick up the check condition and drop and/or add the devices that have changed. Instead everything wants a manual rescan. rescan-scsi-bus tends to be simplest for Linux. Windows wants a manual refresh in Disk Administrator. VMWare a "Rescan HBAs" from vSphere. Solaris a "devfsadm -C" and possibly a "cfgadm -al" first. And all of these can be temperamental about picking up the changes.
We've done a lot about hotplug for the desktop user experience, without doing the same level for the server experience. I appreciate that there are situations that you don't want your server to reconfigure things without being told to, but the current situation can be detrimental (for example Linux multipathing will hold a device open even after it's disappeared and is returning an "INVALID LUN" response; it would be much better if it could cleanly close that device and wait for it to return). Storage is capable of being much more than just a single block device these days, and it's a shame that nothing seems to deal fully with that fact.
(Yes, yes, I should write and submit patches, but I appreciate that there's not always a simple answer, nor necessarily an answer that works for all situations automatically. Plus, y'know, not enough hours in the day and I hope you all appreciate I've taken a break from watching BSG to write this.)
I just lost a hard disk. No big deal.
My somewhat complicated home media setup is this: I have a Samsung TV plugged in to a first generation AppleTV. The AppleTV is connected to the network via wired ethernet to an Apple AirPort Extreme base station / router. Hanging off the USB port of the Airport Extreme is several terabytes of storage courtesy of a Drobo containing a bunch of cheap(ish) OEM hard drives.
The AppleTV has been upgraded with a Broadcom Crystal HD chip in the internal PC Card slot – which normally has a wifi card in it. I figured it was worth sacrificing wifi, since with the size of HD video you really want to be using a fast wired network anyway. In order to make use of the HD chip, I have XBMC installed on the AppleTV.
So I sat down this evening to watch a film over dinner. I switched the TV over to the AppleTV, fired up XBMC, and navigated to the files on my Drobo – except they weren’t there. For some reason, the AppleTV wasn’t seeing the Drobo. I pulled the face plate off the Drobo to find out what was going on, and noticed it was in standby mode – unmounted by the Airport Extreme. No wonder the AppleTV couldn’t see it!
I restarted the Airport Extreme, but when it came back up and woke up the Drobo, I had the ominous flashing red light beside one of the drives. The light that means “drive failure”.
At this point in the story, there would normally be panic at the thought of lost data. What actually happened was a swift trip to Amazon, a quick calculation of cost per megabyte followed by ordering a new OEM drive to replace the failed one. It should be here on Monday, but meanwhile I can still access all my data.
It’s not always smooth sailing – see Drobo good, bad, ugly and Drobo updates. But when talking to a friend the other day who was still nursing individual external USB drives, I realised that on the whole the Drobo has been well-behaved and fits into the “it just works” category of technology that is so rare these days. It’s been online for almost two and a half years, and I’ve only had to mess with it on three occasions until now: installation, adding capacity, and replacing the first blown disk.
So I’d thoroughly recommend a Drobo instead of an external USB drive, and for a home media centre solution it works really well with the AppleTV (and associated hacks) as well.
Borrowing from Alex King’s Simple SQL Queries for Blog Stats, here’s some stats on this blog.
Meta meta…
Here’s some useful queries for getting blog stats from a WordPress database.
Get first and last post:
select min(post_date) as start, max(post_date) as end from wp_posts; +---------------------+---------------------+ | start | end | +---------------------+---------------------+ | 2003-05-31 10:35:11 | 2012-01-13 18:14:58 | +---------------------+---------------------+Get number of posts:
select count(*) from `wp_posts` WHERE post_status='publish'; +----------+ | count(*) | +----------+ | 1572 | +----------+Get number of posts per year:
select YEAR(post_date), count(*) from `wp_posts` WHERE post_status='publish' GROUP BY YEAR(post_date); +-----------------+----------+ | YEAR(post_date) | count(*) | +-----------------+----------+ | 2003 | 154 | | 2004 | 329 | | 2005 | 501 | | 2006 | 225 | | 2007 | 176 | | 2008 | 75 | | 2009 | 17 | | 2010 | 19 | | 2011 | 70 | | 2012 | 6 | +-----------------+----------+Get average number of posts per year:
drop table if exists average_posts; create temporary table if not exists average_posts select YEAR(post_date) as Year, count(*) as Count from `wp_posts` WHERE post_status='publish' GROUP BY YEAR(post_date); select avg(Count) from average_posts; +------------+ | avg(Count) | +------------+ | 157.2000 | +------------+Get average length of posts (in characters) per year:
SELECT YEAR(post_date), AVG(LENGTH(post_content)) FROM `wp_posts` WHERE post_status='publish' GROUP BY YEAR(post_date); +-----------------+---------------------------+ | YEAR(post_date) | AVG(LENGTH(post_content)) | +-----------------+---------------------------+ | 2003 | 1260.8182 | | 2004 | 1174.0729 | | 2005 | 1062.4770 | | 2006 | 1003.2622 | | 2007 | 1473.9489 | | 2008 | 1862.2267 | | 2009 | 3575.2941 | | 2010 | 3447.3158 | | 2011 | 6024.9000 | | 2012 | 8707.6667 | +-----------------+---------------------------+Get average word count of posts per year:
drop table if exists word_counts; create temporary table if not exists word_counts SELECT `ID`, `post_date`, SUM( LENGTH(`post_content`) - LENGTH(REPLACE(`post_content`, ' ', ''))+1) AS 'Wordcount' FROM `wp_posts` WHERE `post_status`='publish' GROUP BY `ID` ORDER BY `post_date` DESC; SELECT YEAR(post_date), AVG(Wordcount) FROM `word_counts` GROUP BY YEAR(post_date); +-----------------+----------------+ | YEAR(post_date) | AVG(Wordcount) | +-----------------+----------------+ | 2003 | 148.3052 | | 2004 | 147.6809 | | 2005 | 112.4611 | | 2006 | 105.3289 | | 2007 | 161.6875 | | 2008 | 218.9600 | | 2009 | 451.3529 | | 2010 | 450.3158 | | 2011 | 673.8714 | | 2012 | 1017.6667 | +-----------------+----------------+I’ve given my reaction to yesterday’s announcement by the prime minister in my blog on the Co-operatives UK website. If you want to comment and can’t do so there, comments can be left on this article too.
So, at work we have a little single port IP KVM, it is a StarTech SV1107IPEXT - it's not a "bad" bit of kit, if you're completely configured for using it in the way they expect... When you're not, then it throws a NullPointerException when you try to connect with it's Java applet.
This morning (mostly because the monitor and keyboard I had been using for building stuff on my desk has gone missing) I decided I'd try again with the device, it's not on our default office network range, mostly because it might not always be in the office, so I quickly added an ip alias using ip addr add 192.168.0.59/24 dev wlan0 on my laptop to bring up a route to it. Navigated to the page and asked it to fire up the Java applet. Straight off, a NullPointerException happens - hmm. So looked at what was being logged by the JVM - it was trying to run ifconfig (no, really, the java applet ran ifconfig... with no path...) which, on my debian laptop, is not in the default path... so I went and make a quick wrapper in ~/bin for it... right - now it can run that... still a NPE, hmm. So look a little closer, it's looking for the MAC address assigned to the IP that you're coming from... no, really! WTF! So I went and hacked my little ifconfig wrapper to rewrite the address for wlan0 to be what the KVM expected it to be, low and behold, I can now run the java client (hoorah!).
Why the heck are they doing that though - that's just plain insane! On the plus side, I now have a work around, on the minus side, egad that's ugly!
Once again, lawmakers are considering a stupid protectionist measure and this time it’s the US, so it has some effects outside the US too.
Once again, some websites have taken themselves offline and caused great inconvenience to their supporters.
This is really annoying. Protesting about threats to take websites offline by taking websites offline is as stupid as protesting against a ban on kissing by not kissing. It just demonstrates that you can do without your websites/kisses if you must.
I feel it’s much better to use websites to distribute information and call people to action, like this epetition for UK citizens and residents, or by asking your associations and suppliers to oppose these measures and their supporters.
Wikipedia is probably a bit to blame. Although it called its action a blackout, it wasn’t one and there were still many ways to access its information. In fact, if you use NoScript, the banner didn’t even display and there’s only a line on the front page to say anything is happening.
The one that really annoyed me was identi.ca, which even turned off its API so clients just started spewing errors everywhere (I returned to my desk to a stack of retry questions). That stopped some of my websites from distributing a link to the anti-SOPA epetition because they read from my identi.ca stream – how much other anti-SOPA activism was hindered?
I’ve been told that Evan held a vote, but I didn’t see it, so I didn’t vote and I don’t know the turnout or anything. How many people voted for the blackout because they use other sites like twitter more anyway?
Banners: yes; Blackouts: no.
OK - so I read, a couple years back, the first book in the Newsflesh Trilogy by Mira Grant, before getting my Kindle - it was fantastic, and I wanted more, ... so, diligently I waited and then after getting my Kindle, I spotted that the second in the series was available for pre-order (yay!), so noting when it was due out, I made sure that a couple of days before the release of Deadline, I could read Feed again - having already owned it in paperback, I also diligently bought it a second time for the Kindle (knowing that I would be reading something else just before starting the voyage through Feed and then Deadline, and travelling with lots of paperbacks in my bag was just getting annoying...).
In a few months time, the final part of the Newsflesh Trilogy comes out - and I await it with baited breath. I also note, that, currently it is only available for pre-orders in paperback - NOOOOOO! So, with that in mind, can everyone please go to the Amazon page for the paperback and click on the magic link that says you want to read it on the Kindle!
Also, if someone can work out why the novellas are only available in audiobook format, and somehow makes them available in a nice printed format (well, kindle), that would be great!
(One day I'll get round to re-enabling comments on here... one day... yes, one day!)
In advance of FOSDEM 2012, I’m publishing previous years’ notes. Here’s 2011 day two: Sunday.
BareboxReason for attending this talk: to understand more of the technical details behind fast boot of Linux devices, which will be an important factor in the success of mobile linux.
The subtitle of this talk was “Booting Linux Fast and Fancy”, and the speaker focussed first on how to make linux boot quickly and then provided tips for making the boot look good. There were approximately 100 people present for this early morning session.
Why worry about boot? The evolution of phones to include linux means boot user experience becomes more important. Industrial devices don’t look like computers and shouldn’t boot slowly. Automotive devices have fast-boot requirements – they must be answering CAN messages in less than 200ms after power-on.
History of the project:
The project supports a range of CPU architectures – arm (at91, ep93, i.MX, netX, nomadik, omap, s3c24xx), m68k, ppc, sandbox, x86 bios based, etc.
It supports:
Configuration done just by assigning variables e.g. eth0=172.0.0.3.
Booting linux fast:
Example: 336ms from bootloader to init on freescale mx35, 532mhz. On beagleboard this is usually 800ms.
Booting linux fancy:
Fast, but not the 200ms limit for automotive.
BTCS: Boot Time Critical Services (originally inspired by freescale, now implmented with mainline focus).
Idea: set aside some memory, register a poller in barebox, make sure memory is handed over to linux, poller ends up as a normal interupt service routine in linux.Interupt service routine runs during bootloader. compromise – can’t use much infrastructure from isr. possible to run commercial stacks for ECU.
CAN is ready after about < 100ms. Downside: it is a bare metal stack.
Key takeaways: it is possible with attention to detail to create extremely fast booting devices. This would be of significant value in a mobile linux stack.
LinaroReason for attending this talk: Linaro could form an important base for a mobile linux platform.
Approximately 300 people attended this talk. The speaker began by outlining the rationale for Linaro’s creation: ARM-embedded is too hard, and there are 4 key problems:
How is Linaro fixing this? engineering, engineering, engineering!
In the above graph:
They recrutied engineers from all member companies and hiring their own people to work on Linaro.
Linaro engineering : working groups, taking opensource upstream and improving, releasing own branches with new features (will go upstream but maybe not there yet)
landing teams only area with privacy (future products/hardware)
platform engineering: mix all together. important to have reference images prove it works and test/validate work of other groups.
two types of cycle:
10.11 technical highlights
lessons learned
2011 plans: build of linaro-enhanced key distributions on member SoCs
Building a test and validation framework for member SoC hardware.
Qt tales from embedded trenchesApprox 200 attending. Speakers are kde developers – kdepim, plasma, libgcal, gallium,…
kinetic scrolling – as made famous in 2007 by iphone. but prior art discussed in 1982 bill buxton two-handed input in HCI, canola 2007
Qt flickable 2008 “oh my god QML’s so wonderful!” in fact a really really neat way to do things. You can do it in C++ but use QML, it’s easier.
implementations;
Meego UI without libmeegotouch? issues with libmeegotouch – can’t run on symbian (uses GTK), so cheat
pure blood qt runs everywhere – nokia n580, n97, n900.
In advance of FOSDEM 2012, I’m publishing previous years’ notes. Here’s 2011 day one: Saturday.
FOSDEM is the Free and Open Source Software Developers’ European Meeting, an annual free event hosted in Brussels and entirely organised and run by volunteers. Typically around 5-6000 developers attend. The event is run over a weekend, with a networking beer event the Friday beforehand. This year around 1500 people showed up for the beer, according to the estimates of the security staff.
The event comprises a number of keynotes and multiple parallel tracks of volunteer talks. 2011′s main tracks were:
Some thoughts from the event overall:
Some of the talks attended:
Lightning Talk: Is the UK Government backing free software?Two reasons for attending this talk: firstly, it’s a useful barometer for the acceptance level of open source in general and the progress of open source in large organisations. Secondly, I’ve worked with Sirius on rolling out infrastructure, so it’s good to keep tabs on what else they are doing.
There were about 200 people in the auditorium for the lightning talks. This talk started by pointing out that despite many open source policies and statements of support, the government has never implemented open source to any great degree. The last Labour government were very pro-business, typically favouring large multinationals, and so vendor lock-in through proprietary formats prevented any real adoption of open source.
The civil service typically work with and are supplied by large system integrators who historically have not been open source friendly.
The new administration is taking a top-down approach to driving change and wider adoption of open source. Examples of this include an SME Summit at the Treasury on 11th February 2011, and an Open Source supplier forum on 21st February 2011 where all open source suppliers will be present.
In addition, Bristol City Council are conducting research using a large system integrator paired with a small open source company (Sirius), and Cardiff council are running a series of workshops amongst key stakeholders, facilitated by Sirius, to explore options for using open source.
I wanted to get into the Firefox talks next, but the room was full (standing room only, no-one else allowed in for health and safety reasons).
How to be a good downstreamReason for attending this talk: I’ve seen first-hand the very real economic and technical problems with the way large mobile platforms relate to upstream projects, in that code is often forked and patched and rarely contributed back, providing both an economic burden of maintenance and technical difficulties in backporting bug fixes and enhancements. It was hoped that by attending this talk key remediation strategies might be identified.
There were about 50 people in this talk. This talk was given by noted Debian developer Thomas Weber, and was subtitled “How to make both your and upstream’s life easier”. It was a follow-up to last year’s talk “How to be a good upstream”.
Key points that need to be remembered:
Communication
Empathy
Packaging (initially and ongoing)
Example: xdebug 2.0 bug fixed in 2.1 Aug 2009; first stable was june 2010, in Ubuntu 10.04 LTS it’s still not fixed.
Cooperative work
Key takeaways: mobile platforms don’t always do this. They should all consider identifying their upstream projects, identify all their modifications made against upstream, do an audit of their releases against upstream bug trackers, and introduce their maintainers to all the upstream projects.
Swimming upstreamThere were about 75 people in this talk. This talk started with a quick survey of the audience: the audience were geographically well-distributed, some had travelled 1000+ miles to attend. 80% of the audience don’t speak english as their first language, and no-one in room has been using linux for less than 2 years – most have been using it for more than 10 years.
Jared asked “does innovation happen in a conference room?”, and then proceeded with an analogy of why salmon swim upstream and why contributors should push their code upstream. He used another analogy of how multiple streams form a river to describe how “code starts out as 1 or 2 people working together then it forms a larger community”.
What is a community? It is the relationship of people with shared goals and common interests. With a software community: what is the difference between people working on same piece of software and a software community? A software community is a table – where people with different backgrounds, experiences, goals can come together and have healthy discussions. Sometimes they talk more about the process of the table itself!
What is a distribution? It is a bundling of software. When Fedora started, they didn’t want to push upstream – but this approach didn’t work as it became impossible to maintain the platform. Fedora now push upstream aggressively to carry as few custom patches as possible.
Upstream -> Fedora -> Redhat Enterprise Linux
“people take pride in working with open source, contributing to something bigger than themselves”
Key takeaways: Fedora, a relatively large and well-supported open source linux distribution, were unable to handle the burden of maintaining the platform without pushing upstream. Mobile platforms should learn from this experience and understand that it is not possible for them alone to support a forked platform.
Downstream Packaging collaborationThis talk suffered from poor audio, starting too early whilst people were still arriving, and people were talking over the introduction.
The speaker started off with the premise that packaging an open source project is easy, but modifying it (patching) to fit the distribution’s requirements is hard due to the maintenance burden incurred by patches.
The obvious answer is to get the patches upstream as soon as possible, but this is not always possible as some open source projects have missing maintainers or are unresponsive to distribution contributions.
A workaround is for distributions to work together to form a new upstream, but maintaining a new upstream is hard.
One suggestion was to create canonical-package-name-maintainers@distros.freedesktop.org and then subscribe the email address to per distribution package VCS commit mails.
Question: how many examples of upstream abandonment? Several key ones: X11R3, X11R4, lesstif, nedit. Most niche packages, but still with a significant number of users.
The second part of the talk focussed on patch sharing:
Advantages: differences are more obvious, one patch can be used for multiple versions.
Whenever someone creates a new patch:
cf. openembedded:
patch conventions – easily parseable metadata:
Start with debian patch policy. Other key links:
Bdale Garbee summed it up best: “if you maintain a piece of software for a particular distribution and you don’t know the maintainers from other distributions, you are failing”.
Key takeaways for mobile linux platforms: maybe they should be a patch farm against an existing distribution, rather than a platform in their own right. They could sponsor work toward a common patch store, by helping developers get together to talk about it and plan it. This would help them by mitigating their maintenance burden.
E17Samsung have a high level of investment in Enlightenment technologies, having hired the principle developer. This talk is therefore critical to understanding the core graphics in Samsung’s Linux platform. There were around 100 people in the room for this talk.
e16 was released in 1997, and e17 has been in development for over a decade. Embedded devices are the main target and e17 has been rewritten from scratch based on e16 experience.
Enlightenment is a lightweight desktop environment based around EFL – Enlightenment Foundation Libraries. Enlightenment takes care of the current layout. All features or gadgets on the desktop are a module – so you can unload them. An e17 desktop consists of a set of modules loaded – a profile. A default basic profile is defined for different use cases. e17 is totally modular so you can load only what you want to use.
e17 supports themes. With edje everything can be themed. There’s only one file to download for the whole theme.
e17 has full compositing support.
e17 is opengl and opengl-es compliant. If the platform has bad graphics drivers it can switch to software engine.
e17 supports textures from pixmaps and indirect rendering.
e17 works on desktop and embedded.
The gui: there is a basic toolkit, there is no complete toolkit, just basic widgets (button, list, scroller…) and some tools to make life easier for coders (for example dbus bridge). You use ecore and evas to create windows. You use edje to create a new widget.
The future: Release. Maintain compatibility.
In e18 the plan is to integrate a complete toolkit for widgets.
Questions from the audience:
The Enlightenment stand at FOSDEM also had e17 running on a range of devices including what looked like an HTC phone and a Samsung Galaxy Tab.
Key takeaways: there is a fair amount of developer interest in e17, but despite a very long development cycle it still seems relatively incomplete. However, the minimal footprint, embedded target and eye candy focus might provide a more consistent user experience closer to iPhone than it is possible to provide using GTK or Android graphics.
Open Sourcing JavaThis talk was given by former Sun Chief Open Source Officer Simon Phipps. It was very well attended with approximately 200 people in the room and a long queue of people unable to get in.
Governance
Sun nearly broke opensolaris with heavy governance. They learnt from that lesson and with OpenJDK they took action first, open sourcing the platform and then wrote the governance after the fact. Another key lesson is that setting up an open source foundation does not fix anything – it is important to make the open source platform work first.
All community members matter
Real relationships help and heal
training reptiles takes time (corporations are reptiles)
Open source isn’t about licenses or code – it’s about a certain set of liberties. Software freedom has to be the guiding principle in what you do.
Software Business Value is the first derivative of Software Freedom
Pragmatic compromise to achieve larger goal can be acceptable
Licenses are constitutions for communities
The fact that java wasn’t open sourced in 2003 and packaged in a usable fashion on linux meant it lost a huge amount of momentum.
Why was apache license not chosen? BSD/Apache/GPL were all considered. Apache patent grants and lack of contribute-back would have removed commercial incentives to collaborate. BSD/MIT don’t convey patent grants in any concrete way, so could have been an option.
Bdale commented that it’s a balancing act that GPL represents between conveying rights and ensuring everoyone plays openly.
The most important thing Sun ever did to get Java adopted was not licensing under GPL but sending Tom to debconf to make debian packages. This made the JDK a second class citizen and not a third class citizen.
Key takeaways: companies must work together across commercial boundaries. Foundations / holding organisations should lighten up on governance and focus on software freedom and deriving value from building the platform. Making the platform usable is critical to widespread adoption.
Simon’s slides: Lessons I learned liberating Java
The Tizen source and SDK were unleashed yesterday, and I’ve just had a first glance. The documentation is a bit all over the place, so here’s some notes on getting up and running. For more information on what’s going on with Tizen, read my blog post on Tizen and on platform community.
~
The platform build page at https://source.tizen.org/platform_sbs_install.html states Tizen requires Ubuntu 10.04 or higher. The SDK page at https://developer.tizen.org/sdk.html caps Ubuntu at version 11.04, as does https://developer.tizen.org/sdk_install.html. In reality, the SDK installed on 11.10 without any problems.
Installing the SDK
The SDK page says “To install the SDK you will need to have root privileges” but does not use sudo to run the installer. You will be prompted for the root password during the install.
The following steps worked for me:
apt-get install git
(Un)Installation failed
Cannot connect to server. Please check your network status or use command line option ‘-proxy <address>:<port>’ for using proxy.
It’s recommended to uninstall all and install again.
The install is wanting to talk to http://112.106.1.254/tizensdkpackages/InstallManager/Linux/ and http://112.106.1.254/tizensdkpackages/current/linux-packages/ but those both work fine.
The second time around it worked (and good grief, the tizen download server is fast … or not very busy. I got 1.52MB/s).
Some random notes about the SDK:
Installing Scratchbox Build System (SBS)
This works pretty much as advertised – though note that the first step 1 (installing package dependencies) conflates two separate lines, and should read:
sudo apt-get updatefollowed by:
sudo apt-get install dpkg-dev pkg-config uuid-dev cpp gcc gcc-multilib libarchive-dev liblzo2-dev zlib1g-dev libxml2-dev automake autoconf realpathOr you could just do:
sudo apt-get update && sudo apt-get install dpkg-dev pkg-config uuid-dev cpp gcc gcc-multilib libarchive-dev liblzo2-dev zlib1g-dev libxml2-dev automake autoconf realpathThere’s IP addresses hard-coded all over the place: in the SDK install, in the SBS documentation, in the SBS install script, and in the SBS utilities themselves, for example:
# The server with all required APT repositories _APT_SERVER="${SBS_APT_SERVER:-112.106.1.254}"This is extremely brittle, and I expect there to be breakages. It’s pretty poor practice and I would have preferred that the ‘source.tizen.org’ CNAME was used more consistently. That IP belongs to Samsung, by the way.
Where there is a domain name configured, it’s www.tizendev.org, which does not resolve to a public machine:
./install-sbs SBS install script git version: 08ecba2 last commit: Date: Wed Jan 11 16:39:11 2012 +0900 For help see: http://www.tizendev.orgNote that you’ll end up with SBS stuff in ${HOME}/sbs-install and ${HOME}/sbs, which may or may not annoy you.
As per the instructions, ~/sbs-install/bin/sbs -A i386 -c will give you a working i386 Scratchbox target. It’s great to see at the end of the first run:
sbs: All done. Build environment was successfully setup at /home/savs/sbs
Progress!
~
On the whole, kudos to Samsung (and Intel, and Tizen) for getting the code out there. And especially for having a reproducible build system with clear instructions. This is a huge leap forward for Tizen, and a critical first step.
Although I’ve been a regular at FOSDEM for a few years now, I’ve been rather poor in ensuring my notes got onto this blog. In advance of FOSDEM 2012, I’m publishing previous years’ notes. Here’s 2010.
The Free and Open Source Developers’ European Meeting (FOSDEM) is an annual free and non-commercial event organized by the community, for the community. It’s a two day event organized by volunteers to promote the widespread use of Free and Open Source software and to provide Free and Open Source developers a place to meet. The event takes place in Brussels and has been running since 2000. In recent years attendance has been in the region of 4000, and in 2010 the attendance was closer to 6000. The event is hosted by the Université Libre de Bruxelles.
During 2010′s event there were 294 talks organized across 10 tracks (including Keynotes, Security, Scalability, Monitoring, Database, Javascript) and 22 subject-specific rooms (including Distributions, Embedded, Mozilla, GNOME, Openmoko, X.org).
I presented two LiMo talks: “LiMo Platform and Mobile Linux” and “Mobile distributions and upstream challenges“. I also attended a good number of talks, which – due to my employer at the time – mostly had a strong mobile and embedded focus. Some of the highlights included:
Embedded software development best practices (Adrien Ampelas)Adrien gave a complete end-to-end guide on how to do embedded platform development. He covered everything from source control, to build mechanisms and quality, to code review and distribution. The talk identified many issues that open mobile platforms do not address.
One slide in particular that appealed to me on build processes applies equally well to any software development environment: how long does it take a developer to get up and running?
FreeSmartphone.org and D-Bus (Michael Lauer, OpenMoko)
OpenMoko was hardware and software combined in a single device. The device is now dead, the software lives on. FreeSmartPhone.org (FSO) is the community software platform that has developed out of the ashes of OpenMoko.
What is FSO intended to be? A collaboration platform, a bottom-up stack, and a reference implementation. The heavy focus is on working software in real hardware with constant innovation/improvement on top. The goal is to close the middleware gap. ie. “middleware for mobile phones”. It is deliberately not positioned as a standards effort like LiMo Foundation/LiPs.
There’s heavy reuse of pre-existing components both within community source and old OpenMoko (eg. phone stack). D-Bus facilitates good architecture because it permits separation of business logic from UI. Lightweight, language independent UI independent, P2P and P2M IPC process communication enabler. D-Bus architecture involves a system bus and per user session bus. Methods and signals handle P2P and P2M. Get/Set for fast operations, list/retrieve for slow operations.
One D-Bus interface can expose multiple objects.
Using it everything you can do programmatically with D-Bus can be done interactively which is very cool for demos.
Python D-Bus support: “One small step for programming, one giant leap for middleware”. FSO has control logic all written in Python for faster development time. BUT Python is slow! Also, an interesting comment: people are afraid of using scripting languages in embedded devices. FSO2 has been entirely rewritten in Vala – a high level language that can be compiled to generate C. FSO2 has libmsmcomm (Qualcomm MSM) and libgsm0710 modem (from OpenMoko). The OpenMoko team are looking in 2010 to port FSO2 to OpenMoko Neo FreeRunner, Palm Pre, and HTC Dream.
FSO2 initiative is very interesting – they’re focussing on how to build a mobile Linux platform not as a bunch of disconnected static APIs but as a living system of methods and signals mediated via IPC. The “APIs” are entirely exposed through D-Bus and developers interact with system components/services through D-Bus.
SHR (Thomas Zimmerman)Stable Hybrid Release (SHR) is the Reference UI for FSO1/2. It’s gradually going to phase over to FSO2 (Cornucopia) in 2010. You build an SHR-based image with a single makefile. There are a set of user side daemons:
It’s based on X.Org Xserver 1.7.4, E17 Illume (Enlightenment).
An FSO-SHR Conference was planned for 2010.
hackable:1 (David Wagner)hackable:1 is a Debian distribution for ‘hackable’ devices. It works by maintaining patchsets and building debian packages by downloading vanilla upstream, applying patches, and compiling for specified target. The focus is on providing a stable and easy to use development environment. It provides a much cleaner way of maintaining downstream changes. It provides a basic platform including simple UI. It’s supported by a Parisian openmoko reseller and ISP.
Tracker and SPARQL (Rob Taylor, CodeThink)Tracker is an RDF semantic store. ie. a “nosql” approach to data storage – even though today it has an sqlite backend. Metadata is associated with a file through tags which can then be queried to present data in interesting ways. Rob demoed a clutter-based applet that was sorting/sifting photos and twitter feeds. It was written in 200 lines of js and backed by a tracker database being queried using SPARQL. See labs.codethink.co.uk.
~
Previously: FOSDEM ’08, FOSDEM 2010, FOSDEM 2011.