My Dream Ubuntu One Feature

I really dig Ubuntu One. I love the file sharing, the music store, the contact syncing, the music streaming, the bookmark syncing…I love how I can fire up a new computer and things get synced and I am good to go. I think the Ubuntu One team though are missing a huge opportunity that could bring tremendous innovation to Ubuntu and desktop Linux. But what is this glistening wreath of opportunity?

Not that.

It is collaboration. I know, those of you playing buzzword bingo just ticked a box, but bear with me.

Let me paint a picture as an example.

A few weeks ago a friend and I were on Skype and having a conversation about how we could solve a particular technical challenge. As the discussion got more and more complex, we knew we needed to resort to visual diagrams to keep on track. In other words: we both needed to collaborate together on a document.

So, we did what is natural for many Ubuntu users. I opened up Inkscape and created something and then had the idea of sharing it with him via Ubuntu One. I created a folder in my Ubuntu One directory, saved the file to it and shared it with him from Nautilus. Ubuntu One did it’s thing and immediately popped up a notification bubble to say the file was uploading. A few seconds later my buddy said he saw a notification bubble indicating that the file was syncing.

We were now in a great position. He opened up the file in Inkscape and viewed it. As our conversation continued he made some changes to the file and then saved. Because he saved to a shared folder, Ubuntu One automatically updated the new file in the share and my Ubuntu One downloaded the file automatically – without doing anything we were synced up. Rock and roll. At this point I then re-opened the file in Inkscape and I could see the new content. Wash, rinse, repeat.

The awesome thing about Ubuntu One is that all the technology is there for people to collaborate in this batch-processing kind of way, but it currently feels too manual in how you engage that sharing and collaboration. Ideally we want to build this right into apps using Ubuntu One as the back-end.

The User Experience

This is what I would like to propose as the experience for the end user, and I will talk about the app developer experience soon. Please be warned: these mock-ups are crude and simplistic and would need the design and UI usability expertise of the design team to refine, but you should get the picture (pun intended) of the experience.

Imagine my friend and I are in the same position and wanting to collaborate together on a document. I would create the diagram in Inkscape and then click the File menu and see:

I would click on Collaborate using Ubuntu One (to be clear, this could be a different menu string, this is just an idea) and then you would see this:

Here I can type in a name for the document (note, not a filename, a document name) and I can use the search box to select who I want to share it with. Entering a search term would search through my address book and I can select people to add to the share.

When I click Share each of the contacts I share the document with will get a message to ask them if they want to accept the share (this ideally would be a notification), such as:

At this point my friend could select the first option and view the file in Inkscape. Alternatively, he could click the Preview button to preview the file (if this is a document such as a PDF) or choose to accept the share and load it later.

If my friend would like to load it later, he could open Inkscape and select File -> Open and there would be a slightly modified Open dialog box:

The only difference here is that there is an Ubuntu One option in the sidebar and when he clicks it, it just lists the documents shared that can be loaded into the app. The Recent Documents menu option in the File menu should also list Ubuntu One documents.

Now, here is a key point: if we both have the file open in our respective Inkscapes and one of us makes a change, the file would be automatically synced (which it does today), but also the application would automatically update the content and refresh the view to reflect the new version of the file. As an example, if I make a change to my document, the file would sync automatically over Ubuntu One and my friend’s Inkscape would reload the file to display the new content.

I believe this would offer a hugely compelling experience – it would allow people to collaborate using desktop tools, using Ubuntu One a seamless syncronization and storage service, and any new Ubuntu machine that you set up would have all your documents ready to roll.

The Developer Experience

To achieve this from a developer perspective, the Ubuntu One team would need to provide an API for app authors to use to build this support into their apps. Ideally this would present a series of standard components that app authors can use to add this support in a really simple way.

As an example, I can imaging that I could use a Python module to add this support and then connect a menu item in my File menu to sync_with_u1() which would display the Collaborate on Ubuntu One dialog box (I could imagine there being ubuntuone-api as well as ubuntuone-api-gtk and ubuntuone-api-qt packages for the different pre-built dialogs). Upon the user entering content, the different values could then be passed to process_u1_sync().

Ideally the app could then have some kind of listener built-in which could listen for a signal that indicates that the current Ubuntu One document has been updated and then trigger a method in the app that would reload the data and refresh the view.

It seems to me that the underlying infrastructure is all there to do this – all it would need is a thin Ubuntu One API and some standard dialog boxes (so that all apps have a uniform experience).

Potential Uses

I can think of a variety of different methods in which people could collaborate using this batch-type functionality:

  • Music – imagine this in Jokosher. I could create a project and record the drums, and then save to Ubuntu one and it would sync my project and all the recorded audio. Then a friend across the world could record a guitar piece and sync, and then I would get her performance. This could be a great way to make music together in a distribution manner.
  • Video – the same approach to the music example above could be used for video.
  • Documents – sharing office documents could be useful for reviewing documents, updating spreadsheets, reviewing presentations and more.

I am sure there are many more uses.

I am going to talk to the Ubuntu One team and see if this could be an option. I will keep my fingers crossed. :-)

UPDATE: I have registered a blueprint and this will be discussed at UDS.

  • Roberto Alsina

    Jono, you are going to UDS, right? Please create a blueprint and let’s have a session about this. We want chipaca and lucio torre there :-)

  • Paul Hummer

    While you’re talking about strictly desktop application use, some of the APIs should be available soon for these desktop applications to use. I know this because I need to implement the web version of much that you have mocked up, and so I know what needs to be built.

  • Mel

    This, my friend, is a great idea. This could be a a great boon for Ubuntu, or heck, free software as a whole.

    I hope your dream comes true!

  • Michael Hall

    The trick will be what to do when you both edit the document at the same time. If it’s a simple text document, a diff/merge can be done. But if it’s an SVG, like your example, it’s not quite to simple.

  • ufzjx

    agree with michael hall.. problems when 2 people modify at the same time!! :~ hope somebody figures it out though..

  • Daeng Bo

    Agreed on all of this, plus! U1 needs to become a single sign-on for U1 as it stands, plus collaboration in the style of Box.Net and Google Apps, plus configuration backup like Chrome OS.

    Right now, U1 isn’t really compelling, but in order to encourage more customer commitment to the platform, why not make it a collab platform with what you’ve written, but add an XMPP and Status.Net server automatically set up with Empathy and Gwibber.

    Additionally, local and system configuration (separate from data) for individual machines could be backed up to U1, and the text files would take almost no space, and U1 would give all the strengths of Chrome OS, with a one click system restore after a re-install. Think Landscape and U1 merging long-term into a single platform.

    U1 has such potential. I hope it achieves.

    BTW, congratulations on getting 11.04 out the door. Unity has an equally bright future.

  • Daeng Bo

    p.s. I’ve always wondered why Ubuntu didn’t use Empathy and Gwibber for community support channels. It seems like a waste.

  • John Doe

    I could swear that Inkscape has collaboration functionality, even though I cannot find it right now.

  • adred

    Yes! Please bring Google Wave to my Ubuntu desktop!

  • Kyle Clarke

    A way to get around the issue of what happens to changes when two people are working on the file at the same time could be that only 1 contributor has write rights at a time. Everyone else can read the file. Then you can relinquish your write rights at any time either by giving a specific user the right, or a free for all that waits for a the first user to request the write abilities. The key here is a good indicator system in the application that shows who is writing, and when the rights become available again.

  • Daeng Bo

    The obvious answer would be to use Abiword and and an XMPP account tied to U1. In fact, I bet moving to a simpler code-base than LO for office work would be a better long-term solution and allow U1 to become a (hosted) Sharepoint-like platform. (See my post below.)

    That would be great differentiation for Ubuntu.

  • Bryce Harrington

    Yeah, we actually had this functionality implemented in Inkscape years ago, serialized over the Jabber protocol, but found keeping the two Inkscape instances in sync was more challenging than you’d think… Anyway, talk to Ted about this.

  • Valorie Zimmerman

    I really want to use ubuntuone with Tomboy notes. However, it will not even start up for me in Natty, nor did it in Lucid. It worked in Karmic. I use Kubuntu, but I’m not talking about ubuntuone-kde, just plain old ubuntuone.


  • Uli Tillich

    While this sounds like a cool feature which would put U1 ahead of Dropbox, I think basic functionality should be implemented first. U1 has never worked properly for me or anyone I know who runs Ubuntu (which is quiet a few people) because of its lack of proxy support. This is a bug which is almost 2 years old, and embarrassingly is only at wishlist importance ( …

  • Jussi

    Jono, while I know you are after a feature for ubuntu one, you may want to consider skypes screen sharing feature in the meantime (if you havent seen it already). Then your colleague can see your screen and comment on it. Its a nice feature in that you can share all of your screen or only part (selectable rectangle).

  • Markus


    this sounds pretty interesting, in theory. As you venture into collaborative WORK from merely syncing your holiday pictures over U1. There is a small problem though… But as U1 after two years still doesn’t work behind a proxy, which is common at work environments that would benefit from this, I don’t think it will reach its full potential… I have the problem that I can’t sync my work data / literature database over U1, which is making seamless switching between work and home environment impossible without Dropbox et al. I would pay for U1… but not without at least proxy support. But as proxy support request for U1 jumps on Launchpad from severe bug to wishlist to bug again for two years now I am getting a bit frustrated with it…



  • Portrait painting

    Hi, Jono, i think it is not just one dream, some day, it should come true, Ubuntu One will become what you hope, but it also need more effort. thanks.

  • Akshat Jain

    Exactly the thing dmedia is designed to do.


  • Gervase Markham

    The reason this is hard is the “what happens if two people update it at once” problem. Fixing that properly requires support built into the app. You have much more chance of this working if you work out how to do it with unmodified apps. Here’s a suggestion:

    • When you are using the system, there are two buttons: “Take Control” and “Cede Control”. You request control from the other user via your out of band channel – voice, IM or whatever. If you want to offer it up, you click “Cede Control” injects a Ctrl-S into the current window, waits for the timestamp on the file to update, marks the file read only and then lights up everyone’s “Take Control” button (including yours). First to click “Take Control” gets control – their file is marked as read-write and some key combo to refresh from disk is injected.

    Just a rough idea…

  • Sashin

    Woah, I agree with you 110% that would be an amazing feature… Productivity x 9000!

    But I can imagine it would be a really difficult task to implement it. Hence the “dream” thing…

  • Matthias

    As soon as you do that, people will expect their edits to show up on the other side seamlessly. Ubuntu One doesn’t share desktops. It shares files; if you want your friend’s updates you need to re-open the file, and while they edit it, you can’t. As soon as one of the participants loses their edits, or even notices that they now have two different files which need to be merged manually (which might be days later …), such a feature will get a really bad reputation.

    To do that, the sharer needs to behave like a server, and the other users’ applications must pipe all their change events through the master.

  • Ashok

    Dude, that’s an awesome concept. Hope this becomes a reality… Then Ubuntu would not just be an OS, it would be THE OS!

  • Bojan Markovic

    If you only consider implementing this for only Ubuntu One then you’re going the One Microsoft Way but just in your own direction.

    What would really be cool is to have some sort of standard API for collaboration that would work with other sharing platforms like:

    • Alfresco
    • Plone
    • Drupal (yes OpenAtrium is used for Document Management)
    • FengOffice
    • ZoHo
    • Google Docs

    and yes, why not:

    • WebDAV
    • Samba (SMB/CIFS)

    and, yes, the Enemy too:

    • SharePoint

    But leve it to the behemoth to implement it on their end, or create enough interest.

    An OASIS specification for collaborative file sharing, versioning, and with enough space for that type of push sync (if not already a part of spec, not sure about this) already EXISTS. It’s called CMIS, and there are people implementing it in many products, as well as an Apache Foundation project to create libraries for most programming languages:

    Ideas are cool. Standards are better.

  • Jason Gerard DeRose

    Awesome, Jono! This is exactly the sort of thing I’m hoping to spearhead with Novacut… every app should work this way. CouchDB (and desktopcouch) make it silly easy:

    1) Make your app serialize its state as a set of CouchDB documents

    2) Make your UI (and render backend) respond to the CouchDB changes feed, regardless whether the change was initiated locally or remotely

    If you have (1) and (2), you get Google-docs style real-time collaboration for free. Which is awesome, and something we should push hard for. Although you’ll have to bug Stuart to offer continuous CouchDB replication on UbuntuOne (needed for the “real-time” part).

    If you or anyone else wants to chat about this stuff at UDS-O, please find me! I’m all over this:

  • R.D.Nielsen

    infinote ( seems like a good candidate tool for Inkscape and other applications to use to support collaboration. Implementing collaboration in this way would probably require effort from application developers than from Ubuntu One developers, however. Though perhaps Ubuntu One could support creation of infinote servers on the fly.

  • JotaEle

    It would be awesome! (en)

    Tio estus mirinda! (eo)

  • jack

    It would be nice if there is some API defined and other services like DropBox could also use the functionality, this would mean user could choose which service to use. So there should be File | Colaborate and then when window opens, drop down menu of selecting service e.g. Ubuntu One, DropBox etc.

  • Jorgen

    I see the potential in this, but also it’s pitfalls. What if one of the contributers goes offline, edit the shared file and gets online after someone else has changed the file. How to merge the two verisons? Who are to deside what to do, the u1 backend, or the application. If the applications have to make rules about this, it would mean a lot of extra work for each app developer. And what if two people sat editing a text document at the same time, would we want something like google docs, or should only one person at a time be allowed to do editing? This is only two examples, I guess there are a lot of cases like this that needs to be solved before something like the proposed solution could be realized. This is not meant to kill the idea, but only to make people realize this isn’t as easy as to make some api’s and a backend and some menu changes in each app. I needs a lot of work in both a good backend and in every app wanting to support this.

  • Dylan McCall

    I think the trick to making this work for users would be to implement it in a way that doesn’t require patches maintained downstream in Ubuntu. The obvious way (making it U1-specific) would only complicate the relationship between application developers and distro developers; upstream packages and packages from the repositories. (And we already have this problem with the Launchpad integration stuff).

    I think this can be generalized a little, where “Collaborate using Ubuntu One…” becomes “Collaborate…” and it pipes through a nice and modular front-end that helps users on both ends collaborate in a way they can agree. Perhaps the existing nautilus-sendto would be a place to start :)

  • ssam

    collaborative editing is cool. i’ve been using it in abiword recently, and in gobby before. i am sure its a real challenge to program, but it can be done.

    i wonder if this could be done in a more generic way. maybe defining a standard protocol that can be transported over a network or local connection and established using avahi, instant messaging, or a remote server.

    it would be a bad situation for ubuntuone to be using methods to lock people in to the service. i dont suppose it is currently possible for me to run my own ubuntuone server.

  • Paul Smyth

    Jono as ever you’ve just hit on a killer app idea. I’d love to see a planning application take the batten on this one, a decent planning app that integrates Ubuntu One is something that would really tick some SME boxes and a local “Ubuntu one” server would take it to the next level. Offline files ala Windows would be another box ticker. Anyway that’s way beyond what you’re proposing, happy to beta test this if the opportunity arises.

    Just one more thing, when can I get my @ubuntuone mail box?

  • Benjamim Góis

    That’s a very good idea Jono ! It would work just like the Googledocs collaboration. Maybe ubuntuone should take a look at google services.

  • Vilmantas Baranauskas

    Proper proxy support would be a killer feature too…

  • Da\/e

    All sounds good but with my files only syncing several hours after I change them or add new ones to my U1 folder, such real-time collaboration is dreamworld stuff for me at the moment.

  • bochecha

    I think what you really want is the collaboration as built in Sugar (the OLPC operating system) on top of Telepathy.

    Try sharing the “write” activity between two XOs. The first time I did that, I knew I wanted this kin of dead-easy real-time collbaoration on my desktop. (hint: it takes one click on each laptop)

  • Tim Blokdijk

    Before there was Ubuntu One I tried to have a somewhat similar discussion in relation to launchpad.

    Distributed content development (whether real-time or not) is a mayor challenge at the moment. The lack of creative collaboration tools severely hinders open source game development. And also the open content Blender projects have mayor difficulty managing external contributions. There’s the project to get real-time collaboration, it’s promising but experimental. And has been set up to exchange models.

    Maybe I can hang out on irc when this gets discussed at uds.

  • Sessions planned for Ubuntu Developer Summit – Oneiric

    […] Do anyone of you remember Jono’s post on Inkscape in-app collaboration? Here it is. […]

  • Erigami

    I believe it’s called Google Docs. :)

  • Aras

    This would be a great feature to have! I sometimes use git to collaborate on latex documents and projects. I wonder if it is possible to use git as a back-end for documents that are shared and in case there is a conflict ask user to resolve it before saving.

  • Alat Perekam

    One of the questions that took a little while for me to fully understand was a very simple one: why does Ubuntu One exist? Depending on who you ask, you may get a different answer, but here’s my take on it. Above all, to extend the power of Ubuntu as an environment. Ubuntu One already allows you to many things beyond the basic file sync we started off with, you can keep your contacts from your phone and desktop  (and between other Ubuntu devices) in sync and backed up, notes, bookmarks, all your important files are backed up and synced, you can share them privately or publicly, you can buy music that gets delivered right to your music player, and soon you will be able to stream any of your music to your phone. And this is just today. As the project matures, we are working hard to make it easy for more and more third-party projects to use our platform and out-pace us in ideas and code.All of this allows Ubuntu to extend its reach into mobile devices and even other operating systems. It feels like integrating into the real world today, not only the world we want to build.

  • Franck MIKULECZ

    Hi there, what’s the landscape looking today ? Is there any progress on this top class idea ? Yes, we know Google Docs is roaring.