My annual Dropbox renewal date was coming up, and I thought to myself “I’m working with servers all the time. I shouldn’t need to pay someone else for this.” I was also knee deep in a math course, so I felt like procrastinating.
I’m really happy with the result, so I thought I would explain it for anyone else who wants to do the same. Here’s what I was aiming for:
Safe, convenient archiving for big files.
Instant sync between devices for stuff I’m working on.
Access over LAN from home, and over the Internet from anywhere else.
Regular, encrypted offsite backups.
Compact, low power hardware that I can stick in a closet and forget about.
Some semblance of security, at least so a compromised service won’t put the rest of the system at risk.
First, you need to be running Ubuntu 12.10 with the latest version of the Ubuntu defaults builder — 0.35. I assume you already know about the defaults builder, since you are making a localized ISO. If you do not, start with this explanation about localized images. Don’t worry: the defaults builder is a great tool that makes this very easy!
The defaults builder template has been updated to include a “ubiquity-slideshow” folder. Let’s open a terminal and create a new defaults package to play around:
That will create a fresh defaults source package in a folder named “ubuntuway-defaults”. Open that, then open “ubiquity-slideshow”.
As you might have guessed, you get to customize the slides! Open “slides.”
We put slides in this folder, in almost exactly the way they are organized with ubiquity-slideshow itself. Now would be a good time to install ubiquity-slideshow-ubuntu so you can use the base files as reference. Make sure you have at least version 61, because things have changed since Ubuntu 12.04.
With the defaults package, you get to extend /usr/share/ubiquity-slideshow/slides/l10n.
Back in our defaults package, let’s start by adding some locales. We are going to add translated text and screenshots for en@piglatin. To start, we create a new folder: “en@piglatin.”
The way this works is the slideshow will search the extra locale folder for a language and, if a particular file is available for that language, it will use it instead of the default. For example, we could replace welcome.jpg for the “it” locale, so when someone installs in Italian that picture will appear instead of the original welcome.jpg.
Let’s replace welcome.jpg for the en@piglatin locale! To replace a file, the easiest thing is to copy where it is in /usr/share/ubiquity-slideshow/slides. You can see there’s a screenshots folder there, with a bunch of screenshots. So, in our own “en@piglatin” folder, we’ll add a screenshots folder. Of course, what you would normally do is look at the original welcome.jpg and create something similar that works for your locale and your disk image, making sure to keep the same dimensions. I’m going to cheat a little.
One problem with the slideshow is that the screenshots are always in English. Now, you can include translated screenshots. As with anything else here, these go on top of the other files. An Ubuntu install in your language will show the translated screenshots, while an install in English (or any other language) will show the original English screenshots. There isn’t an actual Pig Latin Ubuntu for some reason, so I will translate a screenshot into French for an example.
Some rules of thumb for taking screenshots, if you don’t want to (or it isn’t practical to) do the same thing as the original:
Do something practical, like search for a photo or read a web page: don’t open every menu in an application to demonstrate its features.
You probably don’t want to have all your own stuff there for the world to see, but if you have some time try to invent a person. It’s just a little more fun than showing a blank photo manager with “Guest” at the top right of the screen.
Use the defaults! Create a fresh user account and make sure you don’t touch the font size or the background picture.
Make it look good, and if following the above rules makes it bad then please disregard them :)
I went ahead and created a translated screenshot to replace usc.jpg. I took a screenshot of the entire screen, then I opened it in GIMP and scaled to 60% with interpolation set to “Sinc (Lanczos3)”. (You are welcome to choose whatever interpolation works well for the job at hand, of course). After scaling, I used the crop tool, setting a fixed size of 448×304 pixels and leaving a 10×10 border around the application’s main window. (Just line up the box from the crop tool with the top left of the window, then add “-10” to each of the Position number fields).
I saved the picture as usc.jpg and added it to the screenshots folder, right beside welcome.jpg. You may add screenshots for as many languages as you want, as long as they fit on the CD, but please keep in mind there is a high maintenance cost.
Now we can try this thing! Open a terminal: we’re going to build a defaults package and see what happens.
A package file should appear in the parent directory, called ubuntuway-defaults_0.1_all.deb. Just double click the file and choose Install. To see this in action, you also need to install ubiquity-slideshow-ubuntu and download the slideshow testing tool (Slideshow.py). Sorry, just a little more terminal stuff ahead.
Open a terminal pointed to wherever you downloaded Slideshow.py.
We’re going to add some information that we know will be useful for people who receive this disk image, and we will translate some stuff into Pig Latin as an example. The files we need to replace are called welcome.html and gethelp.html, and they’re html files, so if you know HTML it will be a piece of cake.
Again, the easiest thing is to find the files we need from the base ubiquity-slideshow and copy them. In this case, we’ll copy and paste the files and then edit them with our changes. But before you do that, remember that the slideshow is very likely to be available in your language. Before you copy slides from /usr/share/ubiquity-slideshow/slides, look for them under your locale at /usr/share/ubiquity-slideshow/slides/l10n.
With this example, there is (of course) no Pig Latin translation to base on, so we will just add some new stuff on top of the English slideshow. In theory, we could actually translate all the slides to Pig Latin here, but that would make a very poor example because it shouldn’t be necessary: the best practice for this part is to do translations in the ubiquity-slideshow project, and then just tweak those translations in the defaults package.
Open welcome.html in your favourite text editor, look for the content, and do what you want. Be careful, though: a syntax error can cause all sorts of problems.
To see the changes we need to build the package again.
sudo dpkg -i ../ubuntuway-defaults_0.1_all.deb
./Slideshow.py --path=/usr/share/ubiquity-slideshow --locale='en@piglatin'
Now that we have the defaults package figured out, we can go one step further: build a disk image!
This will take a while. When it’s done, it will spit out a file called livecd.ubuntu.iso. Just load that in VirtualBox or something of the sort. When you install, it should look exactly like the preview. (Assuming you use a language that can be selected in Ubiquity, and that language has been selected).
I’m home from UDS-Q in lovely Oakland, California! Okay, I actually got home about four days ago, but I’m slow with these things. It was an interesting week with lots of interesting people. I’ll try to cram it into this post…
The Ubuntu Ecosystem (with a bonus secret session)
I attended a strange session on Monday, called The Ubuntu Ecosystem Part 1 (of 2). We don’t know who scheduled it, or why, or what we were meant to talk about, but it had an alluring title and the room was packed with people. Eventually, Jono stepped in to lead the session and it actually turned into a really nice chat about how Ubuntu is doing as a platform for developers outside the project itself. The session was removed from the schedule, but I think the session’s notes are interesting anyway. It was a good lead-in: app developers were a big topic for the whole week.
There was another session on Tuesday morning: App Developer external outreach. This one was quite interesting. Many different points of view emerged. When we talk about app developers, we tend to be preaching to the choir: we’re often grabbing people who already happen to be making, or interested in making, Linux desktop apps in general. I think Stuart Langridge said it best here: if there is a Linux desktop app that is incompatible with Ubuntu, it’s because they don’t like us. He also challenged the people in the room to name a single Linux app that doesn’t run on Ubuntu already. (I think Stuart is brilliant, by the way). I know there are a few, but what’s in the way is more packaging mumbo jumbo than the software itself. There are many branches to this. Getting things compatible, and getting things packaged and in Software Centre, are two or three different discussions.
Another bit of strangeness is we really don’t seem to be sure what we mean by “app developer.” Do web apps count? Games? For this discussion, at least, “app developer” seemed to be anyone who makes software. I wonder if we should be careful using “apps” as a catch-all without defining it.
So, most of the session was brainstorming where we can go to talk to developers who haven’t thought about building for Ubuntu, and how to get them on our side. There is a lot of software (especially games) that is almost platform independent, and in some cases making that software run on Ubuntu is as simple as the developer choosing to support Ubuntu. There were some interesting ideas about writing articles for magazines and media sites, defining target audiences (demographics?), and making a solid business case for people who like those kinds of things.
At one of the app developer sessions, somebody mentioned it would be nice if there was an Ubuntu presence at places like game development conferences, and there wasn’t much interest. The big one is that Canonical doesn’t really have the resources for it. I wish there were. In terms of third party developers making and supporting stuff for Ubuntu, that weren’t doing it before, I think there is one place where we can say this is really going well at the moment: indie games. No, this doesn’t involve using Qt or GTK or lenses or any of our fancy notification APIs, or even packaging (most of the time). But there are thousands and thousands of people who have paid for, downloaded and played Linux versions of games from sources like the Humble Bundle, likely using Ubuntu, and many indie developers are seriously looking to build their games for Linux so they can reach that audience. That is a heck of an opportunity and I think it needs to be appreciated and nurtured or it will go away as quickly as it came.
Making life easy for app developers
So, continuing along that trend, we also had a productive session called Upstream App Developer Documentation. This is something I have been really glad to see over at developer.ubuntu.com, and it was nice to learn we are on the same page here: great progress, but there is still work to be done!
One thing the site needs is content, so if you’re lovely and talented, think about submitting a tutorial for the Resources section. It would definitely be appreciated.
We talked about making it a little clearer that the site is dynamic, so people might be encouraged to approach it a little differently. We also discussed shiny ways to present API docs. The site has a good start there — particularly with its selection of a target Ubuntu version — but it is so far a little limited in scope and not as shiny as it could be. Alberto Ruiz is working on a neat Django-powered documentation site called GDN, so ideally we can fit these things together.
I missed a chunk of Monday — including my own session — because I was trying to sleep off a headache. So, we did the ubiquity-slideshow session, Installer Slideshow checkup and planning, on Tuesday! There weren’t a lot of people there, but I think we had an interesting chat, and it continued nicely in the hallway session later on. It was nice to meet some people who work on installer slideshows for different Ubuntu flavours, and we arrived on a few things to work on for Ubuntu 12.10.
I’m going to make a real start allowing translators to localize screenshots. This is a tough problem because of the tight schedule close to release, so it won’t be finished for 12.10, but I want to have something. Actually creating translated screenshots is part of the puzzle, and that will be similar to what the documentation team does but with some little decorations. Chances are I will be writing about it in the future, and it will involve some magical scripts by Jeremy Bicha as well as some funny manual work to make things look pretty. That bit is kind of entertaining anyway.
The next puzzle is actually getting those localized screenshots to users. They can’t live on the install CD because there just is not enough space (and even if there was, we’d be adding a lot of files that don’t do anything). In the future they might live on a web service, but for 12.10 I’m looking at localized ISOs. There was a great session about that: Localized ISO community growth, Quantal plans. This is an amazing project where loco teams build their own Ubuntu install CDs (like the Italian CD), completely ready to go with a translation of their choice, with extra goodies like custom Firefox bookmarks and Rhythmbox radio stations. I will be playing with slideshow customization in the ISO builder so translated screenshots can be added to language-specific install CDs.
Updates, sound themes and stuff
On Monday morning, there was a session titled Sound Theme, which was mostly a quick update about Ubuntu’s new, upcoming sound theme. I think that project is in good hands. It wasn’t finished last cycle because it’s actually a pretty big piece of work: this isn’t just the startup sound. Having seen how much work is going into this, I really look forward to where it goes.
Take a look at pkgme! I don’t remember the session at this point, but I was told the goal is to make packaging an application as simple as one command in many cases. (This way, an app developer doesn’t have to read the packaging guide and wonder why he needs a patch system for his own project). It sounds quite beautiful.
This cycle, I will be working a little bit with Michael Terry to implement the Software Updates specification. My goal is to get updates presented in a tree list where packages are collapsed beneath their respective applications. So, an update for Firefox will be presented with a single list item that says “Firefox Web Browser” along with a pretty icon, instead of a list of scary package names. This is going to be exciting! I’ll keep you posted, probably with the odd Twitter update.
As always, I have decided to actually use IRC. I do this every UDS. Hold me to it, okay? I actually set Empathy to connect to Freenode along with my other accounts this time, so it’s progress! (Yeah, I know, Empathy isn’t very good at IRC, but this way it will blend nicely with the background).
Oh, while I’m talking about random things, I’d just like to add a thanks for the t-shirts at this UDS! I love the design, and they’re super comfortable, too. So, whoever was in charge of that, you’re brilliant.
And my favourite plenaries
Dave Walker’s MAAS demo gave me a powerful urge to buy eight computers and a lot of network cables just to play with that stuff, even though I have no use for it at all. It’s an impressive demo.
The lightning talks! I don’t know where or if a video is posted, but there was a fun lightning talk full of trivia about the infrastructure behind UDS. Metres of network cable, distance travelled by our heroic technicians, amount of data downloaded and uploaded, the wifi setup — that sort of thing. I hope it gets posted somewhere.
Ubuntu at Google with Thomas Bushnell. All about how Google is doing with Ubuntu deployed as a desktop operating system for thousands of employees. It’s always interesting to learn about Ubuntu desktops being used in big operations, especially when the resulting software can still be recognized as Ubuntu — which, in this case, it sounds like it is.
Electronic Arts with Richard Hillman, EA’s chief creative director. I think some people are disappointed that EA hasn’t gone and announced SimCity 5 for Ubuntu or something (okay, that would be pretty great), but I was perfectly happy to learn it’s a cautious, ongoing investigation instead of someone deciding to throw an expensive product at Ubuntu and hoping it sticks. This way, it could really work well in the long term — and there is room to sort out any problems along the way. After all, Ubuntu isn’t perfect yet. The Q&A after this talk is really informative, and it connects with the sessions we had about app developer outreach. It’s worth a watch!
Thanks for the fantastic event, everyone! As usual I learned a lot, met some cool people, felt very humbled, and am writing way too much stuff in one blog post. And this isn’t even half of it. As usual, I should have made daily posts like all the cool people do. Oh well. See you next year! Quantal Quetzal (that’s pronounced ketzal) will be glorious.
I’m just going to go and say it: I know it’s important to people, but that isn’t going to happen for Ubuntu 12.04. I’d love to talk about it in the future, and it might happen, as things change, in another release. Here is why it isn’t happening today:
The install slideshow appears for about fifteen minutes, for every Ubuntu user who does a full install from the desktop CD. And then it never appears again. It is fundamentally incapable of being a reference guide. And that’s good, because we already have many excellent reference guides and support sites. The slideshow is not trying to be definitive or in any way, shape or form a distinct source of information.
What is it, then? I want it to be a simple source of ideas, inspiration, and – most importantly – confidence as people dive in to Ubuntu. And I want it to be those three things without sounding any more important than it is (which is not at all). This is a very little thing. My path is rather erratic, but there are a few points I’m quite sure about.
When you help someone think “I can do amazing stuff with Ubuntu that I couldn’t do before,” you’re doing it right (and you deserve some kind of trophy). The “I can” is important, because we do have a large number of “they can” situations, and those aren’t the same. It’s good if people feel powerful right out of the gate.
Two thoughts that do not inspire confidence: “I’d better memorize this” and “OMG so much stuff!”. These thoughts come as soon as you present new information that isn’t a natural part of old information. Ideally, to avoid them, you’ll present “new” information that was already on the user’s mind, and keep the stakes low: if anyone is worried what might happen if they “forget” something, it isn’t working. I want people to know what’s there, but they don’t need to know any details yet. Ubuntu is well designed, anyway: everything will just work as long as people trust it to work.
There is a particular quota for things we should introduce, and that should vary depending on how important each of those things is. We can’t put six things on the screen at once and expect any of those things to be noticed. Right now, I think it’s all maxed out. I don’t think there is room for any more slides’-worth of information, so the ideal thing is refinement (and maybe even removal) of what’s already there. If anything is being added, something else needs to be removed, or at least changed.
We need to be sensitive to the fact that people are currently installing a new operating system, perhaps for the first time, so there is already a lot of new stuff going on.
I know it isn’t doing this yet, but I think a really good installer slideshow will do lot of showing, and much less telling. When we just tell about things, people compare what they’re being told against their existing assumptions (“you probably have to do that with some terminal command,” “I bet they’re all neck-beards”). Quite often, it ends up with the assumptions winning.
“So, that’s a lot of babbling, Dylan, but why Ask Ubuntu and not the forums?”
This one is a mix of things.
The install slideshow ends with a slide that is about getting help. Right now it’s pretty heavy on tech support, but the idea is “don’t worry, you are not alone!”
It has a new Twitter thing which I think plays an interesting role, but its main copy points at Ask Ubuntu, and it ends with a link to ubuntu.com/support. Now, I didn’t actually write the copy here, but I’d like to explain what I like about it.
I like that it links to Ask Ubuntu as something to look at right now, because I think it’s possible to show instead of just tell about Ubuntu’s community support. The second link is pretty well just ubuntu.com, so I’m hoping the viewer will think “I already know that,” instead of actually worrying about writing it down, or even looking at it. If we just throw in a third thing, like ubuntuforums.org, I think we’re wandering above the (very unscientific) new things quota, as we start having these two brand new items competing for the same kind of attention, both for the same reason. It’s not unlike having two web browsers installed by default.
Why Ask Ubuntu and not the forums, then? I’m not terribly invested either way, but let’s just compare the two landing pages.
With Ubuntu Forums, the information available at a glance is that you really need to REGISTER, there are a lot of categories, there’s a category for absolute beginners, and (if you’re especially observant) people post quite frequently. The last two pieces of information are quite compelling, but I’m put off by how far the viewer of the slideshow is from actually seeing people get help.
I think Ask Ubuntu just does a better job for the quick glance – “hey, this place looks helpful” – kind of thing. First, there is no obligation to register, and I like that for making things a little more relaxed. Second, the site is all about Q and A and the landing page has a prominent list of questions and their answers. The site also has an “Ask a question” button whether you’re signed in or not, so I think it’s a little more inviting. I think someone can see Ask Ubuntu and understand it in three seconds.
Now, I love the forums, but I think the slideshow needs to be streamlined, and I think Ask Ubuntu gives a more streamlined demo than Ubuntu Forums. Actually, I think we’d be doing the forums a disservice here. There’s a risk that someone’s first taste of the forums will be “whoa, too much new stuff, not now!” (in some fashion), because that’s just the nature of the forums: the forums are big, and complex, and there are a lot of fascinating people who do a lot of different stuff. It’s a huge piece of the Ubuntu community, and it doesn’t fit well in the small snippet of time the slideshow aims to consume, much as the slideshow isn’t linking straight to the Wiki or the IRC page.
I think there’s lots of room to talk about the Ubuntu community in the slideshow, but we need to be gentle. Let’s talk about the forums somewhere that a person can discover the site when they’d like, and be able to give it a full fifteen minutes. There are some great places to bring up UF. There’s the default browser bookmarks, there’s the (kind of neglected) Get More Help section in the Ubuntu Desktop Guide, and there’s ubuntu.com/support. The forums can appear in lots of useful and interesting places, and I’d love to see that happen.
But the slideshow is not something that you can just dump something on. It’s not a big truck. It’s a series of slides!
Something interesting is going on with Gnome Shell and Unity: it is becoming very normal to search for applications. But search is more than just typing something’s name in a box: With the web, search has become synonymous with asking questions and getting answers. With really good searching, people can find what they need by saying what they want to do. So, I think searching for applications is something that should be addressed strongly to provide a great experience.
I have a hunch that one part of this puzzle is already mostly here. It just needs some glue. Almost every application is associated with at least one category, like BlocksGame and VectorGraphics. I’m hoping we can leverage that data to make searching more excellent.
Now, just in case I’ve lost anyone: there is cake involved!
If enough people enter enough data, I’m hoping we’ll see some interesting trends in how people describe applications. Ideally it will all line up and we can create a wonderful thing that expands each standard category into a bunch of searchable keywords. More likely we’ll see where the problems lie in my theory, and of course I’m hoping good things will emerge from that.
So, this is where the true heroes among us venture forth to the website.
Please play with it! It really enjoys the company, and it will only take a few seconds. I promise!
(Sorry about the bumped post. Blogger spat out uglier HTML than usual and I had to pick at it)
David P let me know that some loco teams are interested in using Ubuntu’s installer slideshow on their websites. It could serve as a quick tour of Ubuntu in their language. Lots of people do lots of work to localise this stuff, so using that work in other places sounds fun. I would like to quickly show how to do that with the slideshow. Mostly this is using jQuery and the jQuery.Cycle plugin, so if you just want to make a cool presentation from scratch, that is the place to look.
So, let’s make this simple by using the released package that is shipped in Ubuntu. If you want to make changes or update the localization, let me know and I can write about that (though I hope the Readme in lp:ubiquity-slideshow-ubuntu does the trick).
You can install the installer slideshow for your version of Ubuntu. It is ubiquity-slideshow-ubuntu in the repositories. (Or -kubuntu if you are using Kubuntu, etc). The binary and source packages are also available at the usual place on Launchpad. The actual content we are interested in installs to /usr/share/ubiquity-slideshow. It is all regular HTML, so pretty easy to play with. First, copy the slides folder to somewhere in your home folder; we will work with that now.
Obligatory copyright notice: the slideshow is licensed Creative Commons Attribution-ShareAlike 3. A file with more details installs to /usr/share/doc/ubiquity-slideshow-ubuntu/copyright.
Now, open the slides folder. This may look overwhelming at first, but we will fix that. There are a whole bunch of folders named like loc.zh_TW and each one contains a version of the slideshow’s text for a specific locale (where everything after loc. is the locale code). In addition, each slide in the slideshow is its own file like photos.html and the slideshow itself is glued together by index.html, which has a list of all the slides in order. The slideshow can be told to run with a specific locale, where it loads the slides from that locale’s folder instead of the usual place.
You probably only need one locale, so let’s just deal with that now: open the folder for your locale. (If you don’t know your locale code, this table might help). Now move the contents to the slides folder, replacing the existing English slides. Now delete all the locale folders. (It’s quick to do that in Nautilus: press ctrl+s, enter loc.* for the pattern and hit OK, then delete the selection as usual). We don’t need directory.js, either, so delete that.
Okay, great! Now what?
Let’s fix this up to make it look good on your website. First, open index.html in a text editor.
If your locale is a right-to-left language, add class=”rtl” to the <body> tag. This turns on the right-to-left rules in general.css.
Of course, linking someone to index.html as we have it now is a little boring. I encourage you to copy and paste the #slideshow element and stick it in another web page. It could make a nice decoration. As long as your page loads the slideshow’s css stylesheet, jquery, jquery.cycle and slideshow.js as in the <head> section, it will work out fine. (Though you may need to make some slight changes to general.css so it doesn’t interfere with the rest of your page. The likely offenders are at the top and there is a rule at line 202, affecting all IMG tags, that you may want to remove).
I should point out that this is (and always will be) intended to be used in one place: while installing Ubuntu. So, its design could change drastically. I would love to keep this going, but it’s mostly a lucky coincidence that it fits in websites today.
(It would be neat to see a loco-web-resources project on Launchpad, but I don’t think I’m the guy to spearhead that)
I hope this was helpful. If you have any questions, feel free to leave a comment and I will try to answer.