reports

AndroidU1 progress reports

August 9 - August 15

Subject: AndroidU1 - August 18, 2010

TIME SPENT: 35 hrs

ACCOMPLISHMENTS:

  • final code cleanup
  • i18n (strings to resources)
  • code documentation

ACTIONS FOR FOLLOWING WEEK:

  • get some rest Wink ;)

August 2 - August 8

Subject: AndroidU1 - August 9, 2010

TIME SPENT: 30 hrs

HIGHLIGHTS:

  • minor GUI improvements (list selector, context menus, preferences)
  • general maintenance, small improvements, string externalization to resources for i18n

CONCERNS: none

WAITING ITEMS: none

STALLED TASKS: none

ACCOMPLISHMENTS:

  • more code cleanup with improvements (too many detailed changes to list; those include connectivity, some code refactor such as OAuth access, ..)
  • externalized big part of strings to xml resources for i18n purposes
  • had problems with inflating different context menu types for directories/folders, and finally casted menuInfo to AdapterContextMenuInfo to extract the ViewHolder tag containing necessary data to select proper context menu

  • added custom list selector
  • modified and expanded preferences screen

MINOR TASKS:

  • talked to Ubuntu Design Team asking for support Smile :)

ACTIONS FOR FOLLOWING WEEK:

  • code cleanup
  • i18n
  • documentation

July 26 - August 1

Subject: AndroidU1 - August 3, 2010

TIME SPENT: 57 hrs
mon 7 tue 13 wed 10 thu 7 fri 10 sat 10 sun 0

HIGHLIGHTS:

  • added file upload feature
  • U1Service improvements

  • handling Android supported MIME types
  • improved notifications (both U1Service and U1Client)

CONCERNS: none

WAITING ITEMS: none

STALLED TASKS: none

ACCOMPLISHMENTS:

  • added file upload (currently for image/video/audio files)
  • proper handling of Android MIME supported types - opening files whenever there's a suitable app installed and letting the user choose one of such
  • improved application looks (custom row layout handling, icons, backgrounds, fonts)
  • view changelog dialog (I have already reported wiki certificate issue on Android <2.2)

  • located authentication problem

MINOR TASKS:

ACTIONS FOR FOLLOWING WEEK:

  • code cleanup & documentation

  • improve service connectivity (handle connection timeouts)

July 19 - July 25

Subject: AndroidU1 - July 26, 2010

TIME SPENT: 21 hrs

HIGHLIGHTS:

  • finished implementing opening files with suitable applications, currently works best on known MIME types representing pictures, videos and music

CONCERNS: Since Friday I'm having issues with Client.authenticate(), which takes away any possibility to test the application.

WAITING ITEMS: file upload

STALLED TASKS: file upload, due to authentication problems

ACCOMPLISHMENTS:

  • handling caching for real (updating db instead of proof-of-concept delete/insert)
  • refresh directory contents only when necessary (when user enters a dir, cached content is presented, and the server is asked for current dir hash - only in case it changed, dir contents are fetched and updated accordingly)

MINOR TASKS:

  • moved service is working checking where it belongs (U1Service)

  • few bugfixes
  • searched for authenticate() bug, yet failed miserably

ACTIONS FOR FOLLOWING WEEK:

  • implement file upload

July 12 - July 18

Subject: AndroidU1 - July 19, 2010

TIME SPENT: 84 hrs
mon 8 tue 14 wed 15 thu 13 fri 14 sat 12 sun 8

HIGHLIGHTS:

  • implemented U1Service (Android background service)

  • universal file U1CloudProvider (Android content provider) improvements

  • Ubuntu One client related important bugfix by verterok! (now app should work on all Androids)

CONCERNS: I did some good work, but I'm aware I should get more rest Wink ;)

WAITING ITEMS: none

STALLED TASKS: none

ACCOMPLISHMENTS:

  • U1Service is has been implemented, both AndroidU1 to U1Service and vice versa communication is now done using AIDL interfaces. Additionally I have worked out well lifetime control of the service (app lifetime span, or stay in backgroud mode)

  • U1CloudProvider got better in shape, I have implemented some utilities that will enable easy file MIME retrieval, which is essential for opening files on Android

  • Some neccessary code refactor has been performed. I have moved U1Client from the Main activity into the Service, which will enable on-going connection in case the application is moved into background or even killed

  • We have file download working properly with an indeterminate progress dialog (will add progress bar soon), and almost finished opening those files (which are accessible via /sdcard/Ubuntu One folder)

  • Better handling of rotation (also nontrivial, depending on U1Service mode and other factors)

MINOR TASKS:

  • service is working GUI indicator (upper right corner)

  • other GUI improvements
  • current plan refresh on tap in preferences

  • code review of Deferreds by verterok (thanks!)
  • bugfixes thanks to my great pre-alpha testers (thanks! keep the logs and opinions coming!)

ACTIONS FOR FOLLOWING WEEK:

  • implement file viewing (nearly finished)
  • implement file upload

July 5 - July 11

Subject: AndroidU1 - July 13, 2010

TIME SPENT: 30 hrs

HIGHLIGHTS:

  • improved content provider base
  • worked on preferences
  • learned about services and started implementing one
  • already collected some log submissions and fixed problems
  • moved home so that I can focus only on AndroidU1 Wink ;)

CONCERNS: none

WAITING ITEMS: none

STALLED TASKS: none

ACCOMPLISHMENTS:

  • read 250+ pages on Android development to learn Android-fu way of doing things (noted quite a few improvements to implement)
  • content provider should now support caching
  • preferences got list sort option

MINOR TASKS:

  • did the "Remove this device" TODO (bugfix)
  • added version to preferences screen
  • many code fixes all over the code

ACTIONS FOR FOLLOWING WEEK:

  • implement file up/download + viewing

June 28 - July 4

Subject: AndroidU1 - July 4, 2010; [finished exam session, see schedule on proposal]

TIME SPENT: 6 hrs

HIGHLIGHTS:

  • Together with Aquarius and Verterok, we started discussing how should we handle viewing/caching cloud content
  • I was pretty excited for Ubuntu One Ubuntu team to see my application (my mentor has presented it during their last meeting). Part of users where affected by protocol buffers bug (we're working on it). However many of them where able to run the application successfully, and I'm glad they could see the progress we made Smile :)

CONCERNS: none

WAITING ITEMS: none

STALLED TASKS: none

ACCOMPLISHMENTS:

  • implemented submitting debug (verbose) logs via e-mail

MINOR TASKS:

  • changed from "Android" to real phone model, like "HTC Hero", when authorizing the device against U1 for the fist time
  • added "Remove this device" option to Preferences (TODO: kill the Main app, the tokens have been dropped)

ACTIONS FOR FOLLOWING WEEK:

  • implement file downloading + viewing

June 21 - June 27

Subject: AndroidU1 - June 28, 2010; [exam session, see schedule on proposal]

TIME SPENT: 30 hrs
mon 3 tue 5 wed 1 thu 8 fri 8 sat 0 sun 5

HIGHLIGHTS:

  • Thanks to verterok, u1-java-sp now has possibility to use old I/O and thus run on Android successfully
  • Finally I was able to lay basis for folder browsing (beta available)

CONCERNS: I'm wondering if there's a way to persist Ubuntu One client state, as rotating the device to landscape (thus the Activity is re-created) causes unnecessary re-connect.

WAITING ITEMS: Look into aquarius' bug report with verterok, not sure what caused protocol buffers error. Apart from the emulator (running 1.5, 2.0, 2.1, 2.2), the app has been successfully tested on devices running Android 1.5 and Android 2.1 .

STALLED TASKS: none

ACCOMPLISHMENTS:

  • implemented basic CloudFile content provider

  • implemented basic folder browsing
  • implemented fetching account info

http://lh5.ggpht.com/_RF4X7KUEkGc/TCib24_VlYI/AAAAAAAAA38/iLMyBHUdvDI/s800/screen11.png http://lh5.ggpht.com/_RF4X7KUEkGc/TCib21ARqzI/AAAAAAAAA4A/bNJKn6nQpv8/s800/screen12.png

MINOR TASKS:

  • substituted laggy Connecting dialog with custom content view layout
  • proper handling of «Back» button
  • implement «Refresh» Menu option
  • Auth.java code documentation and clean-up
  • removed exposing tokens in logs

http://lh6.ggpht.com/_RF4X7KUEkGc/TCib2vb3k8I/AAAAAAAAA34/VvFSDujn1dg/s800/screen10.png

ACTIONS FOR FOLLOWING WEEK:

  • one exam left

  • if sufficient time, start implementing file downloading

June 14 - June 20

Subject: AndroidU1 - June 20, 2010

TIME SPENT: 40 hrs
mon 11 tue 10 wed 1 thu 8 fri 2 sat 4 sun 4

HIGHLIGHTS:

I am not sure if those should be listed in this section.

  • With help of verterok, located a critical from project's perspective handshake problem on Android platform details here
    (problem with Apache Harmony ClientHandshakeImpl)

  • That has been fixed in very recently released Android 2.2 aka Froyo, but it didn't help us either, as we hit
    another Android bug with NIO Socket details here (problem with Apache Harmony SelectorImpl)

  • In the end, verterok suggested one way out is to downgrade Ubuntu One client based on NIO sockets to blocking OIO, running in another thread. Therefore we have started to work on that - with tons of hints, I managed to implement OIORequestHandler, which verterok would merge with his code.

Here I would like to thank Guillermo Gonzalez (verterok), the author of [amongst others] ubuntuone-storage-protocol Java port, who after hours dedicates much time helping me with protocol related issues and giving me suggestions and pointers for further work. Thank you so much!

CONCERNS: I'm way off schedule [2 weeks = 2 milestones] due to two Android bugs that, out of no other options, have made us focus on the storage protocol client implementation and not the AndroidU1 application itself. Moreover, we have just approached my exam session declared beforehand in my proposal.
But fear not, my dedication knows no limits. I will make up the time spent on working out those problems.

WAITING ITEMS: implementation of OIOClient with help from verterok (he has a working version, but it needs few more pieces). I have failed to implement a mock client for temporary use, as I always ended up with inheritance or other dependency problems, which needed refactoring of majority of the protocol's code. Therefore I have moved to things I can do until that time.

STALLED TASKS: file browsing, file up/download

ACCOMPLISHMENTS:

  • helped implement OIORequestHandler for use with OIOClient (protocol related work)
  • laid basis for Preferences Activity (earlier it was a regular Java class serving preferences and their utilities, now it's also a regular Activity),
    working elements: upgrade, manage, support

http://lh6.ggpht.com/_RF4X7KUEkGc/TB6pgUEKhsI/AAAAAAAAA2o/J_OOOfffu5Q/s800/prefs1.png http://lh4.ggpht.com/_RF4X7KUEkGc/TB6zK0QqjqI/AAAAAAAAA3w/Vr2ZJTkFqmA/s800/prefs2.png

MINOR TASKS:

  • packaged u1-java-sp with maven, removed u1-java-sp from project and included the jar
  • unrelated - implemented AndroidU1 Intent-based ala Ubuntu SSO in spare time

http://lh5.ggpht.com/_RF4X7KUEkGc/TB6p305HCtI/AAAAAAAAA3E/gbyuu5mmv3A/s800/sso-02.png http://lh6.ggpht.com/_RF4X7KUEkGc/TB6p4Tg-PwI/AAAAAAAAA3I/BL6o0PZzios/s800/sso-03-ok.png http://lh5.ggpht.com/_RF4X7KUEkGc/TB6p5KpiIEI/AAAAAAAAA3M/m2kPP2oTiLY/s800/sso-04-bad.png

ACTIONS FOR FOLLOWING WEEK:

  • catch verterok and ask about current status of OIOClient (he's so unlucky with me, isn't he.. Sad :( )

  • refactor U1Client for use with OIOClient

  • if above are finished, implement file browsing
  • if not, implement local device file browser for future use with AndroidU1

  • get enough sleep to pass my exam

June 7 - June 13

Subject: AndroidU1 - June 13, 2010

TIME SPENT: 52 hrs o_O
mon 1 tue 9 wed 5 thu 11 fri 10 sat 7 sun 9

HIGHLIGHTS:

  • Rewrote majority of the code for better Activity life cycle handling, proper resuming (any scenario) and app behaviour
  • Definitely finished login procedure
  • Figured out that we need to use TLS SSLContext instead of SSL (which isn't implemented under Android) - I hope it won't be a problem, since I didn't have possibility to consult that yet with U1 admins.
  • Pulled InflaterOutputStream.java from the net for u1-java-sp GetContent Request, which isn't availible under Android Java Runtime

  • Pushed Ubuntu One client functionality into the project, named it U1Client - connects properly, but I badly need feedback from verterok on that one (Deferred's fail to run? Should I turn those into Handler Runnables?)

CONCERNS: I'm few days off schedule (planned to finish browsing folder hierarchy by now, but I hope a talk* with verterok will give me another boost). I'm doing my best, and I may throw in few days from my exam period.

WAITING ITEMS: client.oauthAuthenticate doesn't seem to authenticate on Android or doesn't cause a callback to indicate it has finished - see: *

STALLED TASKS: file browsing - I'm worried about Deferring Requests, see: *

ACCOMPLISHMENTS:

  • rewrote majority of the code, finished authentication
  • pulled ubuntuone-java-storageprotocol into the project (wasn't that easy as I thought)
  • implemented basic U1 client functionality
  • made netty run on Android

MINOR TASKS:

  • turned Main into ListActivity and populated it with test data (contact names + notes two-liner)

  • preped main.xml and login.xml to be ListActivity compatible

  • added picture on the login screen
  • handle some exceptions, including 'Cancel' button from the browser
  • read dev resources and talked on IRC about stuff I had problems with

ACTIONS FOR FOLLOWING WEEK:

  • make sure U1Client is working -> implement pending browsing of the cloud, start next blueprint if time left

http://lh5.ggpht.com/_RF4X7KUEkGc/TBYLIJzaUbI/AAAAAAAAA1w/Kw2OotkL_JY/s800/screen01.png http://lh3.ggpht.com/_RF4X7KUEkGc/TBYLIFgwvMI/AAAAAAAAA10/YSjbmcxu7NM/s800/screen02.png http://lh5.ggpht.com/_RF4X7KUEkGc/TBYLIf4FCTI/AAAAAAAAA14/Vw89Bb6n6yE/s800/screen03.png

Second screenshot is not a static layout, but an optional label, when there's no data for the ListAdapter. Excuse the number of entries on the third screenshot - it's from the simulator, so I had to enter that into Contacts with my mouse.

PS God I love the ease of editing this wiki! Smile :)

May 31 - June 6

Subject: AndroidU1 - June 6, 2010

TIME SPENT: approx 25 hrs
mon 7 tue 1 wed 3 thu 6 fri 4 sat 3 sun 1

HIGHLIGHTS:

  • I had to focus on other tasks then planned, since recently slow U1 servers weren't happy with u1-java-sp (ubuntuone-java-storageprotocol) used by ExampleClient, so I started with proper code refactoring. I converted some blocks of code into AsyncTasks, which I decorated with progress dialogs (like 'Adding device' or 'Authenticating'). They need a bit more work, but I should roll out that really soon. We also have a new options menu in the Main activity.

  • Servers are running much faster now thanks to Ubuntu One hackers, up to a speed a mobile application requires.
  • Received a workaround fix from Verterok to bring that u1-java-sp back to life.
  • Got a cool lesson on the workings of u1-sp from Verterok (thank you for your time and instructions) and I'm now ready to challenge myself with new toys and start working on file browsing.

CONCERNS: none - I hope U1 servers will become more and more stable as the new software is being introduced to consecutive machines.

WAITING ITEMS: none

STALLED TASKS: file browsing - I had to wait, but now I'm ready to rock.

ACCOMPLISHMENTS:

  • refactored parts of code; turned into proper AsyncTasks (almost finished)

  • u1-sp knowledge++

MINOR TASKS:

  • implemented GUI of Main activity options menu
  • polished code
  • reported and investigated problems of u1-java-sp, talked on #ubuntuone / priv about those issues

ACTIONS FOR FOLLOWING WEEK:

  • start implementing browsing of the cloud (which was pending)

May 24 - May 30

Subject: AndroidU1 - May 30, 2010

TIME SPENT: approx 36 hrs
~ [sun 6] mon 5 tue 5 wed 4 thu 1 fri 6 sat 4 sun 5

HIGHLIGHTS: I have enjoyed talking to people on matters related to the project, like storage protocol, launchpad or oauth. ubuntuone-java-storageprotocol by Guillermo (verterok) is Java implementation of ubuntuone-storageprotocol, which I will be using to access/upload files to U1 cloud. After an interesting and long talk with Guillermo (thank you!), I added some basic functionality to the ExampleClient, making possible to list (ls) and go into the folders (cd). I was very excited to traverse into U1 hosted folders from the command line. You couldn't do cd .. Wink ;) , but that task wasn't the first in the queue anyway. I had to challenge myself with OAuth. It was definitely a new standard for me to learn. The way it works is really cool, and though there's a dead-simple to use oauth-signpost library, I had major issues with the server response and the log-in never worked at the first attempt. With help of Matt (gauntface), we found out it was an Android issue poking around HTTP request headers (I won't jump into details here). Solution was to swap the Consumer/Provider classes to CommonsHTTP* versions - now getting the access/secret token pair is a blast Smile :) I have also enjoyed setting up the project on Launchpad, which wasn't that simple I must say. I plan to query my mentor if I got those series/branches right. lp:androidu1/0.x is the devel branch (note that I'll commit the fixed oauth tomorrow [Monday])

And I must say - I am delighted with the reaction of the community! I have hardly started, and after I have asked for feedback here and there, I started getting blog comments, e-mail replies, shout-outs on IRC, even one wiki edit.

And just between you and me Wink ;) .. together with my mentor, we've got our heads full of even more ideas! But we'll leave that for discussion after completing GSoC... Wink ;)

CONCERNS:

  • Recently there supposedly was some work done over the server side, which might have broken Java implementation of storage protocol. I have informed verterok about that, maybe those timeouts I get is not a big issue.
  • What worries me more though, is the speed of the servers. I'll be implementing file listing/browsing soon, but it took ages for the CLI version program to fetch the root node and list the files. The time I may spend on the application testing (and the application usability itself) is what worries me even more. It may be related to current maintenance, my U1 files are waiting in Ubuntu One folder for upload for the last few hours.
  • blogger sucks Wink ;) No, really.. I started writing my blog posts in HTML, that editor generates so much css crap.. Is there any working RSS generator for wiki.ubuntu.com sites :3 ? (by the way, :3 is a cat, not part of your body you sit on, you pervert!)

WAITING ITEMS: I hope verterok gets back soon and we'll be able to sort out that storageprotocol errors. That doesn't hold me back much, though. (yet)

STALLED TASKS: none

ACCOMPLISHMENTS:

  • implemented the login screen (Activity) and the OAuth procedure
  • used the u1-java-storageprotocol for the first time

MINOR TASKS:

  • Quite many, which have been logged in a blog form here: http://android-u1.blogspot.com , including:

  • decided on implementing order/importance
  • making mock-ups with Balsamiq
  • setting up the project (I was new to maven)
  • tens of fruitful talks on IRC, including aquarius (my mentor), verterok, gauntface, and many other

ACTIONS FOR FOLLOWING WEEK:

  • start implementing browsing of the cloud

I hope you like the semi-formal style of the report Wink ;) Have a lovely day/night!

Template

Subject: Project name - Date of report

TIME SPENT: approx hours

HIGHLIGHTS: what you learnt/ enjoyed the most

CONCERNS: what is concerning you that is out of your hands to change

WAITING ITEMS: Are you waiting for anyone else to complete a task or are you depending on someone else

STALLED TASKS: If you are stuck, please state the factors that delayed those tasks

ACCOMPLISHMENTS: List them by importance

MINOR TASKS: Any other tasks

ACTIONS FOR FOLLOWING WEEK:

mkarnicki/gsoc/AndroidU1/reports (last edited 2010-08-18 18:50:16 by karni)