Hello everyone!<br><br><br><br>For a while, I have been trying out various means of welcoming new users to Ubuntu, showing them around so they can share our excitement about it. Recently, I realized that a slideshow shown in Ubiquity fits the job perfectly!<br>
(See this forum thread: <<a href="http://ubuntuforums.org/showthread.php?p=4217284">http://ubuntuforums.org/showthread.php?p=4217284</a>>)<br><br>-It is unobtrusive. Not a popup; no attention or input demanded whatsoever.<br>
-New users waiting for Ubuntu to install are still a bit lost, may be impatient.<br><br>The slideshow should not really show people <i>how</i> to use Ubuntu, but what they can look for and expect to find. I think that is really all we need to do, since most of the included applications are very well done, do the point that they are self-explanatory. It is better that the user learns by using the software than by reading a scholarly tome which appears to them when they first log in.<br>
The slideshow here could even help to point out usability features such as translations or configurable font sizes.<br><br>Yes, there is even a blueprint over on Launchpad:<br><a href="https://blueprints.launchpad.net/ubuntu/+spec/ubiquity-slideshow">https://blueprints.launchpad.net/ubuntu/+spec/ubiquity-slideshow</a><br>
I went ahead and coded the thing. Progress so far is attached. I really like some of the suggestions in that blueprint, such as to mention the community aspect and places to get help. Mentioning the benefit of setting up an Ubuntu-powered home server could be good, too. Lots of possibilities :)<br>
One thing I think we should avoid like the plague is advertising the OS in there with claims like "now more secure!". The goal here should not be to sell Ubuntu, but to show a new user the things he can find in his new desktop so that he will feel more confident and more happy with the choice. We should not preach to the converted; we should <i>reward </i>the converted with a new and innovative desktop experience they can enjoy, understand and be a part of.<br>
<br><br><br>Overview of the design:<br><br>* Open Projector is an external application. Really just a Python script that displays a very open ended slideshow created following a particular format. Theoretically, this could be ported to Qt... although Glade could make that tricky. At the moment there is the gtk version (open-projector-gtk). This could go in a Debian package fairly happily.<br>
<br>* I believe Open Projector could be quite easily integrated with another Python application such as the Ubiquity GTK front end.<br><br>* Ubiquity-Slideshow would be a separate package (and project). Again, this is split into a few versions, with the only one presently existing being ubiquity-slideshow-ubuntu (dependent on open-projector-gtk). Ubiquity-Slideshow is the data for our slideshow that will be displayed with the Ubiquity installation progress. As you might have guessed, it is of the same format that Open Projector reads.<br>
<br><br><br>The format used by Open Projector is convoluted, but also quite flexible. Slides are all Glade files, and indeed are made up of a bunch of GTK widgets. I chose this path because the slideshow has to be very accessible (desktop integrated!) and translatable. Glade makes both of those things easily possible while still offering a lot of flexibility to people making slides. (More reasons available if you want...). Each slide is actually placed inside its own directory, with that Glade file inside, likely called "slide.glade". The Glade file must have a non-top-level container called "slide". That container and everything inside it will be read as the slide and displayed.<br>
<br>Another thing Open Projector has is "Projectors". These rotate through and display slides inside their host container. ...And that is where the slide metaphor dies down. A slide can, if it wants, have a projector inside of it! The current gnome-app-install slide demonstrates this. The projector iterates through every slide inside of the folder its own slide is in. It reads some data from a folder called "_conf" to decide what order to display the slides in and how quickly to iterate through them.<br>
In the case of the Ubiquity GTK front-end, it would create a Projector whose host_widget is its own container and whose path is "/path/to/ubiquity-slideshow-ubuntu".<br><br><br>Many example slides exist inside <Ubiquity-Slideshow/ubiquity-slideshow-ubuntu>. Of note are:<br>
* gnome-app-install. Embedded projector to display changing contents, alphabetical order set in _conf.<br>* special:thanks. Some fancy GTK widgets. I think it could be interesting to demonstrate the wonderful drag & drop support we have with those widgets<br>
* special:welcome. GtkFixed container allowing for label that overlaps images. Also note that it displays first thanks to projector's _conf/slide_start.<br><br><br><br>Still other things on the Todo list:<br>-Timers for projectors default to an Automatic option (-1). Presently, this does nothing. It should cleverly time each slide to be [ (lifetime of parent slide) / (number of slides) ].<br>
-Translations are not in. Actually, I have no idea how to do this easily. Open Projector doesn't
need translations, but Ubiquity-Slideshow does... although it is just
some static data files. Will I have to do something manually, or is
there a magical system that will figure it out?<br>-Must jump to end of slideshow when signalled<br>-Must switch slides, pause slideshow, hide slideshow when signalled.<br>-Magic callbacks for slides, such as to launch external applications. They probably shouldn't be used (otherwise this could get untidy <i>fast</i>), but they would be nice to have.<br>
<br>This is still detached from Ubiquity. That option will always exist, and that will probably be how this gets worked on since it's quicker than running through Ubiquity. Thus, I need to know what size we should expect the slides to be. Currently they are 640x480 pixels.<br>
<br>Hopefully I didn't miss too much. That's probably my most concise overview yet!<br>So, what needs to be done here is a lot of collaboration, pondering and suggesting:<br>Firstly, we need slides. I am terrible at them, probably becuase I was not in a writing mood when I did the content, and because I am really bad at computer artwork. (I'm also still using Gutsy, which doesn't help).<br>
Secondly, there are some technical hurdles like translations that I cannot quite figure out, since I am still quite new to this development environment.<br>Thirdly, I can't wrap my head around Debian packages. It probably wouldn't hurt to just package open-projector right along with Ubiquity's front-end (and ubiquity-slideshow), skipping the bother altogether while keeping things much simpler to look at.<br>
Lastly, this project needs a home. Is there a way to create a sub-project of Ubiquity for ubiquity-slideshow on Launchpad?<br><br><br><br>Bye,<br>-Dylan McCall<br>