New Thoughts on the UK Government Open Source Action Plan

Remember when, back in late February, the Cabinet Office released their “Open Source, Open Standards and Re–Use: Government Action Plan”? Myself and many other FOSS commentators were obviously heartily encouraged and have talked about it and examined the policy in some detail.

I was going back over the document recently and something quite important struck me that I had missed completely the first time round; there is a distinct lack of consideration for one particular group of “stakeholders”. A particular group of very important stakeholders that should be one of the key beneficiaries of the whole policy.

Can you guess who I mean yet?

You.

Yes, the tax paying public. The group that actually consumes the services and output of Government. The group that pays the bills. The group that needs and should be guaranteed free and open access to public information; especially now after the recent ‘expenses revelations’.

Yet, reviewing the policy as a whole it seems remarkably introspective. Only examining how FOSS should or could be acquired and used within Government for Government. And it really only discusses the expectations and implications of increased use of FOSS for itself alone. It is as if the Government are acting only for themselves. <sarcasm>Surely not?</sarcasm>.

The key objectives will be to:

  • ensure that the Government adopts open standards and uses these to communicate with the citizens and businesses that have adopted open source solutions
  • ensure that open source solutions are considered properly and, where they deliver best value for money (taking into account other advantages, such as re–use and flexibility) are selected for Government business solutions.
  • strengthen the skills, experience and capabilities within Government and in its suppliers to use open source to greatest advantage.
  • embed an ‘open source’ culture of sharing, re–use and collaborative development across Government and its suppliers, building on the re–use policies and processes already agreed within the CIO Council, and in doing so seek to stimulate innovation, reduce cost and risk, and improve speed to market.
  • ensure that there are no procedural barriers to the adoption of open source products within government, paying particular regard to the different business models and supply chain relationships involved.
  • ensure that systems integrators and proprietary software suppliers demonstrate the same flexibility and ability to re–use their solutions and products as is inherent in open source.

Even the first objective above targets only those consumers that have already adopted FOSS solutions themselves. There is very little (and I’m being generous) mention or apparent consideration of the public citizen and the benefits that adopting Open Standards/Open Source will bring in terms of ability to access information without needing to acquire proprietary software to do so. There should, IMHO, be another “spoke” to the Government’s policy that provides for a basic level of education of these benefits to the public in general and the public sector employee too.

In my company we tend to meet and deal with individuals who are quite well-informed and will have (at least) a basic understanding of FOSS. They have probably heard of OpenOffice.org for example. But if you were to have that kind of conversation outside of the IT sector you will often be met with blank stares or gasps of “But how can it be free?” or “What’s the catch?”. It is these people who need to be contacted and helped so they may make an informed choice about the software they use on their home computers. Today many do not know they even have a choice (try asking you neighbours if they have heard of Ubuntu). It is – the way I see it – the responsibility of our Government to provide some base-level of information; the proprietary software vendors won’t pay to advertise FOSS and, to be totally honest, I don’t really see why they should be forced to in a free market.

You might think to suggest that is up to companies like ours to do this promotion. And we do to the best of our ability and as finances will allow. But, like many others, we are not a large company and do not have hundreds of thousands of pounds or more to spend on that kind of education. In fact, I was contacted last week by someone working “on behalf” of the Cabinet Office and a publication that is destined to go to all Local Government departments around the UK to help spread the word about the new policy and action plan. We were asked initially what we did and then if we would be interested in being included in this government sponsored and distributed “book”. It sounded very interesting. Until that was, they said it was going to cost us £4000 to have our company details in this register for just 6 months!

That hardly sounds like an “inclusive” and helpful exercise does it? Who are they going to get paying that kind of money? Just how much does this “book” actually cost to produce? And how many copies will be printed? And why are they still using books and paper anyway? It’s contents will almost certainly be out-of-date before it even gets distributed. Sheesh.

There is still, clearly, a very long way to go before our Government really starts to “get it”…

If John Suffolk or any other Government (or opposition) policy makers would like to discuss these issues further and hear how we think we could help to get the “message” out in a more inclusive, effective and less expensive way, please get in touch with us via our company web site. I have tagged this article with the requisite #ukgovOSS so I am hopeful that it will be picked up.

The Open Sourcerer Gets A New Theme

I’ve been meaning to do this for some time now. It is time for a small face-lift.

I spend quite a bit of my time doing work for clients on Joomla! including building clean templates from a graphic designer’s images. But I haven’t needed to build a template (theme) for WordPress before which felt like I’d been missing out on or something.

So, here is my first – from scratch – WordPress theme. I’ve called it “Open Sourcerer”. I hope you like it and it works in your browser; please do tell me if it doesn’t although any IE6 users will have to put up with a fixed width layout because I really can’t be arsed to hack around that oh-so-crappy browser when I’m not being paid. Another great “feature” of IE 6 & 7 from my tests is that apparently Microshit are unable to make the text cursor (I-beam) adapt to the environment it finds itself in, so consequently it is very hard to see it against this dark brown background colour. Honestly, is it really so bloody hard to get right? Firefox seems to manage it fine, as does Midori, a “lightweight” Webkit based browser. So if you are reading this with IE and wonder where your cursor has gone, go and get a proper browser for pete’s sake. Anyway, enough of trying to pander to bad commercial software.

This theme is a flexible-width layout from 800-1200px wide which should be fine for most users. The sidebar with the widgets is fixed at 215px currently. If there are any WordPress gurus out there I’d appreciate any feedback on what’s missing or important from this theme. Comparing “Open Sourcerer” to the Default theme there are quite a few other php files in there which I saw no need for. Perhaps overriding the defaults is only necessary if you have a specific kind of layout?

After reading a bit and getting nowhere regarding how to create a WordPress theme from scratch, I came across this gem of a how-to. It’s concise, clear, straightforward and simple. That suited me fine and got me started; thank you Sam Parkinson for sharing your knowledge with us.

Ubuntu Desktop with the Dust ThemeI really like dark backgrounds for blogs. The inspiration for this one started by stumbling across this Dark Smoke theme quite by accident and then thinking about the colours of the “New Wave” and “Dust” themes for Gnome that are supplied in Ubuntu 9.04 (Jaunty Jackalope). Here is my desktop using the Dust theme (yes I know I shouldn’t have all those files lying around!).

So, what you see here is a fairly simple 2 column theme, that is flexible in width between 800 and 1200px. The lovely dark brown [almost black] background colour is the same as used in the Dark Smoke theme mentioned above. The other browns are simply lighter shades of the same I achieved in Gcolor2 by just shifting the brightness value. The red is The Open Learning Centre‘s logo colour (#D40000) and the main text colour is taken straight from the Gnome windows and panels in a default Ubuntu desktop using the Dust theme. As for typefaces, if you have the free and open Liberation fonts installed, which I strongly recommend, that will be the font-type rendered. Alternatives are (in order) Arial, Helvetica, sans-serif;

The graphic at the top is a section cut from one of the fantastic Hubble telescope images that are freely available. This one in fact.

One aspect of template creation and maintenance I am very keen on is the separation of stylesheets by function. In the main style.css file in my theme, you won’t find much actual styling other than some global resets. What you will see however is this:


/* Make it easy to alter stuff... */
@import url("css/layout.css");
@import url("css/header.css");
@import url("css/menu.css");
@import url("css/content.css");
@import url("css/sidebar.css");
@import url("css/footer.css");
@import url("css/wordpress.css");
@import url("css/tweeks.css");

Hopefully the names of the stylesheets are enough to identify what styling they contain. To my mind this makes it so much easier to navigate when you want to make a change as opposed to trawling through one very long and usually randomly ordered stylesheet.

You can download the theme from here and can modify, hack and/or edit as you wish. It is released under the GPLv3 License.

Update: I made a few small changes to the theme in the vain hope that it may be acceptable for the WordPress.org Theme Directory. Thanks Kirrus for making the suggestion. It was a good idea and made me test my theme more thoroughly too!

Update 2: It worked. This theme has been accepted and is now being hosted on the Theme Directory. I wrote a short piece about that here.

How to remove Mono from Ubuntu 9.04 Jaunty Jackalope [Updated]

SABDFL groks Mono

It’s that time again 😉

Fortunately, Mono is still quite trivial to remove and has not, apparently, increased its infiltration of the Ubuntu/Gnome code base as one might have been led to believe if you’d read this on the 1st April:

“Mark Shuttleworth, the Benevolent Dictator for Life of the popular Ubuntu Linux distro, has announced his plans to rewrite all of Gnome, X11 and the Linux kernel using the Mono platform…

Ubuntu is Linux for human beings, and, believe it or not, Microsoft employees are human beings too. We think we need to work closer with Microsoft to ensure heterogenous data silo paradigm middleware enhancements can continue to grow. Oh, and they gave me this nice T-shirt.”

As was the case with 8.10 Intrepid Ibex, there are just two applications in the default Jaunty desktop install which depend on Mono: F-Spot and Tomboy.

As an alternative to F-Spot, I happily use the Gnome viewer gThumb for managing the import and deletion of images from our digital cameras. I actually think it is better for a simple reason. It allows me to copy the images off my camera and delete them from the camera at the same time. The last time I tried F-Spot (admittedly quite a while ago now) I could never find a setting to do this.

And for note taking I have been happily using notecase. Although I note [pun intended] that the developer has stopped work on the free version himself the code is available under a BSD license so if anyone wants to pick it up and run with it they can. Anyway – notecase works fine for me and is still in the repos.

There are many other note taking type applications too. Here is what looks to be quite a comprehensive (albeit old) list of them: http://linuxappfinder.com/utilities/notes

But this is just GREAT!

Gnote: Tomboy minus Mono
Whilst I was preparing this article, I came across this on April 1st too. I actually did think it was a joke.

However it seems not; a bored and unemployed (ex Novell/Suse) developer, Hubert Figuière, is porting [has ported] Tomboy to C++ and calls it Gnote.

You can now use a virtually identical application to Tomboy without Mono! (This is still an early development so YMMV).

There is a PPA for Ubuntu here very kindly organised by Vadim Peretokin. I installed it on my intrepid desktop just to see it and it looks exactly the same as Tomboy!

Even better, as it isn’t built on top of Mono, it has fairly meagre requirements too:

sudo apt-get install gnote
[sudo] password for alord:
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following NEW packages will be installed
gnote libboost-filesystem1.34.1 libboost-regex1.34.1 libxml++2.6-2
0 upgraded, 4 newly installed, 0 to remove and 0 not upgraded.
1 not fully installed or removed.
Need to get 1130kB of archives.
After this operation, 3400kB of additional disk space will be used.
Do you want to continue [Y/n]? Y

3.4MB vs. 54.0MB. That’s a decent comparison I think.

OK. The moment you’ve all been waiting for…

To remove that patent-trap-masquerading-as-free-software from your Shiny New Ubuntu Jaunty system simply type:

sudo apt-get purge libmono0 mono-common libgdiplus

[UPDATE]
Thanks to a keen eyed commenter, Lupine, we note that there is another package that lurks hidden and must be explicitly removed. I have added libgdiplus to this command since first publishing. To remove it individually just enter sudo apt-get purge libgdiplus. Thanks Lupine.
[/UPDATE]

Then watch what happens next…


The following packages will be REMOVED
f-spot* libart2.24-cil* libflickrnet2.1.5-cil* libgconf2.24-cil* libglade2.0-cil* libglib2.0-cil* libgmime2.2a-cil* libgnome-keyring1.0-cil* libgnome-vfs2.24-cil* libgnome2.24-cil* libgnomepanel2.24-cil* libgtk2.0-cil* libmono-addins-gui0.2-cil* libmono-addins0.2-cil* libmono-cairo2.0-cil* libmono-corlib2.0-cil* libmono-data-tds2.0-cil* libmono-data2.0-cil* libmono-getoptions2.0-cil* libmono-i18n2.0-cil* libmono-posix2.0-cil* libmono-security2.0-cil* libmono-sharpzip2.84-cil* libmono-sqlite2.0-cil* libmono-system-data2.0-cil* libmono-system-web2.0-cil* libmono-system2.0-cil* libmono0* libmono2.0-cil* libndesk-dbus-glib1.0-cil* libndesk-dbus1.0-cil* mono-2.0-gac* mono-2.0-runtime* mono-common* mono-gac* mono-jit* mono-runtime* tomboy*
0 upgraded, 0 newly installed, 38 to remove.
After this operation, 54.0MB disk space will be freed.
Do you want to continue [Y/n]?

Oh yes please…

To wrap up this post, we’ve been using Jaunty on various devices for some time now. It’s been really stable, boots very fast and is probably the best desktop operating system you can get anywhere and for any price right now. Thanks to Canonical and the rest of the amazing FOSS Community for making Ubuntu and this release happen.

Our Libertus Server Appliances, with the Mono-free Jaunty 9.04 server edition, are available from today.

Book Review: Asterisk AGI Programming with Packt

[Please Note: If you follow the book links from this site to Packt’s and decide to buy *any* book from their site, we will get a small commission that we’ll use towards the upkeep of our servers etc.]

Asterisk Gateway Interface ProgrammingAs you may have read previously, I was approached by Packt Publishing to see if I would like to review their new book on AGI Programming by Nir Simionovich. Time has conspired against me to actually use it for a real project so instead I resorted to choosing it as my bedtime reading for a few days.

I’ve now read the book and first off I’d like to thank Packt for asking me. I have enjoyed it far more than I thought I would. As for how to review it, I thought I’d give my overall impression and then just go through it chapter by chapter.

It isn’t a long book – about 190 pages – which to my mind is no bad thing. It managed to concentrate on the subject and had little in the way of superfluous text and language (Apart from chapter 1 that is). The author knows his subject well and writes in a fairly informal and easy-to-read style which I personally quite liked. The meat of the book concentrates on – as you would probably guess – programming with AGI and focusses almost exclusively on using PHP. As much as I am happy around PHP, I would have liked to see some examples with alternative languages such as Python perhaps. The subtitle of the book is “Design and Develop Asterisk-based VoIP telephony platforms and services using PHP and PHPAGI” so I guess that’s why other languages don’t get much of a look in. They are mentioned here and there and there are some good links to various other libraries and open source projects. I did like the fact that he mentioned throughout the book – where necessary – the functional difference between the main versions of Asterisk (1.2, 1.4 and 1.6) and ways to deal with those differences when you come up against them.

OK – so here is my chapter-by-chapter review:

Sorry, but I didn’t really get the first chapter at all. This is a book aimed at programmers and developers and yet the first chapter was a repetitive cut-and-paste of how to build the various asterisk components from source, including lots of screen shots showing the output of things like ./configure which personally I found a bit trivial and uninteresting. I was a bit concerned that the rest of the book was going to follow suit but thankfully I was mistaken.

Chapter 2 is really good. It explains the workings of Asterisk’s dialplan and applications – the infamous extension.conf – in a very clear and understandable way. I recall when I first started to look at Asterisk and was delving into as much information on-line as I could get, the Asterisk TFOT book [pdf download] and whatever else I could find, that it was several days before the penny finally dropped. It isn’t difficult really but it isn’t quite the same as “normal” programming or scripting concepts and the language itself is far from obvious (e.g. an extension is not the phone on your desk in Asterisk’s configuration files). But then this is telephony we are talking about. Using the example of a basic IVR or AA the author examines the diaplan syntax and construction.

So I got quite a lot out of chapter 2. I thought it was well written and clear and useful. Chapter 3 develops the IVR theme further, introduces other features of the Asterisk application pool and covers the scripting language in more detail examining branching, expressions, operators and flow control. It’s a fairly short chapter but covers a good deal of ground if you are unfamiliar with Asterisk programming.

Your level of knowledge and familiarity with Asterisk will dictate what you get from this first section (Chapters 1-3). Although I have used Asterisk for a couple of years now and have felt quite comfortable with the platform’s configuration and use, I got quite a lot of new information and ideas from this early part of the book. For me, this initial part has been very useful and will be a good reference for the future. I think, though, if you are very familiar with Asterisk then you might find it a bit slow going. The book hasn’t examined AGI whatsoever up to this point and we are about a third of the way through already! The author does suggest that a coffee is a good before starting on Chapter 4 as “the journey becomes more and more complicated”…

Chapter 4 introduces the reader to AGI in a fairly gentle way and also offers 10 “rules” to help make your AGI programming more successful – they all make sense to me and will I’m sure prove to be a very useful monitoring/checking tool. Packt sent me an extract from this chapter which you are free to read here if you want to get a flavour of it.

The following chapter introduces us to some real code (PHP) and we build our first, simple AGI application. Nothing to hard, but a useful introduction into how to actually get the conversation happening between Asterisk and your script. There are couple of nice flow charts which are helpful for visualising the traffic flow back and forth between Asterisk and your script too. Again not too complicated but helpful in getting the novice AGI programmer, i.e. me, thinking about things the right way.

In chapter 6 Nir examines and recommends the use of a set of PHP classes (library) called PHPAGI. Being completely new to AGI programming I am in no position to contradict the author’s recommendation, but looking on the Sourceforge site for this library, it is quite old and has not been updated for 3 years or more. Of course that may be because it is perfect and needs no further development, or there might be other reasons but I would have really liked to have had some more discussion regarding this choice of library before continuing – just for my own piece of mind more than anything else. Perhaps if Nir reads this he could leave a comment about this? My own assumptions after reading the rest of the chapter are that the AGI interface itself is fairly simple and so – perhaps – the need for a more dynamic or complex library is just not there and this one does the job just fine. Anyway, the rest of the chapter we look at a new AGI application using the class library above and also we discover the main – and what seems to me to be a first-class – concept for building AGI applications: Atomic AGI or Particle Programming. Sounds great doesn’t it? It really does make a lot of sense. Basically it’s a bit like the traditional ideals behind Unix/Linux command line applications; write small applications that do one thing and do it well. To summarise then, in chapter 6 we are shown the author’s recommended path to AGI Nirvana through adopting some rules, and practices. It is hard for me to draw any solid conclusions from his approach as I am a novice with AGI and so have nothing by way of comparison, but it certainly seems to make a great deal of sense and is clear and well explained. Good stuff.

The remainder of the book goes a bit wider than just pure AGI. Chapters 7 and 8, examine some of the closely related applications and facilities of Asterisk. We get an overview of FastAGI (AGI over TCP) and Nir shows us some further PHP libraries that are available to assist with producing FastAGI applications. Chapter 8 offers an overview of the AMI (Asterisk Manager Interface) and some example code to get you started.

In the penultimate chapter, the reader is given a challenge: to create an application that is used in the real world – an Asterisk Call Recording Gateway. There is no code in this chapter – that’s for you to do. But Nir provides some useful guidance about the way to think about the development and plan the project itself.

And finally, chapter 10 discusses how to make sure your Asterisk applications can scale and offers several ideas and techniques to improve performance such as database query caching and using web services.

As I said at the beginning – I enjoyed reading this book much more than I thought I would. It is not overly technical and Nir has an engaging style of writing. The book is a great introduction into Asterisk programming. It is not “The Bible of Asterisk Programming” and does not set out to be. It is clearly aimed at developers who have not had much to do with Asterisk before but are familiar with traditional programming methods. I really liked the fact that it is quite short. You can read the whole book in a couple of evenings and being laid out the way it is it will become a very useful reference document for me in the future.

Nir Simionovich has a blog.

Asterisk: AGI Programming

Recently I received a flattering email from Packt Publishing telling me about a new book entitled: “Asterisk Gateway Interface 1.4 and 1.6 Programming” – by Nir Simionovich. The author of the email refered to this blog and asked if I would like to review their book for my blog. Very flattering indeed.

[Update: Book review is done now. You can read it here]

I was, of course, already familiar with Packt. They do produce lots of books on Open Source technologies. What I wasn’t aware of, until I looked, was this (from their “about us” page):

Packt Open Source Project Royalty Scheme

Packt believes in Open Source. When we sell a book written on an Open Source project, we pay a royalty directly to that project. As a result of purchasing one of our Open Source books, Packt will have given some of the money received to the Open Source project.

In the long term, we see ourselves and yourselves, as customers and readers of our books, as part of the Open Source ecosystem, providing sustainable revenue for the projects we publish on. Our aim at Packt is to establish publishing royalties as an essential part of the service and support business model that sustains Open Source.

Now that seems like a fine scheme to me and is one that would certainly weight my purchasing decision toward a Packt book over another similar publication. I am aware that they will obviously get some free publicity from our review but having read the above I am quite happy about that.

Anyway, back to AGI.

Asterisk Gateway Interface (AGI)

The Asterisk Gateway Interface is an interface for adding functionality to Asterisk with many different programming languages. Perl, PHP, C, Pascal, Bourne Shell – it’s your choice, really.

  • AGI may control the dial plan, called in extensions.conf.
  • Async AGI Introduced in Asterisk 1.6, allows asynchronous AGI scripting.
  • EAGI gives the application the possibility to access and control the sound channel in addition to interaction with the dial plan.
  • FastAGI can be used to do the processing on a remote machine via a network connection.
  • DeadAGI gives access to a dead channel, after hangup. Deprecated since Asterisk 1.6

Being a fan and user of Asterisk in our business, I think what we will do is actually use the book and create or modify an application that will be of use to us. This should allow us to give a decent overview of the content and how easy/hard it was to transfer the knowledge into a real world result.

We use vtiger as our CRM, OpenEMM for email marketing and Asterisk for our telephony – all running on Ubuntu Servers. Tying these together would be a fine goal.

But I am open to other suggestions too. Anyone got any good ideas for a fairly simple AGI application?

Did Microsoft make Firefox?

This post by Matt Assay discussing how we got to a competitive browser market got me thinking. (Dangerous I know, but bear with me.)

… I suppose the truly intriguing thing is not that we have a competitive market for Web browsers again, but how it happened. Baker told me recently that Firefox is “an anomaly” because it managed to beat back overwhelming Microsoft market share. Can we do it again?

What was the tipping point when Microsoft’s Internet Explorer team finally had to start paying attention to Mozilla’s Firefox browser? And when did Google decide that it couldn’t subsist on Firefox’s roadmap and instead had to forge its own browser, Chrome?

Mozilla FirefoxMy own take on this is it was all Microsoft’s own doing. Think about it. Their browser, Internet Explorer [and more specifically IE6], was locked into the operating system that ran an almost every PC sold. So for Mozilla’s Firefox browser to take more than a 20% market share is pretty staggering. If you use Windows (as certainly a few years ago almost everyone did) you already have a browser on that Windows PC so why go and download another one? It isn’t quite the same for OpenOffice.org or Gimp for example. You are having to make a decision about acquiring an Office Application Suite or an Image Editor; whether you pay for commercial code or use FOSS is your choice. But with the browser, you already have one.

My conclusion to Matt’s question is that it comes down to just how bad IE6 really was. If it had been a half decent browser with acceptable support for the standards it was supposed to support then I don’t think Firefox, and possibly the entire FOSS ecosystem, would be as strong as it is today.

Presumably Microsoft could have patched and updated IE6 during the course of it’s life but they chose not to, and instead stuck to delivering a half-baked, non-compliant browser full of leaks and security holes and proprietary features that lead many unfortunate souls to build sites that only worked with Microsoft’s browser.

I think that it was the web development community that started this movement. Being professionally involved in helping Graphic Designers make websites work across browsers, I know just how BAD IE6 really is when it comes to supporting standards. If it hadn’t been so terrible, or even got fixed, I don’t think the web developer community would have started using Firefox in the numbers that they did and then espousing it’s virtues with quite the same level of gusto.

Of course, as well as being a decent browser, there were many new and innovative ideas and features in Firefox, a huge extension and plug-in library and cross platform support too. But as “most” users of a browser are simply surfing, then if IE wasn’t such a pile of steaming poo in the first place I don’t think many consumers would have been inclined to change at all.

What do you think?

« Previous PageNext Page »