Recently I have been talking a little about building quality and precision into Ubuntu Accomplishments. Tonight I put one of the final missing pieces in place and I thought I would share in a little more detail about some of this work. Some of you might find this useful in your own projects.
Before I get started though, I just wanted to encourage you to start playing our software and for those of you that had a crash when using certain languages with the Accomplishments Information viewer, I released a 0.1.2 update earlier that fixes this.
Automated TestingAs we continue to grow the Ubuntu Community Accomplishments collection it is going to be more and more complex to ensure all of the accomplishments are working effectively every day; we are already at 28 accomplishments and growing! What’s more, the community accomplishments scripts work by checking third-party services for data (e.g. Launchpad) to assess if you have accomplished something. These external services may change their APIs, adjust how they work, add/reduce services etc, so we need to know right away when one of our accomplishments no longer works and needs updating.
To do this I wrote a tool called battery. It works by reading in a test that is available for each accomplishment that feeds the accomplishment validation data that should succeed and also data that should not validate. As an example, for the Ubuntu Member accomplishment the data that succeeds is an existing member’s email address (such as my own) and the test for failure is an email address on Launchpad that is not a member. The original script requires the user’s email address to assess this accomplishment, so battery tests simply require the same types of information, with data that can trigger success and failure.
This approach allows us to test for three outcomes:
The way this works is that battery includes a customized version of the general accomplishments.daemon module that we use for the backend service. In the code I override the back-end module and load a custom module. This way the original accomplishment script does not need to be modified; instead of get_extra_information() calling the back-end daemon and gathering the user’s details, the custom module that comes with battery instead has it’s own get_extra_information() that gets returns the test data so battery can run the tests.
Originally battery only output textual results, but this would require us manually running it. As such, last night I added HTML output support. I then enabled battery to run once a day and automatically update the HTML results. You can see the output here.
There are a few important features in this report other than a list of all the accomplishment test results:
While this was useful, it still required that we would remember to visit the web page to see the results. This could result in days passing without us noticing a failure.
Tonight I fixed this by adding email output support to battery. With it I can pass an email address as a command-line switch and battery will generate an email report of the test run. I also added battery‘s default behavior to only generate an email when there are failures or tests are missing. This prevents it generating results that don’t need action.
With this feature I have set battery to send a daily “Weather Report” to the Ubuntu Accomplishments mailing list; this means that whenever we see a weather report, something needs fixing.
One final, rather nice feature, that I also added was the ability to run battery on one specific accomplishment. This is useful for when we are reviewing contributions of new accomplishments; we ask every contributor to add one of these simple tests, and using battery we can test that the script works for validation success, validation failure, and script failure with a single command. This makes reviewing contributions much easier and faster and improves our test coverage.
GraphingSomething Mark Shuttleworth discussed at UDS was the idea of us building instrumentation into projects to help us identify ways in which we can make better decisions around how we build software. This is something I have also been thinking of for a while, and to kick the tyres on this I wanted to first track popularity and usage of Ubuntu Accomplishments before exploring other ways of learning how people contribute to communities to help us build a better community.
Just before we released version 0.1 of Ubuntu Accomplishments, I created a little script that does a scan of the validation server to generate some statistics about the number of daily new users, the daily number of new trophies issued, and the totals. Importantly, I only count users and trophies, and I am only interest in publishing anonymized data, not exposing someone’s own activity.
To do this my script scans the data and generates a CSV file with the information I am interested in. I then used the rather awesome Google Charts API to take my CSV and generate the Javascript need to display the graph. Here are some examples:
While this is not exactly instrumentation, it got me thinking about the kind of data that could be interesting to explore. As an example, we could arguably explore which types of contributions in our community are of most interest in our users, how effective our documentation and resources are, which processes are working better than others, and also some client side instrumentation that explores how people use Ubuntu Accomplishments and how they find it rewarding and empowering.
Importantly, none of this instrumentation will happen without anyone’s consent; privacy always has to be key, but I think the idea of exploring patterns and interesting views of data could be a fantastic means of building better software and communities.
At the Ubuntu Developer Summit last week I delivered a plenary on the Tuesday called Accomplishing An Awesome App Developer Platform that tells the story of how the Ubuntu app developer platform enabled me to build the Ubuntu Accomplishments system that I designed with Aq. The presentation walks through the story of how we designed the system, and how everything was available in Ubuntu to create the client, back-end daemon, validation server, and desktop integration. I think it is a good example of how Ubuntu can help app devs to create interesting ideas and apps.
I thought this might be handy to have on YouTube, so I re-recorded it today, and you can see the video below:
Can’t see it? Watch it here!
If you want to create your own application for Ubuntu, be sure to visit developer.ubuntu.com.
I just released a new update for the Ubuntu Community Accomplishments collection. This new release (0.1.1) includes the following new community accomplishments:
Thanks to Silver Fox, Michael Hall, Matt Fischer, Rafal Cieslek, Angelo Compagnucci for contributing these additions! It is wonderful to see our community growing!
If you want to contribute accomplishments, be sure to see our guidelines, some suggestions, and how to get started!
If you are already running Ubuntu Accomplishments 0.1, you just need to do the following to get the new set:
sudo apt-get update sudo apt-get upgradeIf you are running the daemon, kill it first with killall -9 twistd and then load Accomplishments Information from the dash.
If you are new to Ubuntu Accomplishments, be sure you have your Ubuntu One set up and running on your computer, and then follow these installation instructions.
Last week, I finally gave in and bought a new laptop. I wanted something small and lightweight, yet reasonably powerful.
I discounted the MacBook Air on a couple of counts: the increased cost and the potential for extra hassle getting Ubuntu running.
My two choices were the Dell XPS 13 and the Asus Zenbook. The Dell was my first choice: Project Sputnik, the fact Mark has just got one and its size were all in its favour.
The Asus is a good looking machine and has had good reviews. Some dislike the keyboard, but it has been okay for me. However, the Dell feels like it has more momentum amongst the kind of people I work with and the people who make Ubuntu work well on laptops.
After much thought, and a few conversations, a couple of things pushed me away from the Dell: the trackpad isn’t yet well supported in anything other than Windows and it’s a touch more expensive than the Asus.
So, after a few days with the Asus, here’s a quick run-down:
I’ll report back when I’ve started to tackle some of these issues.
So it’s that time again when we all head off to Liverpool for Dan Lynch’s Rathole Radio, as usual Matthew Copperwaite travelled up from the small village of London to Castle Cannon in the West Midlands and arrived while I was watching Mel Gibson leaving no one behind in ‘When we were soldiers’. Full of excitement I opened the front door to be greeted by Matt clutching a pathetic bouquet of flowers! “These are for you.” he said “you’re always moaning that I never bring you flowers.” Bastard, he knows full well I like lilies! After spending some time recovering from his journey Matt and I set off for Liverpool, I always like to take Matt on a little bit of a detour rather than taking the shortest route to the M6 so that he can sample the delights of the West Midlands the first 20 minutes or so of our journey was pretty uneventful however when we hit the M6 OMG! The traffic was horrendous, every 5 to 10 minutes it was stop start stop start and this was in the fast lane, it has to have been one of the worst journeys up Matt and I have done in fact on one occasion we nearly died when I took my eye off the car in front for literally a split second.
Now I was determined on this occasion that we would not get lost I had downloaded the directions from Google maps even though this is the third time I have done the journey, it clearly states on the directions to get off at junction 21a and follow the M62 to the 5080 now this is where we got lost before so we start to follow the directions and yes you guessed it we was on the wrong road “Fook this” I said “I’m going back to the 62.” So we headed back to the 62 and followed it down into Liverpool which miraculously turns into the 5080 how stupid is that? On the outskirts of Liverpool we could clearly see Ubuntu’s new venture, they are going into house refuse collection as there was a sea of purple wheelie beans everywhere presumably these are collected by the Ubuntu-cart. We headed on down into the city centre totally ignoring the directions we had with me repeatedly saying “we just need to head for the sea.” Yeah that worked really well didn’t it? So having gone round the block we decided to follow a bus which clearly had better directional sense than we did. Now I should say here that we was looking for the Q car park Liverpool 1 I had looked on Google maps, street view, and could see how you got out of the car park but could not for the life of me find the way in. The Strand is a very busy road with three lanes of course we was in the left-hand lane and needed to be in the right-hand lane I tried looking like a lost tourist at the cop car next to us in the hope that they would let us cross in front of them but we obviously didn’t look criminal enough as they just drove off.
Having managed to cross the three lanes into the right-hand lane we travelled a little further on and Matt spotted a ramp in the middle of the road going down into the bowels of the earth “aha, this must be the entrance?” As we descended down we drove across the worst rumble strips I have ever driven over in my life I don’t know about slowing us down but it certainly nearly made me shit myself. I have to say I have never parked in such a posh car park, blue mood lighting adorned the subterranean cavern and this car park was huge. We found a space and retrieved our bags from the boot and set off looking for the exit, on our way we accosted an unfortunate local woman “excuse me can you tell us how we get out of here?” The poor woman led us to the lifts “you don’t happen to know where the travel Lodge Strand Hotel is do you?” The woman led us outside and directed us in the general location of the hotel, Matt and I set off in the lovely weather we was having on that day, it was pissing down. As the bedraggled pair shuffled along the Strand heads sunk into our shoulders for protection we tried to find the hotel “I’m sure it’s on the docks” I said then suddenly out of the corner of my eye there in 20ft letters was the Strand, unusually reception is on the first floor and as we came out of the lift we was greeted by a party of hen nighters trying to book in. Matt, ever the geek, used the booking in console and had his door key straight away I of course was determined to hand over my scrap of paper confirming my booking to a human being, yeah I’m old school, bite me.
“What shall I do give you knock in about an hour?” Said Matt, “Na, I’ve changed my mind I’m not going to have a shower now I’m just going to have a shave and change. Just come in about 20 minutes, don’t panic I won’t be naked.” twenty minutes later there was a knock at the door and I opened it naked from the waist up clutching a towel to my face trying to staunch the blood!
“You bastard, you promised you wouldn’t be naked!” said Matt, never mind the fact that the lovely white towel was covered in blood and looked like some heinous murder had been committed all he was worried about was seeing my hairy chest. Having managed to stem the flow I dressed and we set off to retrieve my phone which I had accidentally left in the car this meant traipsing all the way back to the car park which by now we had a good idea how to get to, having retrieved the phone we got back into the lift and arriving at the shopping level the lift announced “shopping and shop mobility.” which was hysterical given there was still a flight of stairs to be negotiated, how on earth is a wheelchair bound person going to get up those stairs?
We set off for Wetherspoon’s which is where some of us met up last year, as we walked through the city centre a voice called out “Hello” scared that we was going to be asked if we could loan the owner of the voice 24p we picked up the pace, “It’s Dick Turpin in’t it?” I was cornered I had no choice but to own up. There in front of us was Matt Molyneaux, maybe he had been there all day waiting to ambush us? Moggers needed to go back to the hotel so we told him where we would be and carried on I thought it would be a good idea to announce on G+ where we was meeting so, wait for it, I typed ‘witherspoons’ Matt said “what the hell is witherspoons? It’s Wetherspoon’s how can you get that wrong? It’s the biggest national pub chain in the UK!” He’s horrible to me you know. What always makes me smile in this pub is all the girls with rollers in their hair who are having a pre-night out drink I think I’ve only ever seen this in Liverpool? After a short while Matt’s mate texted him that he was in another pub, The Pilgrim on Pilgrim Street. Now given I’d announced we was in Wetherspoon’s we buggered off to the Pilgrim like the complete gits we are.
It’s become a bit of a tradition to eat in The China Palace given it was one of those “Eat all you can for £6.00″ establishments, now Michael (heeed) Rimicans had said earlier in the week that their website was down but we never listen to anything he has to say anyway. My phone rang and it was Michael “The Chinese is closed!” now I thought he meant closed as in not open but after much gnashing of teeth he managed to communicate that like the African blue parrot (Monty Python) “It had ceased to be.” and was closed down so we decided to head for the LEAF as they did food there, the venue is actually really nice and I thought the staff was pretty friendly too. We could hear Dan warming up and could take no more and crept upstairs.
First up was Thom Morecroft I would have said he was a folk singer, we all loved his opening song and his band featured a guy who played a box. Yep he sat on a box and banged it! But it was very good.
I’m afraid the next few songs seemed a bit same old same old with a bit too much “Ooh Ooh aah aah” melodies for my liking Tom did say Holly(?) had a beautiful voice, if only she had sung words more. The songs in the middle of his set was a bit depressing for me but even so we all enjoyed it, sing some happy songs next time mate.
Next up was ‘our mate Dan’ with his band 20lb sounds I am so glad he’s smartened himself up a bit, gone are those crappy red shorts and in was a pretty slick black pair of strides and a black shirt. Of course being a scouse git he still had to wear some multi coloured trainers didn’t he!
Getting a bit too carried away with himself Dan managed to break a string during the second song “It’s OK I only need five strings anyway.” said Mr show off. I’m not sure if it was the next song or the one after Dan realised that he did need that string after all when he hit his guitar solo which now consisted of ‘one note’ played relentlessly. The highlight for me was not only when he announced ”The next song is Jimmy Carter” but that it was for me \o/ I love this song, mainly because it’s the only one of Dan’s I know the words to but also Dan really belts it out. I was a bit worried about him during the mouth organ solo I was scared we’d have to scoop his lung up as he bent over blowing his guts out with a contorted face “You’ll do yourself a mischief mate.”
Next up was P’Chenga this guy is mental! Matt said he was kinda Ska/Punk with almost a bit of Reggae thrown in. This loon threw himself round the stage like a demented gibbon while pulling facial contortions HE WAS BRILLIANT true we couldn’t really understand half the words but who cares he made up for it in energy.
We did feel that his set went on a touch too long there’s only so much excitement a man can take so was kind of glad we could get our breath back when he finished by now I had consumed seven Ginger Beers and was glad of the toilet break to be honest.
The final act was The Corinthians I would have said they was a Rap band, I’ll be honest they was not really my cup of tea although my foot was tapping a couple of times. Matt and I noticed that the guy on the Laptop and I suspect sound board was brilliant! He really seemed to be enjoying himself as well as the guy in the white tee-shirt (This works really well if you wasn’t there as you have no idea who I’m talking about.) my main complaint was they must have said “Corinthians” 30 times during every song! Mind you Matt was right as it clearly worked, their name is now imprinted on my brain.
They’re clearly popular as they brought along their own fan base with an average age of twelve by the look of some of them however at least they had the balls to stand in front of the stage and dance (If you can call it that) which made a few others get up and jiggle about a bit.
One of the strangest moments of the night was when Mr Tinfoil walked past! I have no idea what he was smoking and his excuse of “I was at a fancy dress party.” seemed ‘thin’ very thin in my opinion but hey this is Liverpool and nothing should surprise you of a night time round there.
It was getting near the end of the night certainly for us some of our friends had already headed off and Matt and I decided to wander off back to the hotel. We had a brilliant night Rathole Radio is not just about the music for us it’s about a social event with our friends and one we look forward to every year. If you’ve never been come along next year and we’ll look after you.
The pictures in the post are reproduced by kind permission of another baldy Pete Stean who scared the living daylights out of me by leaving his hugely expensive camera lying around, I’ve lost five years off my life coz of you you bastard! Cheers for letting me use your photos mate and the ones you took of Matt and me.
Pete Stean is available for weddings, christenings and Bar Mitzvah’s and the odd risqué photo shoot. All that’s left to say is “Thanks Dan see you in 2013″
Oh and one final thing, Matt and I was very impressed with the vending machine in the Strand Travelodge that dispensed paracetamol!
ENJOY
In the Ubuntu world we have some common values that are not just focused on freedom, but also in how we build Ubuntu. Values such as cadence, design, quality and precision help guide us in building the best Ubuntu that we can.
These values continued to be common themes at the recent Ubuntu Developer Summit in California. Today our culture continues to involve important integration work that is a rich and interesting challenge, but this work has also been augmented by us building assurances around Ubuntu too; assurances such as regular releases (cadence), the reliability and quality of the experience (quality), and attention to detail in both design and engineering (precision) are all examples of the strong balance of predictability and innovation that we want to bring.
These values are not limited to Ubuntu though: we want Ubuntu to be a platform where you can get the very best software experience, whether you are using Open Source or commercial applications. In a nutshell, we want to take the lessons we have been learning regarding cadence, design, quality and precision and share them with our upstreams. This is going to be a big chunk of what Michael Hall will be focusing on in the coming months.
One upstream project though that I am actively involved in in my spare time is Ubuntu Accomplishments and I wanted to share some of our plans surrounding our next 0.2 release and how these values are forming an important core of this work. Before I continue though, I just want to say a huge thank-you to everyone who has been participating in Ubuntu Accomplishments. Ever since our 0.1 release a few weeks ago we have had over 180 people start using this very early PPA and a number of people have started contributing accomplishments. Thanks to all of you!
QualityWith the expanded number of accomplishments being contributed, I started thinking last week about how we could perform better testing around these contributions as well as daily testing reports; I wanted to ensure that our project, even though we are very young and small, demonstrates a level of quality that we can be proud of. To kick this off, this weekend I wrote a small tool called battery that helps us assure quality. I created a validation test for every accomplishment and battery runs all the accomplishments and feeds them this data that will cause an accomplishment to succeed as well as fail. This serves a few valuable purposes:
As an important part of building good design into the system, battery was designed to not require any changes to the existing accomplishments sets and require a bare minimum from our contributors who should be spending more time having fun writing accomplishments than caring about tests. I am delighted with the results.
The Road To 0.2In addition to helping to ensure the accomplishment contribution process is simple (see our list of ideas for accomplishments and how to create them), we have been planning the 0.2 release. This will continue to focus on refinements and building a strong, reliable platform for both community and local accomplishments.
We will be focusing on the following in the 0.2 cycle:
It was wonderful to see the excitement and interest around Ubuntu Accomplishments at UDS, and I am excited to see where the project can take us. If you want to join us, be sure to join the mailing list and/or join us on IRC on freenode in #ubuntu-accomplishments.
A short presentation I gave at today's Multipack Show and Tell on "How to make APIs that people like".
The tl;dr version: your API is part of your user experience. Take your UX knowledge -- design for the user, not for yourself; think about the user journey rather than just modelling your underlying infrastructure; make it understandable and intuitive and focused on their need -- and do all the same things when designing an API.
I keep forgetting these one line OpenSSL commands – perhaps if they are here, I’ll remember —
Electronic Arts are delivering two games into Ubuntu, Command & Conquer Tiberium Alliances and Lord of Ultima. They are currently available in the Ubuntu Software Center.
While some may focus on the fact that these are loading web apps, the really exciting opportunity here is that EA have identified Ubuntu as an exciting channel to deliver their content. I would like to encourage our community to welcome EA to Ubuntu, and download and enjoy the games.
Let’s not get side-tracked by the fact that these are web games and not native to Ubuntu: EA are dipping their toes in Ubuntu as a channel of opportunity, and let’s welcome them with open arms.
Just a quick reminded that my band Severed Fifth will be playing tonight at:
Roosters Roadhouse, 1700 Clement Avenue, Alameda, CA 94501This is about a 5 – 10min cab ride from the Oakland Marriot hotel.
Get down there for about 7.30pm to ensure you get your tickets as the show has sold out of pre-sold tickets. We go on stage at 8pm. Hope to see you there!
Buying Happiness — Jeff Atwood
Pay now and consume later: Immediate gratification can lead you to make purchases you can't afford, or may not even truly want. Impulse buying also deprives you of the distance necessary to make reasoned decisions. It eliminates any sense of anticipation, which is a strong source of happiness. For maximum happiness, savor (maybe even prolong!) the uncertainty of deciding whether to buy, what to buy, and the time waiting for the object of your desire to arrive.Next time Jono complains at me for spending six months agonising and analysing about a new phone or new laptop or something, I shall tell him: it is science.
Some of you may have seen the news of our very first Ubuntu Accomplishments release. Thank-you to everyone for testing the system; the feedback has been wonderful so far.
The power of the Ubuntu Accomplishments system is dependant on the range of accomplishments available to our users; a comprehensive range of accomplishments that span the full Ubuntu community will make the system an exciting and empowering resource. As such, I would like to put out a call to encourage you lovely people to contribute some accomplishments
Fortunately all you need to know is a little Python to contribute here.
How to ParticipateThis is how you can help:
Thanks!
Importantly, while this blog post is seeking contributions for the Ubuntu Community collection of accomplishments, if you want to create a collection of accomplishments for your community or project (e.g. your software project, distro, local user group etc), you can use the same tutorial and resources to get started! Let us know if you have any questions!
Getting HelpIf you have questions, you can get help in a few places:
Thanks so much for your contributions!
Yesterday I announced the first Ubuntu Accomplishments release. It is wonderful to see so many of you trying the system; many thanks!
As part of the 0.1 release, we have added David Callé‘s Ubuntu Accomplishments Unity lens to the 0.1 PPA. It looks like this:
The lens neatly integrates into your desktop your trophies and available opportunities. Clicking on an opportunity will show information about how to accomplish it.
InstallingTo install the lens first, add the PPA to your system with:
sudo add-apt-repository ppa:ubuntu-accomplishments/releasesNow update your package list:
sudo apt-get updateEnsure you have the full Ubuntu Accomplishments system (including the accomplishments-lens package):
sudo apt-get install accomplishments-daemon accomplishments-viewer ubuntu-community-accomplishments accomplishments-lensYou will need to re-login to see the lens.
Please note: you will need to have the accomplishments back-end process running to use the lens. This is simple: just load Accomplishments Information from the dash and this will start the back-end process. You can now view the lens.
As ever, you can report bugs here.
Thanks, David, for your efforts in creating the lens!
Arbitrary tweets made by TheGingerDog (i.e. David Goodwin) up to 01 May 2012
Back in January I first posted about initial progress on the Ubuntu Accomplishments project; an effort to present our users with fantastic documentation and guidance for a range of different community activities and automatically award our users with trophies when they accomplish those activities. The end-goal is to make opportunities on your computer and in your community more discoverable and satisfying when accomplished.
Importantly, Ubuntu Accomplishments is not about meaningless awards such as 1000 posts to a forum or 500 bug comments (the like of such can be easily gamed and generate too much noise to signal), but we are instead focusing on awards for new experiences and skills acquisition (e.g. learning how to file a bug, becoming an Ubuntu Member etc). You can see our guidelines for how we decide on what makes a great accomplishment here.
Well, after a furious period of development, I am delighted to announce our very first release: Ubuntu Accomplishments 0.1. This first release is a huge milestone in the project: this isn’t just a small GUI app…to build this first milestone involved creating a back-end service (featuring a DBUS API), a Python API to ease writing accomplishments, a server validation service, a graphical front-end, and a collection of community accomplishments to get people started. In addition to this everyone’s favorite Callé…David Callé…has created a Unity lens for the system which we plan on releasing over the next few days too.
Currently the 0.1 release does the following:
The goal of the 0.1 release was to demonstrate the core system working and I am delighted to share this first release with you.
InstallingPlease note, there is a reason why this is version 0.1 – this is a very early version, so use with caution. There are bound to be some bugs, but we welcome all testing so we can resolve bugs and problems. Thanks!
The 0.1 release is only available for Ubuntu 12.04 and is available in a PPA. You will need to have an Ubuntu One account set up and working (you don’t need a paid account, just the free account).
You can install the PPA by following these instructions.
First, add the PPA to your system with:
sudo add-apt-repository ppa:ubuntu-accomplishments/releasesNow update your package list:
sudo apt-get updateNow install the packages:
sudo apt-get install accomplishments-daemon accomplishments-viewer ubuntu-community-accomplishmentsTo use the system simple click on the Accomplishments Information app in the Unity dash. The graphical app will load and if you wait a few minutes you should start seeing notification bubbles arriving that tell you which trophies you have achieved.
You can browse the Opportunities by double-clicking on them to read more about them. You can view your collection of trophies by clicking on My Trophies.
Known IssuesA few known issues with this first release:
If you find a bug you can report it here. We are keen to know about all bugs you find!
ThanksI just want to offer thanks to the following people who helped get this 0.1 release out:
Thanks!
Next StepsMoving forward we want to focus on these areas:
If you would like to get involved and participate, please join our mailing list. Thanks!
A first release: Ubuntu One Files for the Nokia N9. Includes short YouTube video with nice music. Still lots to do, of course.
One project I occassionally hack on is Xerte Toolkits.
Yesterday on the mailing list it came up that someone was trying to use XOT with PHP4.
After getting over some initial shock that people still use PHP4 (it was end-of-lifed in August 2008) I wondered how easy it would be to check the status of a code base to find how incompatible with PHP4 it now is.
My initial thought was to find a list of functions which had been added with PHP5 and then just grep the code for them, but it turns out there is a much nicer approach – PHP_CompatInfo
Installation was fairly straight forward – like :
pear channel-discover bartlett.laurent-laville.org
pear install bartlett/PHP_CompatInfo
Annoyingly the documentation seemed well hidden – but once I found it (http://php5.laurent-laville.org/compatinfo/manual/2.3/en/index.html#_documentation) it was pretty easy to use, and the ‘phpci’ command did all I needed -
Examples :
1. List global variables in use : $ phpci print --reference PHP5 --report global -R . 436 / 436 [+++++++++++++++++++++++++++++++++++++++++++++++++++++++++>] 100.00% BASE: /home/david/src/XOT/trunk ------------------------------------------------------------------------------- PHP COMPAT INFO GLOBAL SUMMARY ------------------------------------------------------------------------------- GLOBAL VERSION COUNT ------------------------------------------------------------------------------- $_GET 4.1.0 1 data $_GET 4.1.0 2 debug $_GET 4.1.0 2 export $_GET 4.1.0 2 file $_GET 4.1.0 1 firstname $_GET 4.1.0 1 .... 2. Find all PHP5 functions in use : $ phpci print --report function -R . | grep 5. 436 / 436 [+++++++++++++++++++++++++++++++++++++++++++++++++++++++++>] 100.00% spl_autoload_register SPL 5.1.2 1 simplexml_load_file SimpleXML 5.0.0 1 iconv_set_encoding iconv 4.0.5 1 iconv_strlen iconv 5.0.0 10 iconv_strpos iconv 5.0.0 38 iconv_strrpos iconv 5.0.0 3 iconv_substr iconv 5.0.0 33 dirname standard 4.0.0 53 fclose standard 4.0.0 51 file_put_contents standard 5.0.0 6 fopen standard 4.0.0 55 fread standard 4.0.0 57 fwrite standard 4.0.0 50 htmlentities standard 5.2.3 1 md5 standard 4.0.0 1 scandir standard 5.0.0 1 str_split standard 5.0.0 3 REQUIRED PHP 5.2.3 (MIN) Time: 0 seconds, Memory: 28.25Mband finally,
3. Class usage : $ phpci print --report class -R . | grep 5. 436 / 436 [+++++++++++++++++++++++++++++++++++++++++++++++++++++++++>] 100.00% Exception SPL 5.1.0 1 InvalidArgumentException SPL 5.1.0 2 REQUIRED PHP 5.1.0 (MIN) 4. All class usage :i.e. without me grep’ping the results.
$ phpci print --report class -R . 436 / 436 [+++++++++++++++++++++++++++++++++++++++++++++++++++++++++>] 100.00% BASE: /home/david/src/XOT/trunk ------------------------------------------------------------------------------- PHP COMPAT INFO CLASS SUMMARY ------------------------------------------------------------------------------- CLASS EXTENSION VERSION COUNT ------------------------------------------------------------------------------- Exception SPL 5.1.0 1 InvalidArgumentException SPL 5.1.0 2 PHP_CompatInfo 4.0.0 1 Snoopy 4.0.0 2 StdClass 4.0.0 2 Xerte_Authentication_Abstract 4.0.0 6 Xerte_Authentication_Factory 4.0.0 4 Xerte_Authentication_Guest 4.0.0 1 Xerte_Authentication_Ldap 4.0.0 1 Xerte_Authentication_Moodle 4.0.0 1 Xerte_Authentication_Static 4.0.0 1 Xerte_Authetication_Db 4.0.0 1 Zend_Exception 4.0.0 2 Zend_Locale 4.0.0 7 Zend_Locale_Data 4.0.0 19 Zend_Locale_Data_Translation 4.0.0 6 Zend_Locale_Exception 4.0.0 28 Zend_Locale_Format 4.0.0 3 Zend_Locale_Math 4.0.0 14 Zend_Locale_Math_Exception 4.0.0 9 Zend_Locale_Math_PhpMath 4.0.0 11 archive 4.0.0 3 bzip_file 4.0.0 1 dUnzip2 4.0.0 3 gzip_file 4.0.0 1 tar_file 4.0.0 3 toolkits_session_handler 4.0.0 1 zip_file 4.0.0 2 ------------------------------------------------------------------------------- A TOTAL OF 28 CLASS(S) WERE FOUND REQUIRED PHP 5.1.0 (MIN) ------------------------------------------------------------------------------- Time: 0 seconds, Memory: 27.50Mb -------------------------------------------------------------------------------Which answers my question(s) and so on.
Many of you will be familiar with the Ubuntu Accomplishments project I have been working on recently. Well, we are gearing up to release our very first 0.1 release in the next week in a PPA, but we have one area where I would like to reach out to you folks for help.
Translations!
We want to ensure that Ubuntu Accomplishments is available in as many languages possible; not just the application, but also the fantastic documentation that is part of the application.
As such, can I please ask you wonderful people to help contribute your translations by following the instructions below.
Translating the Application SoftwareWe want to ensure the backend process (which displays the accomplishments achieved and opportunities unlocked bubbles) as well as the graphical client is fully translated. To translate just follow these steps:
Oh, and if there are no translations for your chosen language, please do go and add translations!
Translating the Accomplishment InformationFor each of the different opportunities (things you can achieve in the system) we provide comprehensive documentation for how to achieve that particular accomplishment.
Translating these is very similar. To do this just follow these instructions:
Thanks in advance to every one of you who helps to translate Ubuntu Accomplishments!
Our work server seems to enjoy crashing (at the moment) about once a day – but when I go to look at the console I can’t see anything because the screen has dimmed to black – and as the computer has locked up, I can’t wake the screen up to see if there is a useful kernel panic message.
It turns out my answer lies with /etc/console-tools/config – as this is Debian Squeeze.
See http://serverfault.com/questions/137728/how-do-i-permanently-disable-linuxs-console-screen-saver-system-wide
Next up, I just needed to stop it from dimming the console font – adding this to /etc/rc.local seems to help :
setterm -half-bright off
Today we released the highly-anticipated Ubuntu 12.04 LTS release after a busy six month development cycle. The release is available in Desktop (see OMG! Ubuntu!’s great summary), Server, and Cloud Infrastructure form. You can also install the desktop easily from Windows by clicking here.
I am hugely proud of Ubuntu 12.04 LTS; I believe it is the best and bravest release we have ever shipped, and I am delighted to see Ubuntu’s continued progress in delivering a simple, elegant, and powerful Free Software platform for the Desktop, Server, and Cloud.
Aside from the release, the Ubuntu 12.04 cycle was in my mind an evolutionary cycle for us as a project. The focus on quality was firm and unrelenting; initiatives such as gated trunks, acceptance criteria, automated testing, and a strong focus on growing a testing community and widening our manual tests, all contributed to delivering a solid release. Canonical as a company continued to see a lot of growth, as did our community with initiatives such as the Developer Advisory team, application developer focused outreach, and our continued growth of the Juju charming community. I am not only proud of the 12.04 LTS release, but also of these workflow and growth improvements we also made as a community that are not immediately visible in the release. Thank-you to everyone who helped drive this important work.
Thank-you also to everyone of you who has participated in this release, whether you have worked on packages, provided testing, documentation, translations, support, advocacy, or anything else. Ubuntu really is a community effort, and without our wonderful community of contributors and supporters we would be nothing. Thank-you for all of your hard work and fantastic efforts.
After a busy six months let’s all take a few minutes to take a step back and be proud of what we accomplished. Rock and roll.