UbuntuOneForAndroid

Differences between revisions 13 and 30 (spanning 17 versions)
Revision 13 as of 2010-03-27 23:19:11
Size: 8310
Editor: chello089072085049
Comment: Added more ideas in discussion section
Revision 30 as of 2010-05-16 04:35:53
Size: 12617
Editor: adsl-146-44-240
Comment: added a comment and a feature request to the comment and feature request section
Deletions are marked like this. Additions are marked like this.
Line 8: Line 8:
 * '''Contributors''': Michał Karnicki  * '''Contributors''': mkarnicki
Line 17: Line 17:
## This should provide an overview of the issue/functionality/change proposed here. Focus here on what will actually be DONE, summarising that so that other people don't have to read the whole spec. See also CategorySpec for examples.
Line 18: Line 19:
## This should provide an overview of the issue/functionality/change proposed here. Focus here on what will actually be DONE, summarising that so that other people don't have to read the whole spec. See also CategorySpec for examples. This documentation specifies features, that would appear in Ubuntu One for Android platform. It justifies needs for specific features and their inner workings. The aim of the project is to deliver Ubuntu One service to Android powered devices (in particular, smartphones). The application would enable Ubuntu users not only to browse files in the cloud from their phone, but also share experience on the spot using URLs to their published U1 resources, instantly upload camera pictures or download music. Eventually, the aim would be to implement full-featured syncdaemon for specific UDFs. Ubuntu One is currently being intensely extended with new features, let's take that cloud mobile.
Line 28: Line 29:
Computer users like flexibility. There are more ways to get to your files in the cloud than through PC/laptop/netbook. Smartphones are becoming increasingly popular. The missing link here for Ubuntu One project is a client app for Android (amongst other platforms like iPhone & Blackberry). Daily use of mobile phones/devices justifies the need for such application. We can see recent proposals supporting this idea:<<BR>>
[1] brainstorm Idea #19912 <<FootNote(http://brainstorm.ubuntu.com/idea/19912/)>><<BR>>
[2] Bug #468114<<FootNote(https://bugs.launchpad.net/ubuntuone-client/+bug/468114)>><<BR>>
[3] ubuntuforums thread<<FootNote(http://ubuntuforums.org/showthread.php?t=1421609)>><<BR>>
[4] yet another thead - poll<<FootNote(http://ubuntuforums.org/showthread.php?t=1387674)>><<BR>>
Computer users like flexibility and there are more ways to get to your files in the cloud than through PC/laptop/netbook. Smartphones are becoming increasingly popular and the missing link here for Ubuntu One project is a client app for Android (amongst other platforms like iPhone & Blackberry). Daily use of mobile phones/devices justifies the need for such application. We can see recent proposals supporting this idea:<<BR>>
 * brainstorm Idea #19912 <<FootNote(http://brainstorm.ubuntu.com/idea/19912/)>><<BR>>
 * Bug #468114<<FootNote(https://bugs.launchpad.net/ubuntuone-client/+bug/468114)>><<BR>>
 * ubuntuforums thread<<FootNote(http://ubuntuforums.org/showthread.php?t=1421609)>><<BR>>
 * yet another thead - poll<<FootNote(http://ubuntuforums.org/showthread.php?t=1387674)>><<BR>>
Line 35: Line 36:
Viki makes a picture using her Apd, goes to Menu, taps Share, and selects 'Ubuntu One'. She then can e-mail or tweet (or use otherwise) a public link to that file easily. When Victoria makes a picture using her Android powered phone, she can easily publish it by going to Menu -> Share -> ''Ubuntu One''. She then can e-mail or tweet (or use otherwise) the public URL of that file easily.
Line 37: Line 38:
Tom wants to collaborate on a document of his friend Mark, but Marks computer isn't connected to the Internet. Tom plugs a usb cable, downloads the file, uses any file browser to Share with 'Ubuntu One' - and has his file available on his PC anytime he's back home to start working on it. (He could also use the generic U1 folder, if he has sync enabled.) Tom made some notes on his laptop last night, but forgot to take it with him the next day. No worries, he can open up Android U1 and browse the cloud for the file he needs.
Line 39: Line 40:
Kim made some notes on her laptop last night, but forgot to take it with her the next day. No worries, the file was in her Ubuntu One folder, so she can access it any time with her Apd. Future: Each time Abby makes a picture with her phone, it appears on her computer (naturally, on whatever connection he prefers, wifi preferably, slower connections might not be suitable). She often forgets to take the USB cable with her, so she also prefers to manage music on her phone through the cloud (file sync).
Line 41: Line 42:
Ben has almost full SD memory card in his phone - so he manually selects a few files for download whenever he's in range of wifi network (he may choose to use his Mobile Network, as his current plan is a good deal, anyway!) ##Tom wants to collaborate on a document of his friend Mark, but Marks computer isn't connected to the Internet. Tom plugs a usb cable, downloads the file, uses any file browser to Share with 'Ubuntu One' - and has his file available on his PC anytime he's back home to start working on it. (He could also use the generic U1 folder, if he has sync enabled.)
##
##
Ben has almost full SD memory card in his phone - so he manually selects a few files for download whenever he's in range of wifi network (he may choose to use his Mobile Network, as his current plan is a good deal, anyway!)
Line 48: Line 51:
The application should be user friendly, have a clear interface and therefore be easy to use. This specification section will surely get expanded.
Line 49: Line 53:
TODO Write on ease of use and clear interface. Features:

 * browsing of cloud files
 * downloading / opening of a cloud file
 * uploading of a file (like a camera image) to cloud storage
 * publishing a file to a public URL / publishing a file to a public URL and then sharing that URL with an Intent
 * sharing a cloud folder with another Ubuntu One user
 * implementing syncdaemon for specific UDFs
Line 52: Line 63:
The project will be developed in Java language, as it is the choice of Android platform.<<BR>>
TODO Elaborate more.
The project will be developed in Java language, the choice of Android platform. CouchDB has an existing Android library, see links below.

==== Usefull links ====
 * Ubuntu One technical details
  * https://wiki.ubuntu.com/UbuntuOne/TechnicalDetails
 * CouchDB docs
  * http://couchdb.apache.org/docs/index.html
  * http://wiki.apache.org/couchdb/
  * http://www.freedesktop.org/wiki/Specifications/desktopcouch
 * CoutchDB for Android
  * http://github.com/sig/DroidCouch (minimal)
  * http://code.google.com/p/jcouchdb/
 * Protocol Buffers
  * http://code.google.com/apis/protocolbuffers/docs/overview.html
 * Ubuntu One storage protocol
  * https://launchpad.net/ubuntuone-storage-protocol/+index
 * Twisted docs
  * http://twistedmatrix.com/trac/wiki/Documentation
 * Android libraries
  * http://www.openintents.org/en/
 * Android Scripting Environment
  * http://code.google.com/p/android-scripting/
  * http://google-opensource.blogspot.com/2009/06/introducing-android-scripting.html
  * http://www.damonkohler.com/2008/12/python-on-android.html
Line 85: Line 118:
List of features that are possible (not necessarily feasible during summer period) for the project to implement. This section is more about quantity than quality (yes, it's just to find as much features as possible) List of features that are possible (not necessarily feasible during summer period) for the project to implement.
EDI
T: We have picked the best/feasible ones for GSoC, features listed in ''Design'' section.

Planned/future features:
Line 87: Line 124:
   * full sync - for spacious SD cards and cheap data plan
   * semi sync - syncs only selected (favourite) files
   * sync on demand - TODO (manual/forced sync in some cases might be useful)<<BR>>
How sync works is dependent on the settings - may be syncing only on wifi and/or data link, perhaps we could let the user adjust the frequency of synchronization (lower for less power consumption).
  * ''full sync'' - for spacious SD cards and cheap data plan
  * ''semi sync'' - syncs only selected (favourite) files
  * ''sync on demand'' - TODO (manual/forced sync in some cases might be useful)
  * ''sync specific User Defined Folders''
 * Particularly: (all via Ubuntu One; no cables, much comfort; wifi preferred)
  * Upload Music to Apd
  * Download Pictures from Apd<<BR>>
  * That is - sync selected system-folders, also.
 * Let the user choose where to place the sync folder (default: ''Ubuntu One'' on SD card, if present) <<FootNote(https://bugs.launchpad.net/ubuntuone-client/+bug/468114/comments/2)>>
 * Good file manager <<FootNote(https://bugs.launchpad.net/ubuntuone-client/+bug/468114/comments/3)>> (use ''Astro''?)
 * How sync works is dependent on the settings
  * Which connection we want to sync on?
   * WIFI/3G+ (HSDPA)
   * 3G (EDGE, UMTS)
   * 2G
   * GPRS (ultra light sync, couchdb data perhaps)
  * How frequently we want to sync? (battery drain)
  * Should the files removed from U1 be removed from Apd? (This one is good. On the PC, you move Pictures to your home folder, and so they can be removed from Apd and free up some space. By default, file removal is disabled.)
Line 92: Line 143:
   * so called ''intent'' to share file by selecting option from Menu -> Share with -> Ubuntu One
     1. file is uploaded to the cloud
     * the user receives public link..
     * ..and can email it, tweet it, sms' it, share with barcode, etc
 * Streaming data - would it be possible to watch a movie from U1 without downloading the file? (This is actually a silly idea, but I wrote it down anyway)
 * Support for partial file updates, not whole files
   * the back-end software would have to support partial updates, nevertheless it is rather a case for U1 for PCs than Android powered phones. Users rarely edit graphis, for example. And editing text.. well, text files are small. You can always download/upload a full file. All in all, this feature is interesting from algorithmic point of view and can be implemented as project continuation.
 * Access to browser (Firefox, Chrome?) "keyrings" (see: https://wiki.ubuntu.com/Specs/LucidUbuntuOneKeyringSync ) - neat idea, but auto-fill on mobile browser would be rather difficult. Nevertheless, if access to those keyrings would be possible, user could copy-paste the password to the browser from Ubuntu One app - passwords subsection.
  * so called ''intent'' to share file by selecting option from Menu -> Share with -> Ubuntu One
    1. file is uploaded to the cloud (not sure how this would work; how would you have found a file on your Android device? there aren't file managers) (publishing a camera image, though, for example, would be great)
    * user receives public link...(saving a file into Ubuntu One and then getting a public link for it is called "publishing")
    * ..and can email it, tweet it, sms' it, share with barcode, etc -- make it easy to tweet the link by "sharing" the link with installed Intents
 * Share a file to another specific Ubuntu One user
 * Viewing files using intents (let other apps handle pdf or jpeg viewing, play an mp3, etc)
 * Special mode that allows backup/restore of the entire device <<FootNote(https://bugs.launchpad.net/ubuntuone-client/+bug/468114/comments/3)>>
 * Streaming data - would it be possible to watch a movie from U1 without downloading the whole file? (It might be a silly idea, but I wrote it down anyway.)
 * Support for partial file updates [on the other hand - synced files with mobile phones are rather small..]
  * the back-end software would have to support partial updates, nevertheless it is rather a case for U1 for PCs than Android powered phones. Users rarely edit graphis, for example. And editing text.. well, text files are small. You can always download/reupload a full file. All in all, this feature is interesting from algorithmic point of view and can be implemented as project continues after GSoC.
 * showing notes
 * editing notes
 * showing contacts (contacts stuff needs to be thought about in conjunction with the Android client for mobile sync; that client is open source, so perhaps adding lots to it?)
 * purchasing music from the Ubuntu One Music Store
 * syncing playlists from Rhythmbox
Line 101: Line 159:
Actually, when I wrote about that passwords subsection, another nice idea came to my mind (not necessarily feasible during summer /GSoc). We could design a plugin system to Ubuntu One (based on Android ''intent''), similarly to what ''Locale'' application has. Then, any application that supports couchdb could plug in to ''Ubuntu One for Android'' to pull/update couchdb data in easy, uniform way (to say more concisely: open ''Ubuntu One for Android'' and: Another idea (not necessarily feasible during summer /GSoc). We could design a plugin system to Ubuntu One (based on Android ''intents''), similarly to what ''Locale'' application has. Then, any application that supports couchdb could plug in to ''Ubuntu One for Android'' to pull/update couchdb data in easy, uniform way (to say more concisely: open ''Ubuntu One for Android'' and:
Line 103: Line 161:
 * you have access to passwords if you have Keyring plugin  * you have access to passwords if you have Keyring plugin <<FootNote(https://wiki.ubuntu.com/Specs/LucidUbuntuOneKeyringSync)>>
Line 105: Line 163:

https://launchpad.net/tomdroid - progress is little, we could integrate that functionality as a plugin
Line 110: Line 170:
I love this idea, one major request is playlist syncing from banshee as well as rhythmbox. Also, being able to backup my text messages to the cloud would be awesome.
Line 113: Line 175:
 * Michał Karnicki: Can I use Ubuntu One name openly? This project will be Open Source, I hope 'Ubuntu One' is not a trademark - if it is, who can provide formal agreement for such course.  * Can I use Ubuntu One name openly? This project will be Open Source, I hope 'Ubuntu One' is not a trademark - if it is, who can provide formal agreement for such course.

-------
Line 119: Line 183:
=== Other notes ===
http://code.google.com/p/apps-for-android/

Ubuntu One for Android

  • Launchpad Entry: TODO

  • Created: 2010-03-27

  • Contributors: mkarnicki

  • Packages affected: none

Comment

This Spec is being heavily edited, consecutive sections will be revealed when finished
Notation: Apd stands for Android powered device (phone or other mobile Internet-enabled device)
Contact / GSoC project page: https://wiki.ubuntu.com/GSoC/2010/MichalKarnicki/

Summary

This documentation specifies features, that would appear in Ubuntu One for Android platform. It justifies needs for specific features and their inner workings. The aim of the project is to deliver Ubuntu One service to Android powered devices (in particular, smartphones). The application would enable Ubuntu users not only to browse files in the cloud from their phone, but also share experience on the spot using URLs to their published U1 resources, instantly upload camera pictures or download music. Eventually, the aim would be to implement full-featured syncdaemon for specific UDFs. Ubuntu One is currently being intensely extended with new features, let's take that cloud mobile.

Rationale

Computer users like flexibility and there are more ways to get to your files in the cloud than through PC/laptop/netbook. Smartphones are becoming increasingly popular and the missing link here for Ubuntu One project is a client app for Android (amongst other platforms like iPhone & Blackberry). Daily use of mobile phones/devices justifies the need for such application. We can see recent proposals supporting this idea:

  • brainstorm Idea #19912 1

  • Bug #4681142

  • ubuntuforums thread3

  • yet another thead - poll4

Use cases

When Victoria makes a picture using her Android powered phone, she can easily publish it by going to Menu -> Share -> Ubuntu One. She then can e-mail or tweet (or use otherwise) the public URL of that file easily.

Tom made some notes on his laptop last night, but forgot to take it with him the next day. No worries, he can open up Android U1 and browse the cloud for the file he needs.

Future: Each time Abby makes a picture with her phone, it appears on her computer (naturally, on whatever connection he prefers, wifi preferably, slower connections might not be suitable). She often forgets to take the USB cable with her, so she also prefers to manage music on her phone through the cloud (file sync).

Assumptions

Application developed in tight communication with Ubuntu One team to ensure flawless functionality and back-end support of proposed features.

Design

The application should be user friendly, have a clear interface and therefore be easy to use. This specification section will surely get expanded.

Features:

  • browsing of cloud files
  • downloading / opening of a cloud file
  • uploading of a file (like a camera image) to cloud storage
  • publishing a file to a public URL / publishing a file to a public URL and then sharing that URL with an Intent
  • sharing a cloud folder with another Ubuntu One user
  • implementing syncdaemon for specific UDFs

Implementation

The project will be developed in Java language, the choice of Android platform. CouchDB has an existing Android library, see links below.

BoF agenda and discussion

List of features that are possible (not necessarily feasible during summer period) for the project to implement. EDIT: We have picked the best/feasible ones for GSoC, features listed in Design section.

Planned/future features:

  • File sync
    • full sync - for spacious SD cards and cheap data plan

    • semi sync - syncs only selected (favourite) files

    • sync on demand - TODO (manual/forced sync in some cases might be useful)

    • sync specific User Defined Folders

  • Particularly: (all via Ubuntu One; no cables, much comfort; wifi preferred)
    • Upload Music to Apd
    • Download Pictures from Apd

    • That is - sync selected system-folders, also.
  • Let the user choose where to place the sync folder (default: Ubuntu One on SD card, if present) 5

  • Good file manager 6 (use Astro?)

  • How sync works is dependent on the settings
    • Which connection we want to sync on?
      • WIFI/3G+ (HSDPA)
      • 3G (EDGE, UMTS)
      • 2G
      • GPRS (ultra light sync, couchdb data perhaps)
    • How frequently we want to sync? (battery drain)
    • Should the files removed from U1 be removed from Apd? (This one is good. On the PC, you move Pictures to your home folder, and so they can be removed from Apd and free up some space. By default, file removal is disabled.)
  • Easy sharing
    • so called intent to share file by selecting option from Menu -> Share with -> Ubuntu One

      1. file is uploaded to the cloud (not sure how this would work; how would you have found a file on your Android device? there aren't file managers) (publishing a camera image, though, for example, would be great)
      2. user receives public link...(saving a file into Ubuntu One and then getting a public link for it is called "publishing")
      3. ..and can email it, tweet it, sms' it, share with barcode, etc -- make it easy to tweet the link by "sharing" the link with installed Intents
  • Share a file to another specific Ubuntu One user
  • Viewing files using intents (let other apps handle pdf or jpeg viewing, play an mp3, etc)
  • Special mode that allows backup/restore of the entire device 6

  • Streaming data - would it be possible to watch a movie from U1 without downloading the whole file? (It might be a silly idea, but I wrote it down anyway.)
  • Support for partial file updates [on the other hand - synced files with mobile phones are rather small..]
    • the back-end software would have to support partial updates, nevertheless it is rather a case for U1 for PCs than Android powered phones. Users rarely edit graphis, for example. And editing text.. well, text files are small. You can always download/reupload a full file. All in all, this feature is interesting from algorithmic point of view and can be implemented as project continues after GSoC.
  • showing notes
  • editing notes
  • showing contacts (contacts stuff needs to be thought about in conjunction with the Android client for mobile sync; that client is open source, so perhaps adding lots to it?)
  • purchasing music from the Ubuntu One Music Store
  • syncing playlists from Rhythmbox

Another idea (not necessarily feasible during summer /GSoc). We could design a plugin system to Ubuntu One (based on Android intents), similarly to what Locale application has. Then, any application that supports couchdb could plug in to Ubuntu One for Android to pull/update couchdb data in easy, uniform way (to say more concisely: open Ubuntu One for Android and:

  • you have access to Tomboy notes if you have Tomboy plugin
  • you have access to passwords if you have Keyring plugin 7

  • you have access to any other couchdb per-application specific data, if you have specific-plugin! Smile :)

https://launchpad.net/tomdroid - progress is little, we could integrate that functionality as a plugin

Comments and feature requests

Please leave any comments here. Feature requests and ideas are more than welcome!

I love this idea, one major request is playlist syncing from banshee as well as rhythmbox. Also, being able to backup my text messages to the cloud would be awesome.

Questions

If you have any questions about the project, leave them here or contact me directly (https://wiki.ubuntu.com/GSoC/2010/MichalKarnicki)

  • Can I use Ubuntu One name openly? This project will be Open Source, I hope 'Ubuntu One' is not a trademark - if it is, who can provide formal agreement for such course.


Other/TODOs

Other notes

http://code.google.com/p/apps-for-android/


CategorySpec

specs/UbuntuOneForAndroid (last edited 2010-05-30 23:13:14 by chello089072085049)