OneConf in Oneiric and the way forward…
Par Didier Roche le mercredi, octobre 5 2011, 14:40 - Lien permanent
A little bit of retrospective
OneConf is a pet project I'm trying to push since UDS Barcelona. The full idea is originally described on this wiki page: OneConf is a mechanism for recording software information in Ubuntu One, and synchronizing with other computers as needed. In Maverick, the list of installed software is stored. This may eventually expand to include some application settings and application state. Other tools like Stipple can provide more advanced settings/control.
.
Well, the definition today is quite different as you will see below.
Since then, a lot of other projects like unity took my time off and I couldn't really concentrate in this pet project. But now, even with some small late churn due to software-center moving to gtk3, OneConf is installed by default in Oneiric and syncing is active since beta2! It doesn't depend anymore on Ubuntu One but using its own infrastructure (linked to ubuntu sso, so a launchpad account, a ratings and review account, or still an Ubuntu One account is working with it). The sync is done linked to the new software-center webui infrastructure.
I'm really happy I've been able to take enough time to bring the needed polish so that I'm confident with OneConf installed by default right now on your Oneiric machine.
Usage
You can activate it in software-center by clicking on File -> Sync between computers… You will get the first time an ubuntu sso dialog asking for your crendential if you never reviewed any application in software-center (OneConf is using the same credential). Then, you are directed to the "Installed view" which is tweaked to show OneConf hosts.
The first item "This computer (name)" will show the traditional Installed view from software-center. What is interesting is when you start setting up more than one computer in software-center to share your inventory. Those will show up in the view, and selecting one of them will show the difference between installed applications (and technical items) on the current computer and the remote one. Selecting the different elements enables you to install/uninstalled applications as you are traditionnaly able to in software-center.
Syncing is done regularly in the background as soon as you start sharing your inventory and you can see the last time the computer was synced. All data (basically the package list) on the syncing infrastructure are personals and linked to your unique sso id.
Note that the applications and package list is refreshed with any kind of installation method you are using: software-center of course, but as well, apt, synaptic, aptitude… PPAs application also will show up if the ppa is installed on the local computer.
You can as well stop sharing the current computer in the UI, and you will see it synced shortly to others.
That's cool, but can I have more?
Now is the right time to wonder what can be done for the next LTS.
Improving what we already have
Finishing plumbing the testsuite and some tweaks to the software-center ui is probably the way to go. In particular a way to "install all"/"remove all" buttons in the UI to just sync the same packages in both computer. I would love as well bringing back search as we had in the gtk2 version. Small nice speed enhancement opportunities are also totally achievable.
Finally, having the wallpaper as preview on the host icon is totally doable (in fact, it's already there, but not synced) but need some syncing infrastructure discussion.
Ubiquity integration
Wouldn't it be cool to be able to install a new computer and just tell "please, install it like <list of computer>". We need as well a checkbox to tell "this is the new foo" (if you are reinstalling foo). As we have the information that you installed an application on purpose (manually installed) or as only a dependency without doing that on your own, we can have an accurate list of what need to be installed.
Ubiquity integration will probably give us an unique feature and push the concept further. It only needs some UI integration work that can be done for next LTS.
WebUI
This one can be particularly enjoyable. Now that we have the really nice http://apps.ubuntu.com website and knowing that our package list is stored there, can we make both of them communicate? What if I log in with my sso account on this online software center, then see my computer list, select one, and look at what I have installed on this computer? What if I can add some pending actions, like "install this, remove that…". Finally, once I'm back on my machine and launching software-center again, I get a dialog "you have xx pending actions", do you want to complete them now?
I don't think we should do that automagically but rather rely on a confirmation in the software-center ui side as this requires root permissions, and can impact the current host: hence this software-center additional step. We should give a clear UI about what will happen on your computer if you acknowledge the change, let a way to remove pending actions (and then, sync that back in the webui), or just dismiss them for a later ack (like, I'm on battery right now).
This feature requires a lot of cross-team work (design, isd, platform), but I am really excited about it now that we have all the ground layers now ready and hope to be able to start working on it!
Hosts syncing
Another idea, linked to previous one, is about hosts syncing. What if I can say "foo and bar should have the same applications installed" (because they are two desktop stations), and "tidus, yuna and rikku are 3 netbooks and should be synced as well" (with a different application list as it's a different usage).
This one has challenging engineering question as, for the same reason as before, I don't think we should apply the changes without user confirmation and dismiss possbility. Adding than 3 PC and the previous "webui" idea as another source of changes and it results in very interesting cases, just of one of them is:
- yuna added "foo"
- tidus had "foo" previously and just removed it
- the webui has a request to remove "foo"
-> which one should win? We can work on timetamp to estimate what's the last action was and this one wins. But in this case, if removing "foo" was the last action and I dismiss it on "yuna" when seeing it wants to remove it, what should happen? installling "foo" on tidus and select it on the webui as it was the last action trigger by "no please, don't remove foo on yuna"? If not, the other hosts won't be in sync anymore?
I have thought about tons of cases like that and we should carefully design what to do in every one of them to present the options in a clear and not confusing way to the user.
Those "sets of installation" can also brings a very interesting and handy feature I've never seen anywhere before (but maybe I'm wrong and it already exists). From an engineering point, it can become quite challenging to get it done in a reliable and efficient way. All this complexity should be hidden to get a clean, simple, efficient UI to our user base.
Recommendations
With the data in the webui, we can have better recommendations in software-center, like "people installing the gimp also installs inkscape". All this needs to be anonymous of course as it is on popular website already. Can be a very nice way to discover new applications.
User system settings syncing
For this one, I would think we should go using Ubuntu One. This was part of the initial spec in May 2010 (see the wiki link): having your wallpaper automatically synced between computers, some credentials to not have to configure again your system and other dedicated system settings (like the theme choice, the suspend after <x> min configuration…). We need to provide a way to select what to sync and having a set of sensible defaults. We don't want to sync everything, my power policy is different on my laptop and my desktop, but targeted options picked with care can really enhance the ubuntu experience.
Note that applications settings syncing like thunderbird are a different topic to this one which target system user info and choice.
Wrap up
This is only few ideas on what can be done with some cycle works (obviously, we can't target everything for P…) to make our ubuntu experience better and (I hope) innovative. There will surely be some UDS discussions about it and I hope to see a lot of people coming there! And youn, what do you think? Do not hesitate to share any of your crazy ideas and come participating to this effort, every single help is welcomed. 
Thanks
I want to thank everyone that helped in any way pushing that to Oneiric, and in particular, tremolux and mvo from the software-center (and motivation) side, mpt for the OneConf redesign in the new software-center and achuni for a wonderful job on the isd side. I'm really happy and thanksfull to have so many awesome coworkers!

Commentaires
Looks cool. One question here: what about syncing of machines with different version of Ubuntu installed? I remember problems that roaming profiles make on heterogenous Windows network...
Is this normal that this log is on planet.ubuntu-fr.org?
@RadkB: yeah, the idea is rather "syncing and installing applications that are available on the new version, if not there, don't sync it". As we only sync manually installed package, we don't enforce the whole list, and so, still get recommends/dependencies the right way.
@lowje: it seems that the "PUF" tag is not anymore the address planet.ubuntu-fr.org is syndicating for my blog anymore but the whole content, I'll talk to the admin.
There should be 3 types of synchronization:
1. No Synch - You can go see the state of other computers and if you want you can change the state of your computer to match. Essentially the current situation as described by your post.
2. Manual Synch - Whenever someone makes a change to his system, all of his other systems would propose the change to him, which he can choose to accept or reject. Essentially what you say you want to accomplish next.
3. Auto Synch - Changes in one system will automatically be applied in all other systems.
Different systems can be grouped together, and each group can have its own synchronization mode. There should also be a master-slave relationship where the changes in the master are applied in the slave, but not the other way around. In Auto Synch this would mean the slave can't be changed at all, since Auto Synched systems are supposed to be identical and changes in the slave will not affect the master. Each master can have multiple slaves, but I don't think it would be practical to have multiple masters sharing a slave. I also think it won't be practical to have slaves synch with each other. A system can simultaneously belong to multiple groups, but slaves can only belong to the master's group.
As to the problem of what would happen in a case of contradictory changes in multiple systems, rejecting or accepting a change should not be considered a change. So in this case, the one system where the app is installed would be asked if it wants it to be removed in order to be in synch with the other systems, and that's the end of the story. No matter what it chooses, the other systems are no longer affected, so even if it chooses to keep the app, that is not considered a change so the other systems are not asked if they want to install it.
There is also an interesting question of what to do in systems that have multiple users with admin rights, as their decisions can clash, and they would each be synchronizing the system to other systems that the other admins might not have access to. This might work out alright for most systems, but not for slave systems since they only work properly with a single master.
bonjour,
l'article peut etre interessant , mais je ne n'arrive pas a savoir de quoi il parle, etant donné, que je ne connais pas l'anglais, . pourriez vous nous le traduire, pour nous, personnes du 3ème age,qui n'ont pas appris cette langue.
merci.
cordialement
lutinboiteux
Great work Didier! You have some wonderful ideas here. Ubiquity integration, hosts syncing and application recommendations these would be great features. I am looking forward to watching OneConf develop.
I agree with 4.
Sync will work really well from a client sysadmin mode if users can't change the content, or if content can be added to but not removed (e.g. both options available to sysadmin).
Being able to group computers or users to deploy suites of software from a reference computer to all
@steve, @Lestibournes: the intend of Oneconf isn't really sysadmins, but rather daily user. I don't think they will want to cope with sync modes and such. I think administrators who wants to deploy something needs a better corporate solution like landscape.
Dear Didier,
I did a first article of all stuff that is going on Ubuntu One initiative, with a point of view of the IT architect.
There is especially a sketch of all ubuntu one component that helps to understand the "Big picture" and I think this is quite new.
http://xavier.verne.free.fr/blog/?p...
Do you think it is useful ? If so, how to publish it on the planet ? Someone or you of existing publishers on it could endorse my work ? My blog wouldn't resist the audience if it's a redirection.
Thanks for reading, tell me what do you think.
Xavier.
PS : this is personal stuff and don't represent any interest of any sort (in IT or political or something).
Hi, this project is VERY interesting!
But i have a problem with the bonding to an ubuntu account (current state). This can be the default setting, but the data which are collected by oneconf should be in a directory so that i can choose an ARBITRARY file hosting service (e.g. Spideroak (uses strong encryption)) to sync the data beteween the PCs.
Hi,
and thanks for the work that went and goes into this great project !
I hope to be able to use it to sync applications and their settings between computers at various locations.
Having said this, I strongly support the general suggestion in #10 to add privacy options.
Knowledge about the setup of my computers may help the wrong party in finding security flaws and hacking access.
You are my role models. Thanks for the article
Thanks for this. We all love a bargain and your advice helps
I am looking for a competent writer, long time in this area. Excellent article!
I have not found what I wanted
Thank you, this is the worst thing I've read
I am a long time ago I read your blog and has long been saying that you're a great writer
Pretty good post you have here. I decided to stumble upon your blog and just wanted to tell you that I really enjoy reading your posts. Anyway I will be subscribing to your feed and I hope you post again soon. Thanks!