DidRocks' blog

apt-get install freedom

Aller au contenu | Aller au menu | Aller à la recherche

De retour de l'UDS maverick

Un très court billet[1] dans le train de retour pour statuer que je n'ai pas eu/pris le temps de blogguer sur l'UDS maverick (Ubuntu Developer Summit) cette fois-ci.

Pour ceux qui ne connaissent pas l'UDS, il s'agit de la rencontre biannuelle des développeurs et de la communauté Ubuntu pour décider de la direction à prendre pour les 6 prochains mois. Ce cycle, nous étions dans un hôtel près de Bruxelles et de (trop) nombreuses sessions en parrallèles étaient intéressantes.

S'il n'y avait qu'une seule chose à retenir[2] : 10.10.10[3]! Nous ferons tout notre possible pour que la prochaine release d'ubuntu maverick sorte le 10 octobre 2010[4] et par conséquent, ubuntu maverick 10.10 sortira le 10/10/10[5]… Les plus geeks d'entre vous auront fait la relation avec le nombre 42 en binaire :)

La réponse universelle sera donc dans maverick, beaucoup de changements passionnant, aussi bien au niveau du desktop/server que de UNE qui aura droit à une toute nouvelle interface, appellée "unity". Et c'est sans parler d'ubuntu light, de l'intégration avec le cloud, des améliorations d'ubuntu one…

Vous avez aimé lucid ? Le cycle de développement de maverick sera passionnant et un réel nouveau challenge[6] pour Ubuntu et sa communauté, temps de s'y remettre !

Notes

[1] ne vous attendez pas à plus après une nuit de 4h

[2] en fait il y en a beaucoup plus :)

[3] "don't panic"

[4] don't panic ?

[5] don't panic !

[6] vous ai-je déjà dit "don't panic" ? ;)

Quickly 0.4.1 is out!

0.4.1 is a bug fixing release and will be the one in lucid final. Quickly 0.4.1

It contains of course all the goodness of 0.4 version plus some bug fixes that early users encountered:

  • remove ~/.selected_editor detection. Introduced confusion for users who doesn't understand why (nano, most of the time), was triggered instead of gedit (LP: #565586). It's still possible to override the choosen editor with EDITOR or SELECTED_EDITOR environment variables.
  • fix gpg key creation with no email address. Fortunately, new Quickly user won't have to bother that much with gpg key anymore (see 0.4 blog post to see what's still needed to be done)
  • fix again some tutorial issues which had been lost during html -> docbook transition
  • better message and user help when ppa not found
  • add more debugging info in --verbose mode for gpg keys
  • updated translations

0.4.1 should be building soon on the ubuntu builders, keep it hot! ;) Release tarballs are available as usual on Launchpad

Kudos to Lutin for the photo :)

Quickly 0.4 available in lucid!

I'm proud to announce the availability of Quickly 0.4 in lucid. This new release brings shiny new features (more than 6 months of heavy development), lowering again the barrier for opportunistic developers. Development should just be easy and fun! Quickly Logo

Thanks to all awesome contributors making this release happened: Philip Peitsch, Petar Vasić, Jens Persson, Łukasz Jernaś Brian, Jonathan Lange and Shane Fagan. Special kudos to Rick Spencer for his continue devotion to opportunistic development and making quickly-widgets.

What's new in 0.4?

Well, a lot of stuff, but more precisely, let's me highlight some special features from the NEWS file content, containing the full story.

The core

  • One of the main matter for a lot of user was to use space and dashes as their name project. This wasn't available due to a lot of technical and packaging issues. This is part of past now! You can create your awesome "FoO bAr" project and enjoy it!
  • What's new in the core is template inheritance. You can now create a template picking commands from other templates. That made possible releasing the ubuntu-cli template with 0 line of code! Just shipping a new boiler plate. We hope that would help people in their template creation. Of course, it's still possible to override some commands locally.
  • We also check and recreate your credential if you deleted it in Launchpad inadvertently. Less thing to care about for you! Let's focus on your app!
  • Did you remember how sweet is Quickly regarding shell completion? Now the same has been extended to Quickly option itself.
  • An apport hook for Quickly itself. To report bugs on Quickly, do not hesitate 'ubuntu-bug quickly' on Ubuntu to fetch all needed information on our side.
  • The core now support -- arguments for subcommands like quickly run -- -help won't run help from Quickly itself but from your app.
  • A Quickly API is available, for people wanting to communicate or integrate Quickly to an IDE, it's fully possible to embed Quickly in your app, spread the Quickly love!

The ubuntu-application template and derivatives:

ubuntu-project renamed

One of the main feature of 0.2.x was the ubuntu-project template. This one has been renamed to ubuntu-application. Your app will be transitioned automatically to this new template thanks to the core supporting upgrade in templates and projects now[1]

Consequently, no more quickly create ubuntu-project fooby, but quickly create ubuntu-application fooby!

GPG key setup

What seemed to have given a lot of trouble to Quickly users in 0.2.x was the gpg key setup. For those who don't know, this key is needed when you upload your package to launchpad. Now, Quickly is more clever about this and doesn't bring random bits to create your email address. This happens in two steps:

  1. collecting all available email addresses that Quickly can find and order them in the best possible order (DEBEMAIL, EMAIL, the AUTHOR file, setup.py your Launchpad emails account…). The thing is that some of those addresses may not be yours if more than one person works on the project, that's where step 2 occurs.
  2. compare with all available local GPG key and those uploaded to launchpad.[2]. This enables us to know who YOU are and what key you should use to sign your package. This part involved patching Launchpad and fun hack evening with jml ;)

Another patch for ssh key has been approved in Launchpad too, bit we will integrate the client side in 0.6. Easy and fun, didn't I say that already?

Choosing and sharing to multiple ppa and bzr branches.

You can now choose to which ppa you want to share/release your code. You can use Use --ppa ppaname or --ppa team/ppaname (shell completion even work with that! I must admit if it's very slow (more than 10s) due to a lot of requests to Launchpad). You can setting that up definitively by quickly configure ppa <ppa_name>.

The same with bzr branch is also possible (quickly configure bzr <bzr_branch>).

Easier licensing

Previously, license command asked you to fill a Copyright file which can contain tweaked copyright and author names. Now, this file has been removed and we keep only one AUTHORS file where you put your name and those participating in the project. You can create your own COPYING file[3] for your own licence, otherwise, it will license with command line supplied license (MIT has been added). At first share/release, the license is now automagic if you didn't licensed previously, and it will take your name/email and license your proect under GPLV3. Each share/release command still update the license to all your files as in 0.2.x.

Again, all your project created with 0.2 will be migrated automatically to this scheme. Don't bother about about licensing if it doesn't interest you. Quickly is doing the right thing (at least, we try) for you.

Automatic about dialog

The about dialog is now fiddled automatically with up-to-date information at each "release" command. It will add your logo, the current version of the program, home page, the copyright, the authors, license… No more need to care about having this updated manually ! (the Credits show the authors, the licence… the licence :))

A Propos de... Quickly 0.4

hum, it seems that Rick is already enjoying using spaces in his project name ;)

New versionning scheme

The ubuntu-application template brings a new version scheme to avoid errors on failed share or release package (the critical section has been narrowed). So, if you release this month (April 2010), your applications would be 10.04. If you release a new version again in the same month, it will be 10.04.1 and so on… When you share, it just takse the last version and adds -publicX like 10.04.1-public1, then 10.04.1-public2 and so on. Of course, it's still possible to provide your own version as a parameter of quickly release or quickly share, but you won't have the full sweet safety field of Quickly for avoiding rejected package :)

Enhanced release command.

Making a release is quite tedious. In addition to push your code in your branch and the package (well, that's the goal of the ubuntu-application template after all), you should also release an upstream tarball, signing it, pushing those, create a milestone, attaching them and also provide a list of what's NEW for the release note. Seems a long task, no? Well, good news is that quickly release does all of this for you! for completing and releasing the changelog as a release note, it takes relevant message from quickly save "your message" or manual bzr commit to create a changelog with all those information. Next step in 0.6 will be to make a Launchpad announce the new release automatically, but this requires again extending the API, so, some Launchpad hacking[4].

You can have a look here for a dummy example (see "Series and milestones").

Adding dependencies

python-distutils-extra rocks at detecting with a lot of magic your python dependencies. Unfortunately, it can't detect the dependencies for non python stuff and manually launched commands. It's now possible to provide a manual list of dependencies for your app. For this, quickly configure dependencies is your new sweet friend.

Silent create/package/share/release commands

All those command now will show some dots about the progress (--verbose for full log), but filter annoying output to only focus on what matters. If some warnings and errors are encounters, it will print them in a summary asking you if you wish to continue

$ quickly release

Récupération de la configuration Launchpad

Connexion à Launchpad réussie

......................

--

Command returned some ERRORS:

--

ERROR: Python module slip_coverconfig not found

--

Command returned some WARNINGS:

--

WARNING: the following files are not recognized by DistUtilsExtra.auto:

bin/slip-coverc

--

Do you want to continue (this is not safe!)? y/n: y

Paquet Ubuntu créé dans le répertoire debian/

......

This is to avoid the whole bunch of information that can lost people in focusing on the important ones.

Apport and Launchpad Integration

Now, all projects will contain an apport hook and a launchpad integration in the menu. Of course, they only appears if you have the current package integrated. So, the project will still work on other distros, just not showing the integration.

Currently this only works for installed package (so, you can't run that for trunk). Existing project are updated as well to get this goodness. Some more work are waiting approval to get it work from trunk too (liblaunchpad waiting merges) Launchpad Integration

New debug command

Just run quickly debug for some sweetness in the debug world with winpdb!

Misc

  • Some commands have been renamed, to avoid cluttering you with multiple commands and being more descriptive:
  • quickly glade is now quickly design
  • quickly lp-project-change is now quickly configure lp-project (configure is used for bzr, dependencies, lp-project, ppa)
  • quickly dialog is now quickly add dialog to enable later boilerplate addition.
  • The tutorial is now in docbook format and ready for translation
  • The boiler plate is now fully i18n compliant

ubuntu-cli template

So, with the importing tempate feature, here is a new template resulting from some requests about building command line only application. Again, there is 0 line of code, just importing commands from ubuntu-application template!

after running quickly create ubuntu-cli "my CLI app", I got a new fresh my-cli-app program showing: quickly run foo

I'm launched and my args are: foo

You also have a full of default binded option like:

$ quickly run help

Usage: my-cli-app options

Options:

--version show program's version number and exit

-h, --help show this help message and exit

-d, --debug Print the maximum debugging info (implies -vv)

-v, --verbose set error_level output to warning, info, and then debug

-f FOO, --foo=FOO foo should be assigned to bar@@

those are good examples to see how to handle debugging level and random command line options (with eventually, parameters, counting occurrences of a parameter, …).

Of course, only a subset of ubuntu-application commands are available in this template (no quickly add dialog, neither quickly design, for instance ;)). Hope that will bring fun for making CLI application too!

ubuntu-pygame template

Who said developers don't have fun? Rick provided a new template for developing games:

ubuntu pygame template

Like ubuntu-cli, ubuntu-pygame shares a large part of ubuntu-application commands and is just a new boilerplate (no command written, again). You should check out the full and complete tutorial available at quickly tutorial

What's next?

Well, that was only a subpart of what was backed out in Quickly 0.4. We have tons of fixes and small enhancements that would have deserve to be put there. This post is already quite long so, I won't continue on. Check out the NEWS file if you want the full story!

Now, let's see what will be in 0.6. We will discuss the new features at next UDS, hope you can join either in person or by IRC. One of the next features will be nautilus integration thanks to the API. Some prototypes are already available as you can see them below. Launching a dedicated gedit session with some plugin enabled is also on track.

Nautilus outside any project nautilus inside an ubuntu-application project

Let's keep it hot and don't hesitate to comment on the new features. Also, what do you think should be added to 0.6 (maybe renamed to Quickly 10.10)?

We have already a good bunch of documentation for Quickly, even if some like my blog posts should be refreshed for 0.4, the wiki page is still a good starting point, and I heard that there will be soon some new videos available…

Hope you will enjoy 0.4 and we always welcome your feedback on #quickly on freenode!

Notes

[1] so, you will understand that once running 0.4, you won't be able to switch back to 0.2.x due to this transition (a lot of things will happen the first time you will either launch a command or use shell completion in your existing project. The good news is that, you don't have even to care about this ;)

[2] it'll create one for you if you don't have any. However, it won't still upload it to Launchpad as it raises some security concerns by the launchpad guys. We will try to tackle those issues at Maverick UDS with them to have clearly nothing to do for 0.6.

[3] no more LICENCE one

[4] should be easier than the gpg/ssh stuff though

Moving away from (screen + irssi) to (bip + weechat)

I have been a highly screen + irssi user for some years running on my server and then, just sshing to it. Apart from the high latency on typing you can get when your connection begins to lag, everything fulfil my need.

However, last week, pitti told me that he was using a wonderful feature which is called "smart filtering". If you are a long time IRC user and particularly if you go to crowded channels, you know how seeing all this join/part messages can be annoying. Of course, most of IRC clients can hide all join/part/quit/away messages on selected channels.

But smart filtering brings the concept a little bit further: you can tell "show me /quit /join only if the user was speaking on the channel in the last xxx minutes". Great to not speak into the wild when you're not always looking at your channel user list every minute! Unfortunately, it seems there is no such extension for irssi. As writing a plugin in perl is not my taste, I moved to weechat where this feature has been implemented. It was the right time to try as well bip (an IRC proxy).

bip gaves me some hard time because intrepid[1] version is buggy: it preprends backlogs with - (and xchat doesn't highlight the channel if a message begins with "-") and adds "+" to other messages. Well, updating it just fix it, but it took some time to figure out (xchat was hiding those - et +).

Once done, I tried weechat, which seems to be a very great IRC client in a modular architecture. No more latency in typing things as the client is now local and connecting to my bip proxy. The only annoying part is that I'm connected to 4 different IRC networks (and consequently, 4 bip networks) and buffers[2] aren't properly ordered after restarting it. I have to run /layout apply 3 times to get the correct ordering at each start :( This is a known bug.

Then, I installed the notification script. The annoying bit for me was that I got spammed with too many notifications:

  • you are notified everytime someone highlight you in a channel (seems logical for a notification script)
  • you are notified at each private message someone sent you!

And there is where the nightmare begin: if you begin with a long private conversation to someone, you'll get spammed for endless time (especially when notification are shown for 10 secondes at each message!). To fix that, I've just hack quickly on notify.py script (yes, it's in python) to add a smart_notification option (off by default).

If you run: /set plugins.var.python.notify.smart_notification on then smart notification is activated. That means that you won't get notified if someone is either highlighting you in the current channel you have a buffer opened to, or in your current private conversation. That means, logically, you won't get notification if you're looking at the channel you are currently looking at. You'll only see the red/yellow/whatever color line weechat highlight your text. Of course, if your are highlighted not in your current buffer (someone is beginning a private conversation you didn't switch to), you'll still be notified. The idea is only to warn you if you have something that needs to get your attention you're not currently looking at right now, sweet isn't? :)

The new version (0.0.4) is sent upstream, if it won't get it before lucid, I'll upload it to Ubuntu to get it there.

You can find this new version there: notify.py

Notes

[1] yes, my server runs intrepid, I'll reinstall a clean architecture when lucid will be released

[2] name of channel or private window screen

Nouvelle année, nouveau travail.

La nouvelle année arrive et il était temps de changer de vie professionnellement parlant.

Je quitte donc une société éditrice de logiciel propriétaire pour un travail plus en relation avec le logiciel Libre.

Mais pourquoi publier tout cela sur le planet ubuntu francophone et quel est le lien avec ce dernier ? Tout simplement parce que mon nouvel employeur est Canonical Ltd, sponsor officiel d'Ubuntu!

Je vais donc continuer une part de mes actions que je faisais précédemment en tant que contributeur bénévole (packager et mettre à jour GNOME dans Ubuntu) en joignant la desktop team de Canonical. Je serais également responsable du packaging de la version Ubuntu Netbook Edition (précédemment nommée Ubuntu Netbook Remix). Bref, que du bonheur de pouvoir enfin travailler à plein temps sur des projets libres, et encore plus sur Ubuntu même !

Je continuerai bien entendu à vous donner des informations sur la distribution (par exemple, le suivi des Ubuntu Developer Summit) et la vie de la communauté ubuntu-fr (restant pour l'instant secrétaire de l'association). J'essayerai de m'accorder plus de temps afin de partager ici un peu plus ce qu'il se fait sur la version de développement de la distribution.

L'année s'annonce bien en résumé, vivement lundi. :)

Ubuntu Party Paris: 5 000 visitors \o/

It's another milestone that the ubuntu-fr French team has achieved this week-end. We had in Paris 5 000 attendees[1] at the Karmic Koala ubuntu party!

After the ubuntu release party (just a few people, mainly ubuntu-fr directly related, joining to have a great time on a dinner) we finished to prepare the Ubuntu Party as our last sprint on Karmic. Only few core organizers[2] but more than 100 of volunteers all over the week-end were present to give an hand on helping people, being at the different booths and others miscellaneous tasks!

mark.jpg This party was particular in the sense that Mark Shuttleworth visited us on Saturday, following the Party the whole day. Mark's kindness was greatly appreciated inside the community and a lot of people have been able to discuss with him. He also had, of course, some interviews at the radio and by press... The first day was concluded by his plenary session where a lot of questions has been answered too. We hope to be able to broadcast the videos very soon.

plenary9.10.jpg

The public seems to have enjoyed this event and that was our goal! You can see below before the plenary when Tristan Nitot asked to "raise both hands if you use Ubuntu!"

use_ubuntu9.10.jpg

We also had a roundtable on Internet neutrality which had attracted a bunch of people. Internet neutrality is unquestionably one of next hot subject that FLOSS has to dealt with great care.

hadopi_table_ronde9.10.jpg

As usual, our party tries to cover a lot of different activities for a wide range of public: obviously, people are able to install Ubuntu with a volunteer, but we also had a bug jam, workshops (drupal and "how to make a conference"), multiple multimedia demonstrations (gimp, video, music, compiz, cairo-dock), video games...

Some non profit organizations related to FLOSS also had a booth to show the whole "Libre" ecosystem to the visitors and present the philosophy behind Ubuntu, and more generally, the free software movement. Namely, April, Framasoft, FDN and La Quadrature du Net joined the pary!

couloir9.10.jpg

As at each Party, we also had our ubuntu-fr booth with a lot of goodies : our French localized ubuntu CD, stickers, Tee-Shirts, Framakey Ubuntu-fr remix (USB key), our updated mug, Simple Comme Ubuntu (ubuntu book)... I'll specifically talk about them in the following days.

boutique9.10.jpg

Conferences was also a great place to get and covered interesting topics as on other GNU/Linux distributions (debian, mandriva, fedora...), how to contribute, design experience at Canonical, free software in France... In a nutshell, more than 20 conferences over the two days.

We also gave different lessons on discovering ubuntu, GNU/Linux shell learning level 1 and 2, customizing your desktop... formations9.10.jpg

Of course, Oxyradio covered the whole event and made possible the link with people who can't attend it.

oxyradio9.10.jpg

5000 attendees is just awesome for a voluntary only non profit organization. Thanks to everyone who made this possible in a 4 months preparation. It's time to get some rest until we have to start again for another round!

groupe9.10.jpg

Photos licenses:

* Tristan Nitot / CC BY-NC-SA 2.0
* Nicolas Barcet / CC BY 2.0
* Raps / CC BY-SA 2.0

Notes

[1] using the La cite des sciences et de l'industrie count system

[2] thanks again to olive for all his work

UDS Lucid Jour 5

Dernier jour et il est déjà temps de se quitter…

L'UDS a été très bon, de nombreux sujets couverts pour cette future LTS lucid, et des matchs d'antologie OpenSuse (vuntz) VS Ubuntu (seb128) à wii sport, mais revenons d'abord aux sessions de ce vendredi.

La première fut sur la table round de conclusion de la desktop track. IL y a eu un résumé des décisions prises comme celle de la suppression de The Gimp. Encore une fois, je vous urge de voir la session vidéo disponible (toutes les sessions sont disponibles sur blip tv).

J'ai ensuite assisté à "Prepare Firefox for Major-Minor Version upgrades" où une politique particulière (tout en restant sur le principe une version stable sortie = on ne change pas l'expérience utilisateur en essayant de rester sur la même version) sera mise en place. Beaucoup de discussion avec la team Mozilla dans ce sens.

Concernant la session suivante "Parental Control Lucid", il y aura des développements pour fournir un élément graphique afin de configurer ce dernier (non installé par défaut). La solution de Zeitgeist ne sera pas retenue (écouter les frappes clavier et tuer l'application actuelle), mais une possibilité de restreindre l'accès avec des heures fixes sera implémentée.

J'ai ensuite passé une heure à bosser sur un plugin gedit avec james_w, mais chhh… more on that soon :)

Les plénières après le repas ont été intéressantes, comme celle sur de Lucas sur UDD et montrer les interactions debian et ubuntu. Il a été invité cette semaine pour justement voir le statut et améliorer les intéractions entre les deux distributions. Quelques présentations rapides ont suivi (5 min par présentation) comme celle de James Westby que je recommande particulièrement (et non, le crash n'était pas prévu).

L'après-midi a donné lieu à un code snippet où chacun a pu partager ses meilleurs astuces python. Tout a été copié sur une page wiki et sera bientôt formatté proprement.

Après que chaque track leader ait pu présenter plus ou moins rapidement en plénière les décisions prises durant l'UDS et la traditionnelle session de feedback, la fête fut conclue par un repas texan et les joies d'entendre les cris chants Ubuntu All Stars !

Bonne semaine, temps de rentrer en France, au revoir Dallas et vivement le prochain UDS !

UDS Lucid Jour 4

4ème jour, la fatigue se fait sentir, je me permets donc d'être concis :)

Première session sur "Adding a namespace for panel/symbolic icons". L'idée est d'ajouter une sorte de standard pour les noms d'icône afin de préférer les icônes monochromes dans le panel pour être plus concis.

Le futur de l'écran d'accueil et son introduction avec Xsplash ont été abordés lors de la session Karmic GDM greeter and xsplash. Beaucoup de changements à attendre pour lucid+1. Concernant lucid, la sélection du premier compte utilisateur (qui n'aura alors plus qu'à entrer son mot de passe) dans le cas d'une machine qui n'a qu'un seul utilisateur.

La session suivante fut sur l'amélioration du démarrage du desktop. 4 secondes est le crédit sur la machine référence (un Dell mini 10). 4 secondes et très peu et le challenge est de taille. Vincent et Ryan ont pu donner leur point de vue upstream. Certains changements pourraient subvenir pour lancer quelques processus supplémentaires en parallèle. Cependant, à nouveau, le challenge est rude :)

La dernière session de la matinée a consisté à l'ajout de fonctionnalités dans le gdmsetup. Comme beaucoup de personnes ont remarqué, GDM a changé sur karmic et le nouveau GDM ne supporte pas autant d'options pour changement son comportement que le dernier (Canonical a ajouté pour l'instant uniquement des fonctionnalités de base comme le choix de l'utilisateur à connecter automatiquement). Il y aura un aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa[1]. Donc je disais, il y aura un moyen de changer le thème gtk+, le fond d'écran…

Dell a ensuite présenté leur nouvelle offre et contraintes d'installation et de vente d'Ubuntu par défaut sur leurs ordinateurs depuis 3 ans. Beaucoup de virtualisation après par des plénières sur KVM et Eucalyptus par les développeurs upstreams. Ubuntu on the cloud!

Une nouvelle session sur hacking on Launchpad, pourrait être intéressant de jeter un œil dna sun proche futur.

La session sur Ubuntu Server tips a introduit l'idée d'utiliser des "astuces du jour", très courtes, pour ubuntu serveur à chaque connexion$$en utilisant bien entendu MOTD).

La dernière session de la journée a présenté un nouvel outil pour scanner[2] mais en ayant une GUI simplifiée et utilisable par un être humain classique. :) Robert Ancell a écrit une première version qui devrait remplacer xsane par défaut dans Lucid.

Plus qu'une journée ! Le meilleur reste à venir :)

Notes

[1] © vuntz

[2] utilisant sane en arrière plan

UDS Lucid Jour 3

C'est parti, un peu en retard, pour un résumé plus rapide de la 3ème journée de l'UDS.

Après avoir fait un petit tour la veille dans une limousine (photo needed :)), le 3ème jour a commencé avec une discussion sur les applications par défaut intégrées dans Lucid. Quelques changements ici, car, même si la plupart ne le savent pas, les programmes installés par défaut sont vraiment vraiment difficiles à faire tenir sur un CD et le passage à un DVD par défaut n'est pas envisagé. L'idée est que "moins, c'est plus"[1]. Donc il y a aura la suppression de quelques jeux dans GNOME games par défaut et surtout, de The Gimp, qui n'est pas vraiment un outil considéré grand public. Quelques développements seront faits pour intégrer Eye of Gnome avec fspot pour répondre aux besoins les plus courants. Le Software Center va gagner une nouvelle catégorie où l'on pourra mettre des applications considérées comme avancées et professionnelles et on y retrouvera The Gimp.

La session suivante a été sur l'intégration des technologies à venir dans la future release de GNOME, voir comment concilier une LTS, stable et les changements upstream. Vincent Untz et Ryan Lortie ont pu donner quelques conseils sur ce qui se doient d'être intégré et ce qui ne sera pas assez stable pour une LTS.

Ensuite, une session sur les nouveauté de l'applet indicateur s'est tenue et a permi de voir ce qui allait être fait dans ce secteur (unifier les menus par clic droit et clic gauche et permettre aux applications de créer leur propre menu dedans).

J'ai assisté à la session intitulée "Ubuntu One Music Store". Une intégration avec Rhythmbox permettra aux utilisateurs d'Ubuntu d'acheter de la musique sans DRM et intégrée avec leur environnement, synchronisée sur chaque ordinateur Ubuntu de l'utilisateur et d'accéder à leur bibliothèque de manière transparente.

Après les 4 sessions plénières (Edubuntu, tenir les temps dans un process de développement et présentation du ReleaseSchedule de Karmic, Freescale et comment créer des interfaces agréables et utiles à l'utilisateur).

J'ai ensuite assistée à une session sur comment développer launchpad. Session intéressante mais il faudra pratiquer pour vraiment rentrer dans le code :)

Enfin, la session de deux heures que je tenais sur Quickly. Nous avons discuté des futures évolutions de la 0.4 et pris quelques décisions sur le futur fonctionnement de l'importation de commande entre templates. La mauvaise nouvelle est que nous n'avons pas eu le temps de couvrir tous les sujets, mais beaucoup de personnes intéressées étaient venus.

That's all folks!

Notes

[1] less is more

UDS Lucid Jour 2

Petit à petit le jet lag devient de moins en moins présent même si Lucas s'est réveillé à 5h30[1] et on a donc commencé à récupérer nos mails et faire quelques commits, dév, etc.[2] :)

La première du matin auquelle je devais assister n'a… pas eu lieu. Mais ça a été un bon moment pour jouer un peu avec UNR… oupsss UNE (Ubuntu Netbook Remix deviendra Ubuntu Netbook Edition sur Lucid).

J'ai ensuite assisté à la session "Update syslinux" qui consistait principalement à retravailler l'expérience utilisateur dès la mise en place du Desktop CD (le premier menu qui affiche la langue, puis les différents choix proposés). Une autre session est proposée car le fait de ne plus afficher le menu de langue par défaut fait débat: est-ce que l'utilisateur pourra trouver l'option pour changer la langue, est-ce que cela devrait être géré graphiquement une fois X lancé? Bref, pas de réponse évidente n'a été trouvée au terme de la session à ces questions.

La session suivante était sur "Créer une session UNR/UNE pour le desktop". L'idée est de rendre possible pour tous l'installation de UNR et de la session GNOME par défaut (Ubuntu classique) en parallèle. Beaucoup de problèmes se posent, notamment la non configuration du nouveau GDM introduit dans Karmic, l'autologin d'UNR, les applications supplémentaires installés. Mais les tests commenceront dès la semaine prochaine[3] pour avoir un paquet qui rend cela possible. Ensuite, il suffira de choisir sa session dans GDM pour bénéficier de l'expérience des différents DE (sachant que UNR est un peu particulier car s'appuyant sur GNOME).

La session suivante était sur "Social From The Start - Gwibber Integration". L'intégration par défaut de tous les éléments comme Facebook, et autres outils de socialisation est un point où la Design Team donne beaucoup d'effort. Des résultats sur les études de différents types d'utilisateur de ces services ont été exposés et quelques travaux préparatoires seront éventuellement visibles dans Lucid (Gwibber, possibilité de poster des images directement, intégration avec Empathy…)

Après le repas, j'ai pu aider une personne à faire une transition de son projet vers Quickly (j'ai reçu et fait beaucoup de travail/bug fixes depuis la présentation d'hier et Quickly devient un peu un buzzword ici :)). Les sessions en plénières couvraient Kubuntu Netbook Remix (qui sera intégré directement chez KDE comme une version supportée), une présentation des processeurs ARM par un intégrateur travaillant chez Dell, une présentation de la Launchpad API (abondamment utilisée par des applications comme bughugger ou Quickly) et finalement la présentation de TestDrive, qui synchronise pour vous la dernière version en cours de développement (lucid à l'instant), et lance une machine virtuelle avec ce système pour vous. Plus de raison pour ne pas tester. Il y a même une version graphique créée par Quickly!

L'après-midi a été ponctuée par une session sur les nouveaux développements et configuration du nouveau GDM qui seront fait par Canonical. gdmsetup qui propose aujourd'hui deux choix (la connexion automatique et l'utilisateur par défaut) sera éventuellement et éventuellement Quickly sera utilisé pour créer un template afin de rendre la création de nouveaux thème plus facile.

Une session sur la mise à jour de l'ancienne LTS (hardy) vers la future Lucid a mis en avant beaucoup d'idées intéressantes. Notamment beaucoup de tests automatisées sur la mise à jour seront fait. Comme déjà expliqué hier, il y aura quelques mises à jours plus agressives pour nettoyer la configuration de l'utilisateur, à sa demande.

Enfin, la dernière session sur les futurs améliorations de GTK et notamment le fait que la barre supérieure soit supportée par GTK et non le Window Manager. Cela soulève une fois de plus quelques problèmes comme le fait de pouvoir toujours fermer l'application quand celle-ci freeze. Il sera par contre possible de supprimer ou de changer le décorateur comme Chrome le permet et également de pouvoir appliquer des effets comme la transparence sur certains composants et nons sur toute l'application comme le fait compiz aujourd'hui.

C'est tout (et c'est déjà pas mal) pour une deuxième journée. Il est de sortir un peu sur Dallas et d'aller boire quelques bières ;)

-> Goûter la Budweiser -> Fait -> Ok

-> Goûter la Root Bier -> Fait -> FAIL!

Notes

[1] et un portable allumé, ça éclaire la pièce !

[2] la routine quoi

[3] par votre serviteur, si tout va bien ;)

UDS Lucid Jour 1

Voici que se termine la première journée de l'UDS lucid.

Beaucoup de discussions intéressantes, sur divers sujet. Cela fait toujours plaisir de rencontrer les veilles connaissances aussi bien upstream (projets amont) que ceux de la communauté Ubuntu.

Voici un rapide résumé de la journée : - Première plénière de bienvenue avec la présentation des différentes tracks[1] et de la position globale pour la prochaine LTS, lucid lynx. Le déroulement des sessions et de l'UDS en général est également présenté. - Roundtable Mobile: présentation sur ce quoi va porter la team Mobile pour lucid, c'est à dire principalement le portage des applications sur ARM et optimisations de ces derniers. - Session sur Geoclue: imaginez, vous voyagez et allez, par exemple, de Paris à Dallas. Il ne serait pas appréciable que votre horloge puisse se synchroniser automatiquement sur le bon timezone. Le fait également de permettre la géolocalisation et le partage de votre position actuelle par empathy a été abordée. Il va y avoir des tests et des patchs testés afin de savoir si cela sera disponible pour lucid (mais sûrement pas activé par défaut concernant le partage de la position actuelle).

Après le repas, les sessions en plénières de midi se sont déroulées. La première étant sur « comment avoir une bonne session de travail ». Jono a partagé ses 7 dernières expériences à l'UDS sur ce sujet. Ensuite, Matthew Paul Thomas a présenté le travail qui sera effectué sur le Software Center pour lucid au niveau Design. Par mal de travail sur les sessions à venir cette semaine. Ensuite, Rick Spencer et moi-même avons présenté une session sur Quickly. Pas mal de retours et d'intérêt sur ce projet qui a débuté au dernier UDS. Mercredi donnera lieu à une session de deux heures sur le sujet et le devenir de la 0.4.

L'après-midi a été rythmée sur les différents moyens et métriques disponibles pour qualifier le niveau de qualité des bugs reportés et comment s'y retrouver dans cette jungle. Nous avons ensuite eu droit à une session sur comment apporter une meilleure expérience de mise à jour entres versions et proposer de permettre à l'utilisateur de prendre les choix par défaut (par exemple, le passage de pidgin à empathy, la remise par défaut des éléments du panel…). Ce désir semble contreversé et un proof of concept sera proposé dans les semaines à venir. Enfin, j'ai assisté à une session sur le process de packaging en environnement distribué. Les habitudes sont longues à changer, mais ce qu'apporte ces éléments par rapport aux méthodes tradictionnelles semble particulièrement alléchant.

Notes

[1] sujets d'intérêt

UDS Lucid Day 0

Après quelques 13 heures de voyages, me voici à Dallas afin de vous faire partager l'UDS Lucid!

Pour les personnes qui ne le savent pas, l'UDS (Ubuntu Developer Summit) est la réunion binannuelle des dévelopeurs ubuntu (Canonical et la communauté) ainsi que quelques personnes de projets amonts qui sont invités (debian, GNOME…).

J'ai la chance d'être sponsorisé pour la deuxième fois consécutive par Canonical pour assister et participer à ces réunions. Mais même si vous ne pouvez pas participer physiquement, il reste les chans IRC et le progamme disponible sur le wiki d'ubuntu.com. Et le programme des conférences/discussions: programme complet ici

En fait, il est tout juste lundi matin et le sommeil fût difficile à trouver avant cette première journée.

J'essayerais de m'astreindre à un compte-rendu journalier des activités et discussions auxquelles je participe afin de tenir un petit journal de ce qui pourrait arriver lors de la prochaine release d'ubuntu.

Ubuntu-fr French release party

On 30th October, it was time to celebrate the new Koala invasion!

Contrary to our Ubuntu Party (next one will be in Paris on 28 and 29th November) opened to any kind of public and especially computer science non specialist, we also have at each release a dinner in Paris with few people more or less in the FLOSS ecosystem. 51 persons came this time and enjoying sharing good time with friends.

It was also the perfect time to have some little meetings to prepare all futur (and past) ubuntu-fr events and actions (I'll speak about them in my next post, coming soon!). Karmic photo 1

NotifyThis 0.1: notify everything easily!

In our French ubuntu party organized by ubuntu-fr, we have approximately 20 free and ready to use computers for people to be able to try ubuntu on their own (we have someone around to help new users).

But that's a lot of wasted space for advertising our conferences, scheduled demonstrations, lessons we have during the party! So, the idea was to create a daemon notifying this, resulting in: example.png

notifythis192.png NotifyThis is here to fulfill this need. It's a desktop daemon (no pid file) using dbus for single instance and actions like pausing, stopping, forcing configuration file reload[1]

Source file is in XML (default in /etc/notifythis-data.xml):

 <?xml version="1.0" encoding="UTF-8"?>
 <notifythis xmlns='http://launchpad.net/notifythis' xml:lang='fr'>
   <notiftypes>
       <type>
           <name>lesson</name>
           <priority>low</priority>
           <icon>/usr/share/icons/Humanity/apps/22/gnome-terminal.svg</icon>
       </type>
       <type>
           <name>conference</name>
           <priority>low</priority>
           <icon>/usr/share/icons/Humanity/stock/22/stock_people.svg</icon>
       </type>
       <type>
           <name>demos</name>
           <priority>low</priority>
           <icon>/usr/share/icons/Humanity/places/22/user-desktop.svg</icon>
       </type>
       <type>
           <name>miscellaneous</name>
           <priority>low</priority>
           <icon>http://awesomeurl/dialog-warning.svg</icon>
       </type>
   </notiftypes>
   <notifevents>
       <event>
           <title>Beginners lesson</title>
           <content>Lesson for beginners in 10 min</content>
           <type>lesson</type>
           <time>2009-09-27 12:33</time>
       </event>
       <event>
           <title>Advanced lesson</title>
           <content>Advanced lesson starting in 15 min</content>
           <type>lesson</type>
           <icon>http://unexistingurl/stock_dialog-warning.svg</icon>
           <time>2009-09-26 22:01</time>
       </event>    
       <event>
           <title>Awesome conference</title>
           <content>An awesome conference on Ubuntu will start in 5 min.\nKeep it hot!</content>
           <type>conference</type>
           <time>2009-09-27 23:54</time>
       </event>
       <event>
           <title>End of the event</title>
           <content>Well… I guess you will have to leave NOW!</content>
           <type>miscellaneous</type>
           <icon>/usr/share/icons/Humanity/status/22/stock_dialog-warning.svg</icon>
           <time>2009-09-27 23:55</time>
       </event>
   </notifevents>
 </notifythis>

What can I do in this notifythis namespace?



You associate an event instance (in notifevents/event ) to a notifytypes/type/name declared in the file. Types enables you to set some default priorities and icons to events. <Icon> refers to a path to an icon, which can be local to your computer or distant served by your preferred web server (http://…). In the latter case, NT will cache it for you locally. Consequently, using multiple times the same icon in different types or events will download it only once.

Title is used as… notification title and content as… content :) <time> is used to specify when the event will be notified. Categorizing your event is just a way to avoid multiple icon/priority definitions, but those two values can be overridden for a particular event simply specifying corresponding tag (<icon> for instance). If it can't be found, event type icon will be shown. If this one doesn't exist/can't be reachable either, a warning is spawn in log file and no icon will be displayed.

So, you can for your event, but it can be bound with any kind of other things like calendar, TODO items, and so on…

But well, as unscheduled event changes may happen[2], you surely want to upload your xml file online and reload it in all NotifyThis daemon dynamically. It's possible too (and what we will do during our party).

In /etc/notifythis, you can set where the xml file is:

 # time in minutes beteen two xml file reloading, default is 30 minutes
 DELTA_BETWEEN_XML_RELOAD=30
 
 # xml files (separated by ';') by order of preferences.
 # It can an absolute or a relative path to this file.
 # It can be a network path (http://) too
 XML_FILES=notifythis-data.xml

You can even specify multiple XML_FILES and first found one will be use (like in XML_FILES=http://my/central/xml/file.xml; /usr/local/mybackupfile1.xml;notifythis-data.xml). XML file will be reloaded every $DELTA_BETWEEN_XML_RELOAD min (30 min if not specified) in each daemon. If no xml file is found, previous working configuration is preserved and a retry is done every minutes then.

By default, NotifyThis is a desktop daemon[3] launched with a classical .desktop file in /etc/xdg/autostart/. Log are in ~/.local/share/notifythis/notifythis.log

Well, NT uses Quickly to simplify project handling. I guess we should investigate in a desktop-daemon template, making properly the double forking, using dbus instead of a pid file and dbus communication to reload configuration file, stop, pause… this can be handy! We can perhaps add a way for a template to reference another template to avoid redefining same commands twice and gives an easy way to call them (without having specifying --template ubuntu-project, for instance).

Well, if you want to give it a try, NotifyThis 0.1 is out and is available in my ppa.

Notes

[1] --help is your friend

[2] and will certainly happen actually

[3] you can launch it interactively as well, with --no-daemon and set different verbosity levels

Live from Paris global jam in France

Yesterday, Christophe posted some photos of Toulouse jam. Today, it's Paris time! This event is also organized by ubuntu-fr.

jam.JPG

We currently have:

  • a testing jam on the new rocking karmic beta version

testingjam.JPG

bugjam.JPG

  • a documentation jam (to clean and prepare documentation reference. 7000 wiki pages to clean up!)

docjam.JPG

Other photos and unattended teacher :) misc1.JPG misc2.JPG teacherzzz.JPG

En direct de la global jam à Paris

Hier, Christophe a posté sur le planet ubuntu anglophone quelques photos de Toulouse. Aujourd'hui, c'est au tour de Paris! Cet évènement est bien évidemment également organisé par ubuntu-fr.

jam.JPG

Au programme:

  • la testing jam sur la version béta de karmic très stable

testingjam.JPG

  • une bug jam, tout comme il y a 6 mois

bugjam.JPG

  • une documentation jam (afin de nettoyer et préparer les 7000 pages du wiki d'ubuntu-fr

docjam.JPG

D'autres photos et même un professeur inattendu :) misc1.JPG misc2.JPG teacherzzz.JPG

Global Jam à Paris ce dimanche 4 octobre !

MAIS QUE SE PASSE-T-IL CETTE SEMAINE SUR UBUNTU ?

Eh bien, c'est la Global Jam, évènement regroupant toutes les loco-teams d'ubuntu à travers le monde afin de passer un week-end à apprendre et à contribuer au projet Ubuntu. Et Ubuntu-fr en propose deux en France.

C

Pas besoin d'être technicien/développeur/programmeur/geek/...[1], l'évènement se veut grand public ! Venez simplement avec votre ordinateur (point très important) et lancez-vous ! Pour cela, plusieurs activités sont proposées :

- une testing jam : jeudi prochain sort la version béta[2] de karmic koala (la 9.10), prochaine version d'Ubuntu. Nous vous proposons que vous veniez accompagné de cette version gravée sur un CD (la béta sera disponible jeudi normalement et un billet sur le planet vous indiquera où la télécharger). Pas besoin de l'installer, cela se fera lors de la Jam et fait parti des points à tester. :)

- une documentation jam : vous êtes-t-il arrivé de râler auprès d'une page de la documentation d'ubuntu-fr dont la description ne marchait pas, était obsolète ou tout simplement pas assez précise/détaillée ? Devenez alors acteur (pensez que toute la documentation est uniquement maintenue par des bénévoles) ! La documentation jam est là pour que vous ne soyez pas perdu et des directives simples mais précises permettra de défricher ce travail titanesque. Même si vous ne sentez pas de rédiger de nouvelles pages, rien que le fait de corriger des fautes, reformuler de manière plus claire est une contribution tout à fait valable et louable. :)

- une bug jam : Un bug jam consiste à trier des bugs sur Ubuntu. Pas de compétence technique n'est requise, uniquement une maitrise minimale de l'anglais écrit. Après une initiation au tri de bug, présentation de launchpad, inscription des comptes et des différents process de développement d'ubuntu, il sera temps de mettre en pratique de ce que l'on a appris, toujours accompagné de personnes qui sont habituées à cette tâche. Également, si vous étiez venu il y a 6 mois et n'avez pas pu pratiquer, il est temps de venir prendre un petit cours de rattrapage :)

Tout cela aura lieu ce dimanche 4 octobre, à la cité des sciences et de l'industrie, porte de la Villette à Paris, Pour s'y rendre, rien de plus facile[3]. L'évènement se déroulera au sein du carrefour numérique de la cité, niveau -1. Les horaires: 14h à 18h00.

Si vous êtes sur Toulouse, n'oubliez pas qu'ubuntu-fr organise également une global jam sur place le samedi 3 octobre à partir de 11h30.

N'hésitez plus, et lancez-vous ce week-end !

Informations connexes sur le site d'ubuntu-party.

Notes

[1] ceci n'est pas exclusif

[2] version de développement où les plus gros problèmes ont été corrigés et testés, un mois avant la version finale

[3] et ça le sera encore plus pour ceux qui sont déjà allés à une Ubuntu Party, puisqu'il s'agit du même endroit

Build your application quickly with Quickly: Inside Quickly part 9

We are now almost ready to land! Here is the last part of this long suit of blog posts about Quickly.

Packaging your project

It's the last, but not the least issue when you are writing your software: once your application is functional, you surely want to enable other users to install it. Well, you can give it into a tar.gz and run from a trunk, but what about creating a nice package, containing all dependency information for you[1]? Let's see how to achieve this automagically.

Build your project locally

First good idea (even if it's not compulsory) is to try to build it locally. Just issue this command for that:

$ quickly package

It will creates a debian binary package (deb) from your project. The first time, quickly package creates the packaging too. Before running the package command you can edit the Icon and Category entry of your <project_name>*.desktop.in file.

Note that if you didn't run quickly release, quickly share or quickly change-lp-project you may miss the name, email and some other entries in setup.py file. So, you won't have those metada in your package. You can edit them if you don't want to use any of these commands afterwards. Those changes are not mandatory at all for testing purpose.

Quickly package will retrieve all dependencies on your project for you and then build the package locally. You will get a .deb file in the upper folder of your project directory and can install it for testing purpose.

In addition to giving a lot of hints to setup.py, default ubuntu-project enables you to have some automation to specify a data directory that works both from trunk or specified location. If you know a little about python packaging, you can build and install your own local version with python setup.py build -homedir </usr/local/...> (or -rootdir) and this (and any other path) is taken into account at build time.

Debian package description is taken from setup.py where you can change them by editing

description='UI for managing …',
long_description='Here a longer description',

licensing

Stop! Before packaging and making it available to whole world, you really should license your project

Hum, I know what you think "licensing is boring, I never know what I must do and ship in my package" (how many upstreams never shipped the GPL vanilla file in their tarballs). That's an old story with Quickly. Just launch

$ quickly license

to create a GPL-3 project, shipping all desirable headers to all files as well as the right LICENSE and AUTHORS file.

It will warn you that you should modify "# Copyright (C) YYYY <Your Name> <Your E-mail>" in Copyright file if you "$ launch quickly license" the first time before launching "$ quickly share" or "$ quickly release" (in the other case, all files are licensed automatically with GPL-3 and name/email are taken from Launchpad). So, edit it manually in the former case.

But well, you are going to tell me that you don't want to license under GPL-V3? Shell-completion will reveal your all supported licenses by Quickly:

$ quickly license [Tab][Tab]
BSD     GPL-2   GPL-3   LGPL-2  LGPL-3

Quickly always ship the right files and put the header in an according form. Be aware[2] that you can relicensed your project with another license once if you have already licensed it. It will just override your previous license and clean all files accordingly.

If you want to put your own Quickly unsupported License, put your own license text in Copyright file between the tags ### BEGIN AUTOMATIC LICENCE GENERATION and ### END AUTOMATIC LICENCE GENERATION. Then "$ quickly license" does the trick and will add your personal license to every files.

Adding new licenses is really easy, if you think that another license ought to be included in ubuntu-project, do not hesitate to open a bug against Quickly.

So, no more mess when licensing your project. It also updates setup.py and next "$ quickly package" (or "$ quickly release/share) will update the Debian packaging too.

sharing

I guess that your are now ready to enable the world to discover an early beta of your application without publishing this version (or intermediate release) as stable one?

Launchpad ppa are great for that and avoid releasing an official version. It's as easy as:

$ quickly share

It updates your PPA with the the latest saved project changes.

So, before running "$ quickly release", you should: create your account on http://launchpad.net and add a PPA to your launchpad account. Quickly will check that you have an ssh and gpg key. We hope to be able to add advanced support to that in later release.

The first time the command is issued (and that "$ quickly release" was not issued before), it will ask to open a webpage for identifying your Launchpad account so that you can bind Quickly with Launchpad. This is done once by machine (that is to say, all projects on a host share the same launchpad account).

Then name, email and version setup.py will be automatically changed. Version will be <current_release~publicX> where X is incremented at each "$ quickly share" execution before a new release is done.

If "$ Quickly package" was not issued before, it will run it. Same for licensing, updating name, email, license to every part of your project. No more unlicensed file.

Then, it pushes a source package to your ppa. Just wait for Soyuz (in Launchpad) builds your package and you can make your friend discover your project!

releasing

Well well well, when you have tested throughly your package, it's time to release it, isn't?

$ quickly release <release_number> notes about changes

<version> and <description of the release> are optional. Let's see first without them:

$ quickly release

This command first ask for a Launchpad account if you didn't run "$ quickly share" before in any other project. Then, it will propose you to bind your project with an existing Launchpad project, search it with some keywords and then enter the number corresponding to your project. That will be done once per project and finally, if you didn't packaged it previously (neither with quickly package, nor with quickly share), it will do it (same with license issue).

If you didn't put any release version, Quickly will then release it with current number in setup.py (0.1 when you create your project and then, incremented by +0.1 each time the command is issued). If you previously used "$ quickly shared" publicX will be dropped to release <current_release> version (as <current_release>~publicX is less than <current_release> in packaging world).

If you feel the current version is an "0.8" release (without respecting the +0.1 order), your can launch:

$ quickly release 0.8

to enforce this value.

Then, Quickly will save the current state (with the optional notes about changes commit message), add a tag to it and bind your bzr branch with the corresponding project in Launchpad (pull and push). Finally, it will create the source package and upload it to your ppa before bumping the revision (+0.1), ready for next changes.

Of course, some setup.py values are updated too like setting project url, pushing it to debian/control, and so on.

And that's it, you have now a new rocking release, updated with all licensing and packaging issues done for you. Enjoy!

Change Launchpad project

If you want to unbind and bind again your project with another Launchpad one, you can issue this simple command:

$ quickly change-lp-project

It enables you to set or change the Launchpad project binded with the current ubuntu project.

Summary:

Ok, that's it for the tour, I hope you enjoyed it and it gave you some desire to use Quickly for your own project, develop new templates, and give new ideas!

In a nutshell, in two commands:

$ quickly create ubuntu-project myproject
$ quickly release

you can have a release of your project, licensed, packaged, under proper revision control. Easy and quick isn't?

Get Things Done Right and... Quickly!

More info on Quickly:

  • Previous part of the tour:
  1. Part 1: introduction
  2. Part 2: general concepts, core and templates
  3. Part 3: getting help
  4. Part 4: shell-completion
  5. Part 5: miscellaneous core stuff
  6. Part 6: creating templates
  7. Part 7: ubuntu-project template presentation
  8. Part 8: ubuntu-project template code editing

Press review:

Notes

[1] thanks to distutils-extra and amazing pitti's work

[2] that is to say, take care about legal form there

Build your application quickly with Quickly: Inside Quickly part 8

You have now your amazing and remarkable new Quickly "ubuntu-project" templated project but don't know how to start hacking on it? Here are some tips for you, just there, keep on!

Modifying your ubuntu-project

edit command

Quickly edit is a convenient command to open all of your python files contained in your project in your default editor, ready for editing. Just run:

$ quickly edit

anywhere in your project tree.

It will most likely open them on gedit, apart in case you put other values in EDITOR or SELECTED_EDITOR environment variables. Consequently, if you previously configured your editor with sensible-editor, this one will be chosen[1].

glade command

This command enables you to open all generated UI files in Glade, so that you can modify your interface. UI files are where your interface is described and Glade is here to give you some handy way of defining it.

$ quickly glade

Note that If you just run Glade from the Applicatons menu it won't work with Quickly. Indeed, what Quickly does is assume that there is one UI file for each Python class for each window type instead of a single big ui file that defines all of the UI for the whole project. This allows each class to derive from window, and most importantly from Dialog. Quickly needs to generate some xml files to tell Glade about these classes and if you just load Glade from the Applications menu, Glade doesn't get to see those UI files and won't load the UI files rather than risk corrupting them.

dialog command

This command helps you to create a new dialog into your project.

$ quickly dialog <dialog_name>

where <dialog_name> is one or more words separated with underscore.

This will create:

  1. A subclass of gtk.Dialog called DialogNameDialog in the module DialogNameDialog.py
  2. A glade file called DialogNameDialog.ui in the ui/ directory
  3. A catalog file called dialog_name_dialog.xml also in the ui/ directory

The default opened file is the main window for your application. You can switch to others under the "Projects" menu.

save command

Ok, you should rather save your project at regular interval, using a revision control system (enabling you to revert back to any point in time, to share with other your code and merge their work into your). Quickly save enabling taking this kind of snapshot of your project:

$ quickly save notes about changes

where "notes about changes" is optional text describing what changes were made since the last save.

It basically commits all changes since the last save to bzr, using a default text if you don't specify one. If you need revert or otherwise use the revision control, use bzr directly.

Note that it does not push changes to any back up location.

Well, that's almost it. You can now really begin to work on your project using all the Quickly goodness. Next subject will be the last one: sharing your finished product and packaging it as easy as pie.

Notes

[1] bryce told me "I was surprised that for once, I had my files opened with emacs" :-)

Build your application quickly with Quickly: Inside Quickly part 7

We previously saw the general concepts around Quickly and more particular its core.

So, now, it's time to dive into the different commands of the first Quickly template which is ubuntu-project.

What brings me ubuntu-project template?

To make programming easy and fun, we've made some opinionated[1] choices about what tools, apis, etc.. to use.

In a nutshell:

  • Python for the language
  • pygtk for the UI framework
  • Glade for the UI editor
  • Gedit for the code editor (though this is easy for you to change if you choose another one)
  • bzr for version control
  • Launchpad for code hosting
  • desktopcouch for storage/database (!)

ubuntu-project template adds some glue there to all those technologies to lower the barrel and facilitate the learning curve.

create command

The first command you will certainly use is to create an ubuntu-project "templated" project. You can just execute the following line to get a working project directory:

quickly create ubuntu-project Myproject

This causes a bunch of info to be dumped to the command line, but ends with the application being run. What Quickly does is to copy over basically a sample application, and do some text switcheroos to customize the application with the name provided.

Here is the obligatory screenshot of a newly created Quickly application without any change:

Quickly default image

Note that in addition to the main dialog, you get a preferences and also an about dialog.

Under the hood, the command initiate a bzr repository and make a first commit to your project, this will enable you to track your changes and revert them later if needed, sharing the code on Launchpad, and so on... So, here it is, your project uses all previously described technology and is under revision control. You also have a nice .desktop file for showing your application in desktop menus for free. Enjoy! \o/

Then, we considerate that all subsequent commands will be run from a ubuntu-project "templated" project folder.

run command

If you've closed the application and want to run it again, change to your project directory, and use:

$ quickly run

This will run your project as a subprocess.

tutorial command

This command gives you the definitive must-have tutorial to know, indicating you what to do once your project is created, what can be changed, how to build it, etc. It goes also in some desktopcouch-db tweaking.

$ quickly tutorial

It will launch your default web browser and point you to a bunch of documentation to realize a successful ubuntu application.

Note that you can launch this command outside any project[2] too by spawning:

$ quickly tutorial ubuntu-project

or:

$ quickly -t ubuntu-project tutorial

That's enough for today. It was rather short, but you have now plenty of stuff to discover by yourself: you can now create your own project and play with it. We won't cover here what lines to change into the default code of your project or how to add new couchdb storage as all of this is already described in the tutorial. We will rather focus on commands.

Next stop will be on how to edit/change the content of your software, and save your stuff at regular interval.

Notes

[1] *very* opinionated would say Rick Spencer ;)

[2] just a quick reminder for those who didn't follow previous parts ;)

- page 2 de 4 -