Michał Karnicki

Update Detailed progress of the project will be reported to my mentor, as well as reflected on those sites:

Contact information

  • Your Name: Michał Karnicki

  • Email Address: <mkarnicki AT gmail DOT com>

  • IRC nickname: mkarnicki

  • Launchpad ID: mkarnicki

  • Skype username: michalkar

  • Webpage/blog: no blog yet (rather ascetic institute page http://users.pjwstk.edu.pl/~s6515/ )

  • College-University: Polish-Japanese Institute of Information Technology (Warsaw, Poland)

  • Major: Computer Science


Project Name

Android U1: Ubuntu One client for Android

Project Description

(See feature specs for details 1)

The aim of the project is to deliver Ubuntu One service to Android powered devices (in particular, smartphones). The application would enable Android 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.


  • 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

If you would be willing and able to do other projects instead, which ones?

I envision many possible improvements in Nautilus, so it'd be 'Nautilus improvements'. However, I'm doing my best to prepare for this particular project, which is my own proposal.

Why did you like this idea?

I'm both a lover of Ubuntu and an enthusiastic user of Android. This idea is the golden mean between two things I really enjoy to interact with, both on user and developer level. What is really exciting for me is that at the same time I can contribute to Ubuntu, extend functionality that U1 provides, join the honorable Ubuntu developers circle, and explore new areas of interest in the ins and outs of Android platform.

Also, I have found positive feedback of these stimulating:

  • brainstorm Idea #19912 2

  • Bug #4681143

  • ubuntuforums thread4

  • yet another thead - poll5

Please describe a tentative project architecture or an approach to it

I would use the preferred way to develop applications for Android, which is Eclipse with Android SDK. First stage would involve designing a user-friendly UI with possibility to browse the files in the cloud. Before we introduce syncdaemon as the last blueprint, opening a file is essentially downloading it (preferably to SD storage) and creating Intent for an application to handle viewing that file (PDF viewer for PDF files, Quickoffice for office files, MP3 player for music files, and so on). Next up is uploading a file, and optionally publishing it. If so, from U1 cloud server we receive a public URL that we can share with GMail/Twitter/other app that handles URL Intents. Whilst browsing the cloud, we can also select a folder and share it with another Ubuntu One user - this is basically handled by U1 servers. Last but not least, if we're ahead of time, we can start implementing syncdaemon, which would deliver whole bunch of new possibilities (file sync in different modes, Rhytmbox list sync, and much more [see feature specs]).

Further development: We can expect there will be much in common with ubuntuone-client's approach to file sync, however adjusted for mobile use by means of availible sync modes. Main focus would be on file sync with U1 based on favorable conditions (current connection, available storage, etc), managing files and accessing them off-line. I would be more than excited to introduce CouchDB access also (possibly exposing API for Android U1 plugins).

Give us details about the milestones for this project

  • April 26th
    • Accepted student proposals are announced, and everybody's having their fingers crossed!
  • April 26th - May 24th (weeks 1..4) - community bonding period
    • week 1 - week 2
      • dig into Android SDK, collect project-related Intents
    • week 2 - week 4
      • learn inner workings of U1
      • further investigate ubuntuone-client source
      • ask U1 team/mentor any questions that arise
    • week 4
      • start designing application UI
      • ask U1 team for opinion & feedback

  • May 24th - July 12th (weeks 5..10) - coding
    • week 5 - week 6
      • polish UI design
      • implement browsing of cloud files
    • week 7/8 (June 22th - July 2th)
      • exams, only 2 so the break will be short
    • week 9 - week 10
      • implement downloading / opening of a cloud file
      • testing
  • July 12th - mid-term evaluations
  • July 12th - August 9th (weeks 11..14)
    • week 11 - week 12
      • 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
    • week 12 - week 13
      • sharing a cloud folder with another Ubuntu One user
      • testing
    • week 13 - week 14
      • if ahead of time, start implementing syncdaemon for specific UDFs
  • August 9th - 'pencils down' date
    • more testing
    • resolving any issues
  • August 16th - firm 'pencils down' date
    • final-freeze
    • submit code to Google
  • August 20th - final evaluation date

Documentation compiled in the meantime.

Why will your proposal benefit Ubuntu?

It will extend the reach of U1, and hopefully be the next step in friendship of Ubuntu operating system and mobile devices. Apart from the Ubuntu One functionality, there are many more projects that would be fun to develop in this area, like a dedicated remote for presentations on Ubuntu or performing simple remote tasks on ubuntu box/server/cloud machine stats/etc. It would be pure fun to carry my Ubuntu in my pocket everywhere, while the computer itself is still at home/work. Right now to access your files from your phone, you can have an SSH client (or VNC on a very small screen, which is bad), and nothing more. So let's do more!

Open Source

Please describe any previous Open Source development experience

I haven't released much Open Source yet. I wanted to open an execution environment for pseudo assembler machine MARIE, but didn't have time to polish it (but it is fast, thousands times faster than Java app students were supposed to use). I've dug into Nautilus a bit, also plan to implement application similar to Windows' Mobility Center.

Why are you interested in Open Source?

For me, Open Source has always been an Utopia - but one thing different, it exists! And it should continue to exist and grow in potential and possibilities. I love the idea that anyone can take the source and change it to his/her needs, no limitations whatsoever! Icon's don't align as you like? apg-get source nautilus and fix it. Something broke? Inspect why, and help out others. No waiting for the patch, because someone won't let you fix it yourself. Open Source not only provides good quality thanks to thousands of developers, Open Source gives you freedom and the power to act and do things better!

I have used GNU/Linux over 8 years I think, more than half spent on Ubuntu. And I owe it.


How long will the project take? When can you begin?

It will take whole summer and fit in the given time frame, approximate timeline has been given in milestones section. I can start along the schedule, but I'm happy to have already begun research. There is much more to do, I would like to continue on the project after GSoC.

How much time do you expect to dedicate to this project? (weekly)

Up to 22hrs during academic year, 30hrs daily during holiday (Space-time continuum bending. Seriously - I can't imagine a better work and hobby at the same time. I will make it full-time or more.)

Where will you based during the summer?

Mainly my hometown Slupsk, possibly Warsaw. Both locations with suitable-to-high bandwith connection and a full fridge.

Do you have any commitments for the summer? (holidays/work/summer courses)

Maintain excitement and positive state of mind! (I have resigned from shortened holiday Erasmus exchange.)

Please designate a back up student (in case you need to withdraw your application)

I utterly doubt anything like that could happen. Should this happen, I would find a friend of mine.


Have you ever participated in a previous GSoC? (describe your project)

No, I haven't.

Have you applied for any other 2010 Summer of Code projects? If yes, which ones?

No, I haven't.

Why did you apply for the Google Summer of Code ?

Possibility to engage in Open Source development community, great way to make contribution to Ubuntu and tackle Android platform at the same time. For me, the cash incentive is not as important as working for Canonical and, in a way, Google at the same time. This is an ultimate possibility, and I would really want to make it happen.

Why did you choose Ubuntu as a mentoring organisation?

I have been a happy user of Ubuntu for more than 4 years, and I have been waiting long (due to me being active at the institute) to contribute and give back to the community and the operating system itself. I use Ubuntu daily for hours to both work - study or code that is, and entertain (the latter if the day happens to have more than 24 hours). I have enjoyed to follow the devel lists and watch the community collaborate, and now I want to make my share.

Why do you want to participate and why should Ubuntu choose you?

I'm very excited about writing this project and will commit the time and energy required to make it successful. I had the pleasure to talk to 3 members of Ubuntu One team, each of them equally enthusiastic and supporting the idea. I hope this wiki page reflects well my true intentions. If you have read this from the top, you know I deserve the chance to convert my passion and excitement into code Smile :) ! I would like to continue developing this project after GSoC, and would more then love to become a member of Ubuntu One dev team.

Thanks for reading this never-ending report. If you have any thoughts or ideas you'd like to share, please leave them below or send me an email. Cheers!

About me/Experience

I started programming in Pascal just before High School, and immediately transitioned to C and soon C++. Few years later, I also took on Java. I know GTK+ quite well and have applied it successfully in a commercial application. Currently, my areas of interest are algorithms & data structures. I'm a board member of Error 501 Interest Group6 at PJIIT, actively involved in leading algorithm-oriented programming trainings. I've been delegated from PJIIT to programming contests (see webpage). Apart from that, I know PHP, SQL, XML, jQuery, etc on intermediate level (these however would be of small if any use in that project). Last summer, I have also taken one month course in Web Development (mainly ASP .Net) at Glyndŵr University, Wrexham, UK.

GSoC/2010/MichalKarnicki (last edited 2010-06-26 18:34:37 by karni)