MichalKarnicki

Differences between revisions 12 and 29 (spanning 17 versions)
Revision 12 as of 2010-03-29 22:13:28
Size: 9230
Editor: chello089072085049
Comment:
Revision 29 as of 2010-06-26 18:34:37
Size: 13406
Editor: chello089072085049
Comment:
Deletions are marked like this. Additions are marked like this.
Line 2: Line 2:

'''Update'''
Detailed progress of the project will be reported to my mentor, as well as reflected on those sites:
 * [[http://android-u1.blogspot.com/|AndroidU1 GSoC blog]]
 * [[https://launchpad.net/androidu1|AndroidU1 on Launchpad]]
 * [[https://wiki.ubuntu.com/specs/UbuntuOneForAndroid|AndroidU1 specs]]
Line 4: Line 11:
 * '''Email Address:''' mkarnicki at gmail.com  * '''Email Address:''' <<MailTo(mkarnicki AT gmail DOT com)>>
Line 14: Line 21:
Ubuntu One client for Android Android U1: Ubuntu One client for Android
Line 17: Line 24:
(See feature specs for details <<FootNote(https://wiki.ubuntu.com/specs/UbuntuOneForAndroid)>>)<<BR>>
The project intends to extend the scope of use of Ubuntu One to Android powered devices (let's call them Apd's). This application would enable Ubuntu users, who own an Apd not only to access their files in the cloud, but also share experience on the spot. Just a few possible scenarios:
(See feature specs for details <<FootNote(https://wiki.ubuntu.com/specs/UbuntuOneForAndroid)>>)<<BR>><<BR>>
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.
Line 20: Line 27:
Each time Tom makes a picture with his Apd, it appears on his computer (naturally, on whatever connection he prefers, wifi preferably, slower connections might not be suitable). He's a clumsy guy, and often forgets to take the USB cable with him, so he also prefers to manage music on his Apd through Ubuntu One. 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 22: Line 35:
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.

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.

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.

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!)
##Possible use-cases:
##
##Each time Tom makes a picture with his Apd, it appears on his computer (naturally, on whatever connection he prefers, wifi ##preferably, slower connections might not be suitable). He's a clumsy guy, and often forgets to take the USB cable with him, ##so he also prefers to manage music on his Apd through Ubuntu One.
##
##
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.
##
##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.
##
##Kim made some notes on her laptop last night, but forgot to take them 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.
##
##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 31: Line 48:
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 - and would therefore appreciate, if Ubuntu would acknowledge it's importance and positive impact on Ubuntu One and Ubuntu itself. 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.
Line 37: Line 54:
[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>>
 * 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 43: Line 60:
This is yet to be discussed with my mentor. I may expect that there will be much in common with ubuntuone-client, however on other platform, framework, and possibly differences in approach to file syncing, also see next section. 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).
Line 46: Line 66:
Discussion in progress.<<BR>>
See feature specs <<FootNote(https://wiki.ubuntu.com/specs/UbuntuOneForAndroid)>>

 * 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.
Line 50: Line 109:
It will extend the reach of U1, and hopefully be just the first step in friendship of Ubuntu operating system and mobile devices (apart from UNR, it'd be phones, that is). Apart from the Ubuntu One functionality, there are many more projects that would be fun to develop, like ''a remote'' for presentations or ''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 - you have ssh client (or vnc on ultra small screen = bad), and that would be it, nothing more. So let's do more! 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!
Line 54: Line 113:
I haven't released much Open Source yet :( I wanted to let free 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 we were supposed to use). I've dug into Nautilus a bit, also planned to implement application similar to Windows' ''Mobility Center''.

As this section is the only suitable, I'll let myself continue on the overall programming experience. I'm much into algorithms, I started with Pascal and immediately transitioned to C, followed by C++ and Java. I have used GTK+ quite much. I'm a board member of [5] Error 501<<FootNote(http://error501.pjwstk.edu.pl)>> Interest Group at PJIIT, actively involved in leading algorithm-oriented trainings. I've been delegated from PJIIT to programming contests. Apart from that, I know PHP, SQL, XML, ASP, jQuery, etc - however these would be of small if any use in that project.
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''.
Line 59: Line 116:
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 you can't 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! 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!
Line 61: Line 118:
I have used GNU/Linux over 8 years I think, more than half spent on Ubuntu. And I owe it :) I have used GNU/Linux over 8 years I think, more than half spent on Ubuntu. And I owe it.
Line 65: Line 122:
Sensible subset of features decided upon with my mentor should make the project fit the given time frame :) 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.
Line 68: Line 125:
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.) 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.)
Line 77: Line 134:
I utterly doubt anything like that could happen. Should this (uber impossible) happen, I would find a friend of mine. I utterly doubt anything like that could happen. Should this happen, I would find a friend of mine.
Line 87: Line 144:
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'd really want to make it happen. 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.
Line 93: Line 150:
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 :) ! 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 :) ! I would like to continue developing this project after GSoC, and would more then love to become a member of Ubuntu One dev team.
Line 96: Line 153:
-------
==== 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 Group<<FootNote(http://error501.pjwstk.edu.pl)>> 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.
------

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

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.

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

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.

Availability

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.

Other

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 chello089072085049)