DidRocks' blog

apt-get install freedom

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

Build your application quickly with Quickly: Inside Quickly part 6

This post will make a little pause in Quickly features reviewing to focus on the template creation. Ever wanted to create your own Quickly template, or to modify slightly the existing ubuntu-project template to make different choices? This part is for you!

If you aren't interested, we will begin the ubuntu-project template description next week, see you there!

Quickly Templates

General stuff

Templates can be written in whatever language you want. They are just a set of commands in a directory, containing commands to copy images, documents and interacting with the user.

Adding a command is quite easy: just drop it into the root template directory and make it executable. Quickly will know by this way that the current file is a command that Quickly Core can launch. Consequently, if you need additional internal commands that can be launched only by your own commands, just create a subdirectory in your template and add it there!

Ready to see how to create a template? Remember than template can be created for everything: generating advanced music list, managing LaTeX files, doing anything without any project (just having all commands that can be launched outside project), etc. You can even create a template with commands written in C to help users design a perl application. :)

Template paths

Quickly will retrieve template in multiple paths. To know which template paths are detected, you can use:

$ quickly --version
Quickly 0.2.3
  Python interpreter: /usr/bin/python 2.5.2
  Python standard library: /usr/lib/python2.5

  Quickly used library: /home/didrocks/Projets/quickly/quickly
  Quickly data path: /home/didrocks/Projets/quickly/data
  Quickly detected template directories:
          /home/didrocks/quickly-templates
          /home/didrocks/Projets/quickly/data/templates/

Copyright 2009 Canonical Ltd.
  #Author 2009 Rick Spencer
  #Author 2009 Didier Roche
https://launchpad.net/quickly

quickly comes with ABSOLUTELY NO WARRANTY. quickly is free software, and
you may use, modify and redistribute it under the terms of the GNU
General Public License version 3 or later.

What is interesting for us are the following lines:

  Quickly detected template directories:
          /home/didrocks/quickly-templates
          /usr/share/quickly/templates/

/usr/share/quickly/data/templates/ is what you should see if you installed Quickly with your package management system. That is the default location for templates.

If you built Quickly yourself and add some options like home= or root= (standard distutils options to specify a different home), your will find them in $your_targeted_directory/templates.

The first path (in my home folder), only appears if you have installed at least one template. This is the place for your personal templates that you don't want to share with user, or just for experimentations.

There are additional checks and possibles paths for people using trunk too, but that's not the point. :)

Create a template from scratch

The best way is to declare your template under ~/quickly-templates by creating a directory into it, like "my-awesome-template".

In it, create scripts/executable files and they will became commands. Easy, isn't it? :) The command name is the command script name without the extension (if present): foo.py becomes foo command, bar.sh will be bar, foobar remain foobar command.

Create a template from another template

But if you are found of an existing Quickly template but you disagree on the choice of a particular technology and want to modify it to apply it to your needs, there is an easy way to achieve this.

You don't have to copy yourself the corresponding templates, but instead, run:

$ quickly quickly <origin template> <new template>

So, for instance:

$ quickly quickly ubuntu-project kubuntu-project

It will create (if it doesn't already exist) ~/quickly-templates, the corresponding subdir and makes some additional checks.

The most important thing is that templates aren't binded: you can modify it independently than the one used at creation time. It's an easy and convenient way to start from existing work.

Little brain breaker

How to complicate it a bit? Oh well, if you really understood the previous parts, you can know how to do that differently:

wherever/you/are $ quickly -t ubuntu-project quickly kubuntu-project

or:

quickly/project/dir $ quickly quickly kubuntu-project

to copy the template associated with current project.

Quickly Core does the hard work for you

If you are using python or not to create your template, Quickly Core does already some part of the work for you. This enables you to relax and know that you are always launched in good conditions. Let's see what's automated.

If you didn't understood part 3, I urge you to read it again, you will need it to follow the next 2 sections :-)

Command launch context

By default, all template commands (contrary to builtin ones) can be launched only in a project "templated" with your project. I guess you remember that there is some additional attributes that you can specify to change that behavior.

All the little black magic is in the commandsconfig file that has to be in the root directory of your template (its presence is not compulsory). Here is the example for the ubuntu-project template

# define parameters for commands, putting them in a list seperated
# by ';'
# if nothing specified, default is to launch command inside a project
# only and not be followed by a template
COMMANDS_LAUNCHED_IN_OR_OUTSIDE_PROJECT = tutorial
COMMANDS_LAUNCHED_OUTSIDE_PROJECT_ONLY = create
COMMANDS_FOLLOWED_BY_COMMAND =

As in every configuration files, you can add comments with #, and use ATTRIBUTE = value format. Quickly Core supports as well list in this format : ATTRIBUTE = command1; command2; .... Of course, we are quite tolerant about the format (extra spaces, comments on the lines, etc.)

So, in that example, I can launch "quickly create ubuntu-project ..." outside a Quickly project only. As it's a template command that can be launched outside a project, it's a project followed by template (read chapter 3 again to see what it implies).
All unlisted commands have the defaults: command not followed by a command nor a template and they can be launched inside a project only.

Also, COMMANDS_FOLLOWED_BY_COMMAND is almost self explanatory. Think about the help builtin command presented in part 3. (Not sure if any other command will need it, but well, all the logic is implemented in a generic way, so, let's get it available if some people need it) :)

Then, Quickly Core will do every checks to ensure that the command is in the good context and has the right parameters to be launched (or to propose this template if not specified for this command, etc.).

Shell completion

Basic one

The good news if you followed the previous section is that you have nothing to add. Shell completion automatically understands if the command should be available or not considering the current context (inside a project or not, a template already provided with the --template option on the command line, etc.) and propose you what you can use.

Same for templates proposal if you are executing a command out of a project. It will as well propose another command if you specified the right attribute. Also, if a command name is in more than one template, it will automatically fetch to show you what is available to the user as previously described in part 4.

Add advanced completion

Ok, but I know, you want more than basic completion for your awesome template. For instance, the license command in the ubuntu-project template display available licenses.

Here, the logic is "logically" outside of Quickly Core as it shouldn't integrate template-specific stuff. So, once the basic completion will give no more solution (that is to say, context is ok, templates are specified, commands too if needed...), it will launched the script with shell-completion as the first argument, and then, what has been specified on the command line.

Let's take an example:

$ quickly -t ubuntu-project licence [Tab]

(Note that -t ubuntu-project is not compulsory if you are in a ubuntu-project "templated" project)

It will launch licence.py of ubuntu-project template project with shell-completion "" parameters.

$ quickly foo bar test [Tab]

It will launch foo script with shell-completion bar test ""

$ quickly foo bar tes[Tab]

However, this latter will launch foo script with shell-completion bar tes. (as last parameter isn't empty, you know on which word tab completion is launched). But you still can show all candidates, like "you, should, test, it" and Quickly shell-completion script will fetch with current parameter (to choose here "test", only candidate which matches "tes").

Ok, but how to tell Quickly that "those results are values that can be used in shell-completion"? Easy, just print it! In the previous case, you can just execute in your code: print "you should test it" (or echo, or printf depending on the chosen language...). a blank space is needed but no order is required (it will be reordered automagically with TabTab)

So, keep in mind that we can launch script with shell-completion parameter each time the user spawn shell completion. Conseuqnetly, design your commands accordingly (see later for a tools to help you with that if you are writing your template in python)

Help to figure out help

The help system use a similar feature. You just have to print the help when Quickly Core call your command with help parameter. Again, a convenient function will be described later for Quickly templates in python.

Command line treatment

Quickly Core is stripping all known options and arguments like templates (when following command like in command followed by templates without the -t option or not in a Quickly project) to have always the same state for the command.

With this, you are assured to have your own parameters to treat, not Quickly specific ones and no context to deal with. Focus on template coding, don't deal with this mess, Quickly Core does it for you :)

Special option that we saw in previous chapter is provided on commodities function for python (see below) or in environment variable. For instance, there will be a staging string in QUICKLY environment variable if the user used the --staging option or exported directly the variable. Same system is used for verbose mode. Quick reminder: multiple values are separated by ":".

Launching from root project directory

You can always consider your command is launched from project root directory, even if the user is in a subsubsubdir (or even deeper in the directory tree hierarchy) of the project. Quickly Core in all its cleverness and goodness guide your script to change their current working directory. :)

The only restriction is for commands that can be launched outside a project and that are actually launched in this context (outside of any project). This is a normal behavior, as they are specifically design to be launched outside a project. :)

This is the case, for instance, for the create command in the ubuntu-project template: there is a pre-hook executed (see below) and then, we launch the template in the parent dir of the project directory. Be aware of that. :)

Hook system

Quickly supports some hooks. It enables to have some specific automation (part of code) executed before and/or after an execution of a command. They are Quickly Core builtin. Now, we just have one: pre_create, launched before any create function.

You can note that hooks aren't execute when calling the script for shell-completion and help.

pre_create creates the directory specified in the create command line and handle more complex cases like $ quickly create template folder1/folder2/projectname. Also, pre_create filters acceptable project names and populates .quickly file in the new project directory to put some generic parameters needed for Quickly Core compatibility handling.

So, if your template needs a Quickly project, you really should consider adding a create command which can be launched outside a project only. It will be a bad idea to create a project within an existing project, even if Quickly Core supports it. :)

.quickly?

This file should be located in the root project directory (it's how Quickly Core detects it, to be honest). The basic pre_create hook creates a file like that:

project = foo
template = ubuntu-project
format = 0.2.3

With that, we can store project name (which can differs with the folder case), template names, and Quickly format (corresponding to Quickly version) to handle migration.

You can add your own key/values pairs (again a convenient function is given if you develop your template in python) to help you in your template needs. The file format is the same than for quicklyconfig template file (comments, extra spaces, etc.).

tools to help you (if your template is in python)

Most of them are in quickly/templatetools and quickly/configurationhandler.

access and modify .quickly

configurationhandler is your friend for this one :)

The basic way is to import the module and load the content of the .quickly file:

from quickly import configurationhandler
if not configurationhandler.project_config:
    configurationhandler.loadConfig()

Here, we avoid to reload the configuration. You can do it if there are pending changes you want to forget. Then, you have an associated array called "project_config" and use it to retrieve some values:

print(configurationhandler.project_config['project'])

(if the key doesn't exist, it will return the usual no index found).

You can then add new values that you need in your own template by:

configurationhandler.project_config['foo']=bar

To save it, you can finally call:

configurationhandler.saveConfig()

All modifications will be stored by .quickly file within the current project.

handling easily help and shell-completion

For that, we have a handle_additional_parameters which takes function as optional parameters. Those functions should print help and handle shell_completion method. In the following examples, the functions are names "my_help" and "my_shell_completion", but that doesn't matter.

from quickly import templatetools
def my_help():
    print _("""Usage:
$ quickly change-lp-project

Enable to set or change the launchpad project binded with the current
ubuntu project.
""")
templatetools.handle_additional_parameters(sys.argv, my_help)

As you notice, some parameters are optionals. Here is the example will both functions:

def my_shell_completion():
    if len(sys.argv) == 3:
        print " ".join(get_supported_licenses())
def my_help()
     print("foo")
templatetools.handle_additional_parameters(sys.argv, help=my_help, shell_completion=my_shell_completion)
Get formated Quickly name of a project:

Very easy function to get your project name compatible with Quickly Core (this is the same one which is put in .quickly file)

from quickly import templatetools
print(templatetools.quickly_name(project_name))

An error is issued if the input is not supported currently by Quickly Core.

apply file permission to another file

This has been handy in the license command of ubuntu-project, it can interest others:

from quickly import templatetools
templatetools.apply_file_rights(fcopyright.name, fcopyright_out.name)

It applies to the second file path the permission of the first path file.

Launchpad and bzr

Disclaimer: we put support in Quickly Core itself for Launchpad and bzr, but nothing is loaded until you explicitly need it (and consequently, specify it) in your template. We will be happy to add other support from widely used system for template creator convenience. So, do not hesitate to propose your own binding.

We have some generic tools now for binding to launchpad project and creating/using credential so that template's developers don't become crazy if they want to use Launchpad in their template.

Basically, to setup launchpad credential and bind to a project (or use it afterwards), the code is:

# connect to LP (this create credential if needed, either, retrieve it)
from quickly import launchpadaccess
launchpad = launchpadaccess.initialize_lpi()

Once the user created his credential (or was connected automatically if it's not the first time it's called within Quickly), you have your launchpad python object to perform whatever you wish. It automatically targets staging if it was specified on the command line or by environment variable. It also setup bzr whoami if it was not done before.

All the "first configuration" step is done only once in Quickly: the credential is shared within every templates.

# get the project (choose and bind to one if not already done)
project = launchpadaccess.get_project(launchpad)

With that code, once connected to Launchpad, you will bind your project to a launchpad project. It will ask the user (the first time it's launched within a project) to what existing project he wishes to be bound, make a search with the string provided and propose some candidates to him. When done, you can play with the "project" python object in your template!

Staging stuff is also supported without any extra work. If you really need to know if you are on staging server, you can launch: ///launchpadaccess.lp_server/// (it can be "staging" or "edge"). No need to parse environment variable. :)

verbose mode

It's really easy to figure out if you are in verbose mode or not (specified by the user by environment variable or by using command line option):

from quickly import templatetools
if templatetools.in_verbose_mode():

in_verbose_mode() will be True of False, it's self-explanatory!

Well, Quickly Core is not so tiny as we can infer at first glance and a lot is covered under the hood too. It's not only a dummy command line parser as we are used to present it for simplicity, but you have been able to see that it has some advanced function as well.

Next week, we will see the first created template for Quickly. You already know some part of this one as I took it a lot of times as an example: yes it's the one called ubuntu-project! Back again to the user wave. :)

Build your application quickly with Quickly: Inside Quickly part 5

That will be the last part for user on the Quickly Core itself. Before jumping on the ubuntu-project description road, we will see miscellaneous stuff that I couldn't classified later.

Miscellaneous

Well, Quickly options are quite sparse for the moment (as we don't need more as of today), so, here are what can be useful for you:

Help

$ quickly --help

Of course, as the man page, this will give you the most important information you will certainly need :)

Version

$ quickly --version
Quickly 0.2.3
  Python interpreter: /usr/bin/python 2.6.2
  Python standard library: /usr/lib/python2.6
  
  Quickly used library: /usr/lib/python2.6/dist-packages/quickly
  Quickly data path: /usr/share/quickly/data
  Quickly detected template directories:
          /home/didrocks/quickly-templates
          /usr/share/quickly/data/templates/

Copyright 2009 Canonical Ltd.
  #Author 2009 Rick Spencer
  #Author 2009 Didier Roche
https://launchpad.net/quickly

quickly comes with ABSOLUTELY NO WARRANTY. quickly is free software, and
you may use, modify and redistribute it under the terms of the GNU
General Public License version 3 or later.

This one is very important: it gives you some internal and useful informations like Quickly version, python version, what paths for library are used by Quickly, template paths. Well, it's a good idea for every bug report to add those information. We are currently working on an apport hook to integrate it each time Quickly crashes.

Verbose mode

quickly --verbose <command>

This enables Quickly to be more verbose. It's pretty limited at this time, but will be developed later (for instance, we remove current glade warning about unknown icons). Verbose mode switch back default behavior. It will be neat if we will integrate more verbose debugging and verbose informations (planned for 0.4 release).

If you want to use verbose mode for more than one command without specifying each time a --verbose option, you can export QUICKLY variable and set it to verbose like this:

export QUICKLY=verbose

Then, all commands will be executed in verbose mode.

Specific values like staging launchpad server

Using --staging switch enables you to execute all related Launchpad stuff without reaching the real Launchpad server, but staging one instead. This is more focused on testing and is dedicated to specific command that needs Launchpad (share and release command, for instance, in ubuntu-project template). In a similar way, we can add support to other "staging" or equivalent system with that command.

As for verbose, you can export an environment variable to avoid specifying --staging in each command:

export QUICKLY=staging

But I want to use both of them

Don't panic! You can of course, add the two options like in every command line, but you still can export a QUICKLY environment variable. The field separator is ":" (as in PATH), so just add the two strings separated by it, like in:

export QUICKLY=verbose:staging

This will enable us to extend those functionalities in the near future if the Core or some templates needs it. We don't want to add too many clutter in environment variables, that's why we have only choosen QUICKLY environment variable and use IFS to separate values. Of course, that's only if you have a long suit of commands using this option, otherwise, using the corresponding option is a lot easier. All those values can be retrieved by templates: it's easier if you use a python based template, but it's transposed in environment variable whatever what was used (option or environment variable). We will detail that in next chapter.

Ok, that's it for the user side of Quickly Core. But I'm sure you have now an idea of an awesome template and you are eager to create it. You probably miss some information on that. Consequently, in next session, we will see how to create our own template. This will finish the Quickly Core tour itself. :)

Build your application quickly with Quickly: Inside Quickly part 4

Yeah! It's already the 4th zoom of your Quickly trip and it's about shell completion.

Complete everything quickly

Quickly has an advanced shell completion tool. Currently, it's only binded to bash but plans are up to catch other shells (it's very easy, just call quickly shell-completion $0 from a script and perform little black magic to know the context).

You can reread part 2 if you want to understand every cases described below. Ensure as well you have Quickly 0.2.3.

After installation

Once Quickly is set up, you have to launch a new bash to get the bash completion working. This hasn't some workaround and it's the same with other tool (bzr, quilt...)

Ok, let's try a basic example:

Outside any project

quickly [Tab][Tab]
awesome commands    create      getstarted  help        quickly     tutorial

-> We get there all builtin and template commands which can be launched outside a project.

Here, commands, getstarted, help and quickly are builtin commands. Create and tutorial are ubuntu-project template commands.

Now, let's try a basic builtin command:
$ quickly commands [Tab][Tab]
<file list of my current folder>

Ok, that means that we have no parameter to specify or that the commands command don't support more advanced completion.

Testing a template command which can be launched outside a project:
$ quickly tutorial [Tab][Tab]
footemplate               ubuntu-project

This is because the tutorial command is (in my personal installation) present in two templates, so as this command can be launched outside a template, you need to specify a template.

Then, picking one template:

$ quickly tutorial ubuntu-project [Tab][Tab]
<file list of my current folder>

That means that tutorial command doesn't have advanced shell completion either

Note that you can also do:

$ quickly --template ubuntu-project tutorial [Tab][Tab]
<file list of my current folder>

This time, as you have already defined a template, Quickly Core won't bother you to propose a template after the tutorial command.

Advanced!

You should understand why this doesn't display more commands:

quickly -t ubuntu-project [Tab][Tab]
commands    create      getstarted  help        quickly     tutorial

What's the difference with the first example? There is no awesome command[1]! It only lists builtin and ubuntu-project commands that can be launched outside a project. So, awesome command is certainly from another template than ubuntu-project in this case.

Inside a project

Common case

Let's give it a try:

$ quickly [Tab][Tab]
change-lp-project  getstarted         package            save
commands           glade              quickly            share
dialog             help               release            tutorial
edit               license            run

The list is made from builtin and associated template (here ubuntu-project template) command that can be launched inside the project (for instance, the create command is not listed).

From another template

As for help and launching a command, I can see commands from others templates, being in the same directory, that I can launch:

$ quickly -t footemplate [Tab][Tab]
commandfoo  getstarted  package     run
commands    help        quickly     tutorial

Here, I get builtin and footemplate commands that I can launch inside a project. Easy!

Advanced completion

As previously said, some commands can have advanced completion.

Command defined

They can defined it themselves (apart from the template part and command which is automatically handled by Quickly Core).

For instance, the license command from ubuntu-project defines an advanced (optional) parameters which is the license, Using shell-completion enable to discover every available licenses supported by ubuntu-project template:

Inside a project:

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

Command followed by command (headaches inside)

Do you remember part 2? I discussed about attributes on commands and we see before command followed by templates. There are also commands followed by another command. As of today, only the help builtin command has this attribute. But remember: help command is also a command followed by a template. Seems to be an interested case for testing shell completion behavior, isn't?

Outside a project
$ quickly help [Tab][Tab]
commands        help            toto
getstarted      quickly         ubuntu-project

help completion propose you with what you can get some help:

  • directly builtin commands which can be launched outside any project
  • available templates (for later completion)
$ quickly help ubuntu-project [Tab][Tab]
change-lp-project  edit               license            run
commands           getstarted         package            save
create             glade              quickly            share
dialog             help               release            tutorial

Here you get help on all builtins and commands from ubuntu-project template (as see in previous part for the help command)!

For bonus point:

$ quickly -t ubuntu-project help [Tab][Tab]
change-lp-project  edit               license            run
commands           getstarted         package            save
create             glade              quickly            share
dialog             help               release            tutorial

Same thing than previously, but using the -t option.

Inside a project

In this cas, help command completion will behave as expected after reading last chapter:

$ quickly help [Tab][Tab]
change-lp-project  edit               license            run
commands           getstarted         package            save
create             glade              quickly            share
dialog             help               release            tutorial

You have there all builtins and ubuntu-project template commands (given the fact that you are in a ubuntu-project "templated" project).

Bonus, for people who likes to complicate their life:

$ quickly -t footemplate help [Tab][Tab]
awesome     commands    getstarted  package     run
commandfoo  create      help        quickly     tutorial

Here, you are in a ubuntu-project "templated" project and you get help on all builtins commands and those from footemplate.

Miscellaneous

Option completion

Option benefit of course from completion:

$ quickly -[Tab][Tab]
-h          --help      --staging   -t          --template  --verbose   --version
Template completion

In addition to previous case of template completion, the -t/---template command has its own completion!

$ quickly --template [Tab][Tab]
footemplate               ubuntu-project

Good news is all of that is generically implemented in the Quickly Core itself. So, if you plan to create a Quickly template, you can get it also for free if you put right attributes to your personal commands (we will see that in a chapter 6).

Hope you will like this advanced completion setting (it gave me quite some headaches and a lot of trial/refactoring phases before getting it generically working and the code not being too ugly). Remember again that we will see how command can add to this completion their own level, as for help. :)

In next part, we will see miscellaneous things on the Quickly core itself.

Notes

[1] this does not imply that the listed command aren't awesome ;)

Build your application quickly with Quickly: Inside Quickly part 3

Here we go for another topic on Quickly tour! This chapter will be really fast to read compared to last one.

Getting some help with Quickly



Quickly has an builtin help command that can help you to retreive help from whenever command.

Inside a project

You can search directly help for builtin command and the ones from the associated template of your project.

template commands

In a ubuntu-project "templated" project, simply do:

$ quickly help release

to get some help from the release command of ubuntu-project template.

builtin command

$ quickly help commands

give some help on the builtin commands command.

commands from another template

As for launching commands, you can get help from other template command by:

$ quickly --template footemplate help awesome

This will print the help associated to the awesome command of the footemplate template. Nice, isn't?

Outside a project

There, you can get help from builtin command and still from template command

builtin command

As previously:

$ quickly help getstarted

template commands

From the last part, you should be able to guess what's the attribute of the help command... You got it! It's a command followed by template (but also, as I said too, a command followed by command, cf previous example)

Taking, again the example of ubuntu-project and getting some help from the release command:

$ quickly help ubuntu-project release

If you followed all the previous concepts successfully, how can I do that differently?

$ quickly -t ubuntu-project help release

got it!

$ quickly help -t ubuntu-project  release

and

$ quickly help release -t ubuntu-project

works as well!

Note that in the last case, you don't have shell-completion for the "release" field (as the template is defined after the help command)

As usual, completion is there to help you in all those cases.

All is done by the core itself, if you develop a template, you will get all those automation from Quickly Core for nothing! Great, isn't?

Next chapter will be on the shell-completion itself! It will help you to understand that the expression "all is guided through bash-completion" is not a wild dream.

NOTES:

  1. no, quickly help help as "googling google" doesn't make the world dying from entropy creation cycle.
  2. yes, quickly quickly exist. What does it do? $ quickly help quickly to know it, of course :)

Build your application quickly with Quickly: Inside Quickly part 2

This session is giving some fundamentals on Quickly, let's dive into them!

Two components: core and template

There is mainly two parts in Quickly: Quickly Core is a command line parser and context checker. It has builtin commands and can handle and launch template commands. Quickly templates are group of commands and files that are used on a certain purpose: you can create templates to manage your documents, a LaTeX skeleton, or to easily create projects gathering a certain number of technologies.

Consequently, using templates, you can create a project which will be binded to your templates. Templates can be written in whatever language you wish. That's the reason why we don't use optparse in Quickly Core component.

The application can be extended to run on other systems, and use different tools, etc... There is nothing stopping you from doing that. However, if you stray off the chosen path, some of the commands may no longer work for you.

We would love to see, for instance, a fedora-project template, gnome-project one, plasmoid-project, zeitgeist-plugin... and this tour will give you some trick to help you create one (in part 6).

But again, consider that you can create your template for everything, like managing your documents (without even creating any project). You can give some commands to create a new "company's set of documents" for a secretary ; he/she will complete them and then "quickly share" (for instance) for uploading it in the company's sharing documentation server. Quickly Core is not binding into developing only, power is completely given to template developers.

The ubuntu-project templates

The ubuntu-project template is the first template released today (some more coming for creating gedit plugins and ubuntu-game template).

The ubuntu-project template enables you to easily create a project using a given set of strong opinionated chosen technology ubuntu's people are mostly using:

  • Python for the language
  • pygtk for the UI framework
  • Glade for the UI editor
  • Gedit for the code editor
  • bzr for version control
  • Launchpad for code hosting
  • desktopcouch for storage/database

The idea is to make choices (as Ubuntu make choices in their default applications list) for developers wondering what technology is "good to use for...". Choosing in a technology jungle can sometimes be a mess. Nevertheless, this is just a the skeleton: nothing prevents you for removing the desktopcouch part if you don't want to use it for instance (same for other pieces of technology).

It's also easy to create your own template from ubuntu-project to remove what part you don't want (if you are found of git and don't want to use bzr, for example). More on that in next sections.

Also note, there is no Quickly runtime or base class library. Using the Ubuntu Project won't bring in any dependency on Quickly itself.

Templates, context and command management.

General

So, we have builtin and template command and you can also be inside or outside a project. All that forms a context.

A project created with the create command will be associated with the template used in the create command like in:
$ quickly create ubuntu-project foo[1]
This command can only be launched outside any Quickly project and needs a template to be specified on the command line.

Then, when you are in a project, you can launch $ quickly <command> to launch the <command> from the binded templates or Quickly builtin command. No need to specify a template.

Also, you can launch any command wherever you wish in the project hierarchy (subfolder, subsubfolder...), the command will behave the way it's designed.

Get the list of all available commands.

Nothing more easy, just run wherever you wish:

$ quickly commands
[builtins]      commands
[builtins]      getstarted
[builtins]      help
[builtins]      quickly
[ubuntu-project]        change-lp-project
[ubuntu-project]        create
[ubuntu-project]        dialog
[ubuntu-project]        edit
[ubuntu-project]        glade
[ubuntu-project]        license
[ubuntu-project]        package
[ubuntu-project]        release
[ubuntu-project]        run
[ubuntu-project]        save
[ubuntu-project]        share
[ubuntu-project]        tutorial

builtins are... builtins command and others are templates owning commands. You can even check there that commands is a builtin one.

Choosing the template

You can still launch commands from another template in your current project. Let's say you need the "awesome" command from the bar template to be launched in your current ubuntu-project "templated" project, you still can with $ quickly --template bar awesome[2]

Attributes of commands/Advanced brain breaker :)

WARNING: this part can be seen as quite tricky. It's needed if you really want to understand the template and builtin commands behavior or want to create your own template. If you don't understand/want to read it, don't desesperate and just jump into the "Ok, you killed me, what do I really need to know?" section :-)

Command attributes

As already said, some commands (templates and builtin ones) can either:

  • be launched outside a project only (case of "create" from ubuntu-project template command, for instance)
  • be launched inside a project only (case of "release" from ubuntu-project template command, for instance)
  • be launched outside or inside a project (case of "tutorial" from ubuntu-project template command, "commands" builtin command, for instance)

The check is done during command launch (and shell-completion filtering as well) to ensure user doesn't perform any mistake (as users make some mistakes sometimes, don't they? ;)). For instance, if you try to launch a command which can only be launched inside a project: didrocks@laptop:~/not_a_quickly_project$ quickly --template ubuntu-project release
ERROR: Can't find project in /home/didrocks/not_a_quickly_project.
Ensure you launch this command from a quickly project directory.
Aborting

Template command launched outside a project must be followed by a template if not specified as an option. Of course, this enables Quickly Core to know in which template to find the command. This will give:

$ quickly create ubuntu-project foo
                 ^^^^^^^^^^^^^^ ^^^
                     template  command arg

or:

$ quickly -t ubuntu-project create foo
          ^^^^^^^^^^^^^^^^^        ^^^
          template as an option  command arg

Same for tutorial command, which is an ubuntu-project command:

$ quickly tutorial ubuntu-project
                   ^^^^^^^^^^^^^^
                   template following command

or:

$ quickly -t ubuntu-project tutorial
          ^^^^^^^^^^^^^^^^^
         template as an option

Note: -t templatename can be set wherever on the command line.

As we will see in a later part, shell-completion automatically propose template commands that can be launched outside a project if you are outside a project, or inside if you are ... in a project folder. :)

As builtin commands are generalists, most of them doesn't need any template. But some have the attribute "followed by template" which will need also a template (example: 'help', 'quickly') specified on the command line.

An additional attribute we will se later is "followed by command" (case of the help command). There will be a dedicated part of the help.

Launch a template command outside a project

In case you launch a template command which is part of a template without specifying the template (either with -t option or following the command), you will have a message like that:
$ quickly tutorial
ERROR: tutorial command must be followed by a template and no template was found on the command line.
Candidates template are: footemplate, ubuntu-project
Arborting.

That means that both footemplate and ubuntu-project templates have a tutorial command and Quickly in all its kindness found them to help you. :)

So, then, you can try to launch (if quickly tutorial doesn't take any additional argument, which is the case): $ quickly tutorial footemplate or $ quickly tutorial ubuntu-project.

Ok, you killed me, what do I really need to know?

Phew, this was the harder part of Quickly's concept. Now, the following will seem to be really easy once you get this. In any case, shell-completion will only propose in the current context what you need/can launch (we will discuss that later). So, if you are lost, just let you guided by it, it will propose whenever template/command args you need to specified in the current context. :)

Only knowing what is a template and a project should be sufficient for a daily (and happy? ;)) Quickly user.

Next part will be on getting help on commands.

Notes

[1] foo can be also path/to/foo if path/to exists

[2] -t instead of --template if you are lazy :)

Build your application quickly with Quickly: Inside Quickly part 1

Here is a suit of little blog posts regarding the Quickly application.

Quickly Logo Even if an awesome presentation by Rick Spencer has been done during last Ubuntu Developers Week, we will get there a little deeper on Quickly's technical side and possibilities. We won't enforce the tutorial side as well as there is already a rocking one in Quickly itself.

First, what is Quickly?

Taken from Launchpad:

Quickly helps you create software programs (and other things) quickly. You can select from a set of application templates and use some simple Quickly commands to create, edit code and GUI, and publish your software for others to use. Quickly's templates are easy to write. So if you are a fan of language foo, you can create a foo-project template. Or if you want to help people making plugins for your killer app, you can make a killer-app-plugin template. You can even create a template for managing corporate documents, creating your awesome LaTeX helpers The sky is the limit!

Given the richness and variety of the Linux platform, programming on Linux should be easy and fun. However, it's not easy and fun because it is too hard to learn. It is too hard to learn because there are too many choices, and too much information to wade through. Quickly strives to make programming easy and fun by bringing opinionated choices about how to write different kinds of programs to developers. Included is a Ubuntu application template for making applications that integrate smoothly into the Ubuntu software infrastructure.

GTD is easier with GTQD (Get Things Quickly Done)!

In a nutshell, creating application should be FUN and EASY.

Obligatory screenshot

Ok, I think you are eager to see a sexy screenshot of Quickly. Impatient? Here it is: Quickly Capture

Oh, didn't I mentioned that Quickly is a command line tool? :) It should be easy to integrate with existing GUIs and it should also be easy to use Quickly to create a Quickly GUI.

Get started

After installing Quickly, you can launch $ quickly getstarted to get some hints on how-to-start.

Useful links

The good new is that Quickly 0.2.2 has landed into karmic. Just give it a try! (aptitude install quickly and relaunch a bash if you want to get all the advanced shell-completion goodness we will explain later).

The Quickly tour is going to take off and hope you will enjoy the flight :)

Next session will be on basic Quickly concepts: Quickly Core and templates.

Topics of this 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
  9. Part 9: package your app and publish it with ubuntu-project template

Design experience and demos in GTK and Clutter

Well, coming back from vacation, I had a couple of hours to "kill" in the train.

I saw a few days ago the awesome work of Davyd Madeley on animating GTK+ and Clutter-Gtk from client-side-windows based on the first step from Alexander's Larson. Reading the comments some people say "this is sooooo cool, but totally unuseful".

That's the reason why I tried to figure out some pratical examples where some animations can teach about the component/widget the user is currently interacting with. Giving some blink effects so that people can understand a concept has already been successfull: take the example of the cube in compiz which has helped a bunch of GNU/Linux newcomers to understand what really a worspace is.

In my experience, the tab concept is quite difficult for some people like my mother, not having the habit of it (it has never come to her minds that it's like a traditional phone notebook). So, maybe some animations can help them to realize what it is.

I built Davyd's version of clutter-gtk and other stuffs and then, began to write some realistic animations on the GTK Notebook component. BEWARE: as the frame can't be currently reparented and as I need to have one actor by frame, the current implementation is very hackish and just there for some proof of concept (code here for all animations below).

The first one is just a fade in/fade out, very unobtrusive.


clutter gtk fading

Ogg version here.

Second is a little more noticeable, with the new frame coming and overlapping the previous one.


clutter gtk fade and show

Ogg version here

Third is maybe the best in term of representation: we change the current "sheet" (the frame) and put the new one in front:


clutter gtk fade and move

Ogg version here

The two last ones are more for fun. Not that they don't represent (even maybe better than the previous one) the real behavior of such a component, but they take a lot of space on the screen:

Rotating from the left:


clutter gtk rotating left

Ogg version here

An finally, rotating from the bottom:


clutter gtk rotating bottom

Ogg version here

So, what do you think about those, does that bring a better user feedback? Maybe we can explore that way to make a properly binding between clutter and GTK for making such things. With Clutter, GTK components can be more interactive and attractive.

Of course, we still need a default fallback for not forcing clutter, though.

Changement de licence : just in time!

Comme annoncé précédemment, la documentation d'ubuntu-fr vient de passer en CC:BY-SA 3.

Ce grand pas dans la simplification des licences nous permettra d'avoir une politique de licence plus claire à l'avenir.

Or[1], une nouvelle fois, sur un tel type de wiki ouvert à tous en écriture, nous tenons sur votre participation et votre plus grande vigilance dès que vous copiez un texte afin de respecter des licences et copyright des auteurs initiaux, concept au cœur même du logiciel libre.

Notes

[1] Certains comprendront

Changement de licence de la documentation d&#39;ubuntu-fr

Vu que le site http://suivi.ubuntu-fr.org est tombé et n'est pas prêt de revenir à la vie, L'association ubuntu-fr vous fait passer les informations dorénavant par ce canal.

Comme certains le savent sûrement, le wiki d'ubuntu-fr est actuellement sous double licence GFDL et CC:BY-SA.

Or ces deux licences sont incompatibles (et notamment la GFDL oblige de lister le texte complet de la licence du wiki sur chaque page, ce qui n'est pas des plus commodes, vous en conviendrez). Nous sommes donc en état de violation de licence, tout comme wikipédia l'était.

Or, par la publication de la GFDL 3 en fin de l'année précédente, cette version permet de passer le contenu (sous certaines conditions comme la date de création, la volumétrie, etc.) en GFDL sous CC:BY-SA avant le 1er août 2009. Après avoir travaillé plusieurs mois avec l'équipe de wikipédia, nous avons pu lever que les clauses s'appliquent à nos deux wikis (même si ce texte a été premièrement rédigé pour wikipédia). Remplissant donc ces critères et pensant qu'une licence est beaucoup plus claire que deux, nous avons donc décidé de passer, à l'instar de l'encyclopédie libre, sous licence CC:BY-SA 3 et ainsi de régulariser ce qui devait l'être.

Par ce texte et dans cette phase de transition, il n'y a pas besoin de l'autorisation des contributeurs. Cependant, nous tenions à vous le préciser, pour que vous puissiez retirer tout texte de votre initiative dans le cas où ce changement de licence ne vous convenait pas.

Le changement s'effectuera fin juillet 2009 et nous tenons à votre participation et votre plus grande vigilance dès que vous copiez un texte sur le wiki afin de ne pas aller à l'encontre des licences et copyright, cœurd même du respect du logiciel libre.

Pour les intéressés, il y avait un excellent lien sur le site du framablog.

End of 10th Libre Software Meeting in Nantes, France!

Here we go! After 5 days of presentation on differents projects related to Free Software, the whole ubuntu-fr team is exhausted and happy of the result. This event is especially a great place to meet again and again friends of FOSS ecosystem (contributors, other distribution administrators…).

rmll_nantes1.JPG

We also used for the first time the ubuntu-fr.org flag we got from ubuntu Peru taken at last UDS thanks to nxvl.

rmll_nantes2.JPG

This edition was particularly oriented on migration and change management to FLOSS. Like each year, conferences, round tables, and workshops were proposed to the visitors during those 5 days. Therefore experts, beginners, professionnals or just curious people were able to find the interlocutors who had provided answers to their questions among the various addressed themes. Moreover there was the associative village where anyone could have a walk. Furthermore, people were invited to discover this universe which doesn’t just focus only on the IT domain. Indeed, the 10th RMLL was the opportunity to introduce new themes: "Free Hardware", and "Free Art & Culture".

Thanks again to all ubuntu-fr people present at the event. We gave 3 talks: one on organizing a Free Software event (by olive), one on ubuntu-fr organization (Christophe Sauthier) and the last one on the release process of Ubuntu (myself), following Lucas Nussbaum's speech on collaboration between Free software projects: the example between Debian and Ubuntu. No troll included of course. ;)

RMLL site.

In the heart of the French Ubuntu Party

This is the transcript of kinouchou, a recent member of ubuntu party core team organizer, experiencing her first ubuntu party on the organizer side last May, for Jaunty Jackalope.

(Credit to tshirtman for the translation)

I started using Ubuntu 3 years ago, without ever being active in the community. After I went to the Ubuntu Party of November in Paris, I decided to take my share of community work. Even if I was well aware a Ubuntu Party (UP) was not improvised, I had not the slightest idea of all the connections under the hoods about the whole management. Here is a part of what's the Ubuntu party 9.04 of Paris looks like behind the curtain.

For me, It all started near of end of February, start of March, at the time of the launch of the new community site, ubuntu-party.org. Foundations where here, but a lot of things needed their share of care, and all the articles to write! Deadline? now!... Well I'm a bit exaggerating, we had a week, more than enough!

In the meantime, was the first IRL (in "real" life, whatever that mean) meeting for the preparation of the UP. This day, date and place for the event where chosen and booked; we just had to think about what to do, when to do it, and how to manage our place, simple details! :) It's not easy to create a planning, even being in agreement about what we are going to do, and it was not even the case for everything! So we had to juggle with schedules and rooms, which are not extensible. So we thank about lightning talks which were new. And for the communication plan, a flyer was anticipated, but we had to find the design, a printer (not the device) not too expensive, and a distribution plan. The good news was, March is a month full of events : Solution Linux, Intercite, Libre en Fête... As many occasions to make our advertisement. Obviously, as Ubuntu-fr (ubuntu-party is the events division of Ubuntu-fr) was present, we needed to make them up and find people to manage the stands.

April is already coming, 9.04 is nearer and nearer, and the second meeting happens. This time we start by going back on the March event, but the main subject is obviously the UP. Report on the website status, still a lot of articles to write. CDs! Yes do you remember why we are doing an UP? Because there is a new version of Ubuntu coming out. A French localised iso file and sleeve, and to put under press in time. Schedule is tweaked, slight changes are made and volonteers are recruited. Assessments are made about direction marks. This time UP is in the same as the "nuit des musée" (night of museums: all museums are open and free for some hours of the night), so the cité des sciences (which host the UP) proposed us to handle a nightly session. "Are we doing it? What are we going to do?", assessments on the associations that will be present. On the cost side, we have to count goodies (yes! it indeed cost money), communication and preparation costs of events (even if we try to get most of it for free), and small things as Ubuntu-fr servers and all what makes Ubuntu-fr alive. Choice of goodies is very important. This year, we have ubuntu-fr badges and updated mugs (with a very nice koala).

The more the deadly deadline approach the more we see the whole lot of things waiting to be done. Did all the lecturers confirm their presence? Woo! New planning change! New work-group ideas... well, we will save this for next time, no time left!

Jaunty comes out at least, and pressure rise up again. Finish the iso image and the sleeve, finish the paper schedule, open lecture inscriptions. There is a weird feeling of both wanting to be the 16th for being at the event, and wanting to be the 18th for all being ended, and be able to rest, at least. This sums up with the feeling that time pass to quickly and nothing will be ready in time.

End of May, last meeting, we only speak about the pratical organisation of the two days, mainly useful to new volonteers, for they need to know what to say and what to do. I only spoke about IRL meetings, IRC meetings being impossible to count.

The real day is here, everything is ready, or so. The general impression is not of very big crowd, but the public is really here. Some times are cooler than over, but no time to get bored. The two days passes at incredible speed, and all already finished. Times of the first reports, some thought we would have few people (we even polled on the probable outcome), but no! Despite the fact May is the month of exams and long week ends, this new UP gathered about 4000 persons like the November one!

Why this article only now? Well two weeks ago was the debriefing, a good way to know what went wrong and make it better next time. If we had 4000 people in May, although the period not being very favorable, November's one is likely to be out of magnitude, so we will need again many new people for preparations, design, disc image, website(s) and obviously the very day of the UP :).

Petit bloc note 1 - admin GNU/Linux

Car il est toujours bon d'avoir un note de côté sur les lignes de commandes "avancées" utiles : http://cb.vu/unixtoolbox.xhtml

UDS, jours 2-3-4

Puisque certains se plaignent que je continue pas la série des billets, voici donc un petit cours de rattrapage :

Mardi

Première session : table ronde de la Desktop Team où l'on a pu voir les projets en cours pour karmic (la future 9.10). Beaucoup de personnes sont venues assister à cette dernière et on a pu lister les différents points à aborder qui donneront lieu à des sessions plus tard dans la semaine. La future LTS (10.04, 10.10 ?) a également été discutée. L'idée principale est que karmic sera une sorte de "fedora" (je nierai avoir dit ça ;)), avec une technologie de pointe, mais éventuellement moins stable… Enfin, le moins possible tout de même. :) Après quelques temps de stabilisation, la prochaine LTS sera ainsi capable d'être consistante sur une infrastructure moderne.

J'ai ensuite pu suivre une session sur la décompression des paquets pendant le téléchargement, leadée par Mark lui-même. Beaucoup de problèmes techniques sous-jacents. À suivre, donc…

Session suivante : le démarrage de Karmic. L'idée serait même de supprimer l'écran de chargement (le boot pourrait prendre une dizaine de secondes sur un système de stockage flash), mais de nombreux facteurs comme la vérification du système de fichier tous les 30 démarrage va en contradiction de cette idée. À noter aussi que grâce au KMS (Kernel Mode Setting), plus de « clignotements » au passage lors des changements d'affichage. X (le serveur graphique) pourrait être démarré après moins de 3 secondes d'après les remarques de Scott James.

Pour conclure la matinée, configurer le RAID par défaut sur l'édition serveur a été abordé, mais il risque finalement de ne pas être implémenté.

L'après-midi (je saute les plénières déjà décrites par Christophe), Sebastien Bacher a mené une discussion sur le remplacement de rhythmbox par banshee dans l'installation par défaut. Grâce à une excellente présentation (non, je ne parle - presque - par sous la contrainte :p), le sujet n'est pas parti en troll. La conclusion est que si les développeurs upstreams règlent quelques détails sur banshee, ce dernier sera installé par défaut sur la 9.10 ! Enfin, j'ai assisté à la réunion sur la suppression de sudo par défaut… Mais ce ne sera finalement pas le cas.

Mercredi

Vous ne le savez peut-être pas, mais la plupart des distributions utilisent une version ancienne de gdm (l'appllication qui vous demande votre login/mot de passe pour vous connecter). En effet, Ubuntu Jaunty se base la version 2.20 alors que la version de GNOME dans cette dernière est la 2.26 ! Cela signifie surtout que la version n'a pas changé depuis un an et demi. En effet, le nouveau gdm lève un certain nombre de problèmes (pas de connexion XDMCP, impossibilité de gérer les thèmes). La Desktop Experience team va mettre quelques efforts là-dessus (le projet est très peu maintenu par GNOME) et le nouveau gestionnaire de connexion sera donc mis à jour pour karmic. Là, encore, on ne dirait pas, mais il s'agit d'un changement drastique.

Ensuite, une session sur le contrôle parental m'a permi de présenter le projet gchildcare dont je m'occupe. En effet, il est possible d'utiliser les outils bas niveau pour le controle parental, mais il y a pas (ou presque, si l'on considère l'ergonomie) d'applications graphiques pour le configurer? Je vais y pousser un effort final pour qu'il soit prêt à être releasé pour karmic (non par défaut, bien évidemment).

J'ai assisté à la première heure de la session sur l'audio et Ubuntu, beaucoup de choses arrivent encore et pulseaudio s'est bien stabilisé. Bref, de ce côté là aussi, ça progresse.

Enfin, pouvoir configurer plus facilement les applications par défaut (notamment, lorsqu'on installe une application pour une tâche, une intégration avec des priorités) sera aussi investiguée.

James Westby, après le repas, a pu montrer les progrès de bzr pour le packaging et il a été possible notamment d'échanger avec l'expérience des différentes teams présentes. L'objectif est de construire des process communs pour toute la distribution et de rendre la gestion du packaging plus simple.

Mark, comme à son habitude, passe une dizaine de minute en naviguant de session en session. Ce fût le cas pour « daily build a package » où l'idée est de permettre aux développeurs, quelque soit leur application, de pousser très facilement et automatiquement dans des dépôts expérimentaux une version journalière de leurs applications. Cela leur permet d'avoir plus de testeurs, et donc de les aider dans leur développement.

Comme l'a déjà décrit Christophe, la soirée a été marquée par le match de foot où la foule s'est déchainée à la fin du match (nous ne sommes pas loin du stade). On a pu participer à la joie collective (avec Daniel Holbach et Soren) en levant les bras et criant « I don't care about football » (je m'en fou du foot ;))

Jeudi

J'ai participé au deux sessions sur le burnout, mais comme Christophe a déjà développé le sujet, je ne le ferai pas. Sinon, Firefox 3.5 sera (et reste) le navigateur par défaut de Karmic. Chromium devrait faire son entrée dans les dépôts officiels.

Ensuite, une session sur GNOME3 s'est tenue. Ce qui est certain est que gnome-shell ne sera pas par défaut pour la prochaine LTS (au moins, tant que le problème de l'absence de tableaux de bords dans GNOME3 sera présent). Il y a également beaucoup d'opportunités pour aider le projet GNOME et c'est ce que la desktop team. Beaucoup de changements de ce côté aussi : webkit par défaut, changements  et déprécations de librairies… Bref !

gnome-scan m'a surtout marqué dans l'après-midi. L'idée est de remplacer l'utilitaire par défaut pour scanner les documents (avouez, xane est horrible graphiquement parlant) pour inclure gnome-scan par défaut, qui utilise le même backend. Par contre, il y a beaucoup à modifier ici pour supprimer les librairies utilisées qui ne sont plus maintenues.

Vendredi matin

La revue des changements en cours a été faite. Ensuite, empathy vs pidgin a été discuté et Empathy va remplacer le premier ! Encore un changement important pour karmic. L'import des contacts sera fait automatiquement. Ekiga sera éventuellement supprimé du CD (donc de l'installation par défaut), pour gagner de la place qui manque affreusement…

Sinon, l'UDS a vraiment une ambiance exceptionnel. On se sent totalement faire parti d'une communauté.
Voici pour l'instant, il me reste un après-midi à passer, je posterai sûrement cela en conclusion demain :)


UDS, jour 1

Après quelques heures où le serveur faisait des siennes et un reboot manuel était devenu obligatoire, je n'ai aucune excuse pour procrastiner :)

Après une introduction par Jono, Mark et Scott James lors d'une session en plénière où la connexion Wi-Fi rencontrait quelques problèmes (ne jamais compter sur une connexion Internet valable quand vous tenez une conférence avec des geeks connectés massivement ;)), il était temps de commencer les sessions de l'UDS.

J'ai suivi quelques sujets dans les sessions environnement de bureau (desktop), où je vais pouvoir donner un petit coup de main ainsi que des sujets sur la communauté. Comment attirer de nouvelles personnes dans la communauté de développement de la distribution (où, comme on a l'habitude de répéter, il ne suffit pas d'être développeur !) ? Bref, des idées ont fusé et il ne reste « plus qu'à » les implémenter.

J'ai également participé passivement à la dernière session consacrée à Kubuntu (oui Anthony, c'était pour toi :p). Il se fait tard, il est temps d'avoir une bonne nuit de sommeil, vu que Christophe a mis hier soir plus de 3 heures à passer un niveau dans un obscure jeu en flash (oui, il était parti au départ pour bosser sur une carte, mais pas celle d'un jeu !)… On a donc pu dormir que 4 petites heures. Bref, l'UDS, c'est difficile ;)

UDS day 1 and 4K attendees in Ubuntu Party Paris!

I was able to attend to some very great meetings today. Sorry for delaying photos for tomorrow, but procrastination is a continous process ;)

After the plenary session (and some Wi-Fi connection issue… never rely on it when people that attends your conference are geeks and massively connected to it) to introduce the biggest UDS ever, where Jono, Mark and Scott James gave an introduction talk. I followed some desktop tracks where I will give a little help (Rick, I will hopefully send you a merge request later ;)) and Community ones. Last hour was consecrated to Kubuntu.

Don't forget that you can connect and follow what happens during UDS :

PS: apparently, my title "oooppss, we did it again" was not attractive enough for people to look at planet ubuntu and be aware that we had again more the 4 000 people at our party, in Paris. So, that's the time to get it fixed. Done! ;)

UDS day 0

Thanks to Canonical sponsorship program, I'm abled to attend to the Ubuntu Developer Summit handled at Barcelona, Spain!

The hostel is luxurious - especially the view from the room I share with the great "4K man" at the 15th floor, obligatory screenshot photo tomorrow - and the athmosphere is awesome (already met a lot of people I usally speak with in IRC). Of course, I have already hugged Daniel Holbach. ;)

Consequently, tomorrow, discussions on Ubuntu will begin. I will try to post on planet ubuntu in a daily basis in my main interests that are desktop/server/community topics.

For French people, there is some quite similar (but not exactly same) post entry here.

UDS, day 0

Quelques heures avant de prendre mon avion pour aller à l'Ubuntu Developer Summit, à Barcelone en Espagne, voici un billet d'introduction, à ce que j'espère, deviendra une série quotidienne.

Pour ceux qui ne connaissent pas, il s'agit de la grande messe bianuelle où les décisions pour la prochaine version d'Ubuntu sont prises. Développeurs de Canonical et de la communauté sont réunis ici, certains sponsorisés par Canonical pour le voyage et l'hébergement (comme notre président, Christophe Sauthier et moi-même) afin de discuter des différentes implémentations et axes de développement de cette version, le Karmic Koala pour cette occurrence.

Vous pouvez suivre en direct les différentes sessions de cette édition et même communiquer par IRC, si tout va bien :)

Pour ma part, je naviguerai entre différentes discussions autours de l'environnement de bureau (le desktop), le serveur et bien entendu, la communauté.

À demain j'espère pour un résumé de cette première journée.

PS : je ne passe que ce premier billet sur le planet april afin de ne pas spammer ces derniers :) et tous les autres sur le planet ubuntu-fr, vu que le sujet risque d'intéresser plus directement ses lecteurs. :)

Déploiement d&#39;Ubuntu en Corrèze

J'avais eu aux dernières Rencontres Mondiales du Logiciel Libre l'occasion de discuter pendant une petite heure des bienfaits du logiciel libre et de parler de la distribution Ubuntu à une représentante du département de Corrèze. Cette personne était venue faire le tour de ce qu'il existait dans le monde du Libre et je pense que toutes les intervenants rencontrés ont permis de faire un état réel des lieux.

Même si malheureusement l'association ubuntu-fr n'a pas été contactée par la suite, apparemment, la présentation a porté ses fruits : un déploiement massif sur les ordinateurs portables de cette région est en cours, et ce sur Ubuntu !

Pour de plus amples informations, c'est sur linuxfr.

Je fais juste un petit appel à tous ceux qui déploient de telles solutions : je pense que les associations d'utilisateurs qui promeuvent une distribution/solution sont toujours heureuses d'être contactées et d'aider autant qu'elles le peuvent ! Pensez-y la prochaine fois ;)

Ubuntu Party Paris: Oooopss, we did it again!

We have had, as every 6 months, another Ubuntu-party in Paris organized by ubuntu-fr. It has been a success: more than 4000 attendees - exactly 4019, as counted by Cite des sciences et de l'industrie, our host - in two days!


Those two days were handled under the sign of conviviality: friendliness, sharing of knowledge... In a nutshell: Ubuntu :)

More than 15 conferences were broadcasted directly over the Internet, covering large topics (technically targeted or not), like for instance "computer science and freedom", the GNOME project, virtualization, the Mozilla fundation, the Debian project, the open formats, without forgetting the crowded conference of the quadrature du net related to the French HADOPI "3 strikes" law.

Regarding what we added to this event comparing to previous ones, we had a nightly part from 7PM to 11PM: more advanced topics on green IT and Free software, how to customize ubuntu, a LAN party made with FLOSS games...

As usual, a lot of classrooms have been done during the whole event, dealing with basics needs "how to use Ubuntu - beginners' guide", "go deeper into Ubuntu" and more difficult ones like "initiation to command line", "how to triage bugs" and then even a bug jam! That way, we can have a wide variety of profiles attending. Lprod was also present and made an awesome work showing without any interruption video and audio capabilities of our lovely GNU/Linux distribution.

As dozens and dozens of computers, our now famous mugs in recycled plastic have been updated too. You can now see in this new edition a beautiful koala, referencing Ubuntu 9.10 mascot, the "karmic koala". It was also the occasion to discover the 6th update of the Free Book (CC:BY-SA licence) "Simple Comme Ubuntu" (Let's translate it to "Easy like Ubuntu"). We were almost running out of time to release it for the party. A big hug to Mathieu (my editor In Libro Veritas) in having succeeded in this performance so quickly.

Oxyradio , a French webradio promoting Free culture has broadcasted during the entire event and interviewed most of speakers. A lot of photos, conferences and oxradio podcasts are available in the mutimedia section.

Thanks to every non profit organization present in the little "Free culture Village" (parinux, framasoft, l'april, mozilla) and every participant, making this event a real success, again!

The lotery has been appreciated as well, closing the event: goodies, Tee-shirts, books, a fonera, a linutop... and some Ubuntu Cola, imported from the UK :)

Over 4000 attendees, challenging last november record: it's just awesome! We - the core organisation team - were the first surprised as we were pretty pessimistic about how many attendees we can have this time because May is traditionnaly more difficult to attract people to such events. Indeed, this month has a lot of free/off vacations days, exams and even the weather itself didn't help to have people indoor. We were wrong and that's a good news. :)

So once again: thanks to everybody involved in it! We need a lot of people on D-Day in the differents booths and thanks to them, we can deal with such a wide public. Never forget: "I am what I am because of who we all are".

The next Ubuntu Party in Paris is scheduled the 28th and 29th November. Will you be there? We will!


 

All pictures are licenced under CC:BY: quesh, mauriz, ricomorotrad

Disclaimer: my apologies for the headline. Seems that I was having some troubles listening to the radio when hacking during my childhood :)

MERCI !

Que dire de plus ? Merci à tous ceux qui ont fait de cette Ubuntu Party un succès, totalisant plus de 4000 visiteurs en deux jours !


Ces deux journées ont été placées sous les signes de la convivialité : entraide, échanges et partages humains. Bref, Ubuntu n'a jamais aussi bien rencontré sa traduction, « humanité ».

Une des salles d'installation

Les conférences diffusées en directes par l'Internet, ont abordé de vastes sujets techniques et moins techniques, comme par exemple informatiques et libertés, le projet GNOME, la virtualisation, la fondation Mozilla, le projet Debian, les formats ouverts, sans oublier l'éveil citoyen de la conférence de la quadrature du net concernant la loi HADOPI.

La conférence de Jérémie Zimmerman de la quadrature du net 9.04

La nocturne, qui s'inscrivait dans le cadre de la nuit des musées fut particulièrement appréciée, tout comme le niveau des cours, activités et conférences données. Accessibles aussi bien au néophytes (prise en main d'Ubuntu, aller plus loin) qu'aux initiés (cours sur la ligne de commande, bug jam, personnalisation d'Ubuntu), nous avons pu rencontrer un large publique. Lprod a également fait un travail remarquable dans la démonstration des possibilités vidéos et audios de notre chère distribution.

Cours d'initiation

Lprod démontrant les possibilités vidéo sous GNU/Linux

Tout comme l'ordinateur de nombreuses personnes, les mugs en plastiques recyclés ont été mis à jour pour cette édition et arborent maintenant un petit koala qui sera la mascotte la future version d'Ubuntu, la 9.10, « karmic koala ». C'était également l'occasion de découvrir la mise à jour du livre libre « Simple Comme Ubuntu » où la course fut rude pour sortir le livre à temps. Un grand merci à Mathieu pour la réactivité de l'éditeur In Libro Veritas.

Mug mis à jour 9.04

Simple Comme Ubuntu, version jaunty jackalope (9.04)

Oxyradio a également pu couvrir l'intégralité de l'évènement dans un sprint éhonté. Bravo à vous \o/

Oxyradio, suivez la party en directe !

Les résultats de la tombola de dimanche sont accessibles sur le site de l'Ubuntu Party tout comme plus de photos dans la section multimédia. À suivre dans la semaine : les enregistrements vidéos/audios des conférences, et très bientôt des podcasts d’oxyradio !

Plus de 4000 visiteurs, égalant le record de novembre dernier : ce n'était pas gagné d'avance et peu de personnes dans l'équipe organisatrice pensait arriver à nouveau à ce résultat. Et ceci, particulièrement en mai, époque plus propice aux congés et examens. Mais les chiffres donnés par la cité des sciences et de l'industrie sont là et nous a donné tort.

C'est donc l'occasion rêvée de vous dire un grand merci : installeurs, personnes présentes à l'accueil, aux boutiques, les conférenciers, les associations présentes (parinux, framasoft, l'april, mozilla), oxyradio… Nous vous devons tous ce résultat ! Sans vous, ubuntu-fr ne serait pas une association avec laquelle nous avons envie d'y mettre tant d'énergie. J'y inclue bien entendu les équipes de modération (forum, IRC) et tous ceux qui travaillent sur le site, car c'est aussi grâce à vous que tout cela arrive. Merci également à tous ceux qui nous envoient régulièrement des dons. Nous n'avons que peu de temps pour vous répondre, nous le faisons maintenant : MERCI !

N'oublions jamais : « je suis ce que je suis grâce à ce que nous sommes tous ». Rendez-vous à la prochaine Ubuntu Party parisienne les 28 et 29 novembre.

En attendant, n'oubliez pas les autres Ubuntu party en France référencées sur la page d'accueil d'ubuntu-fr et sur Ubuntu-party.

Les photos sont toutes en CC:BY : quesh, mauriz, ricomorotrad

- page 3 de 4 -