GSoC Proposal for review

Grace Karanja gracie.karanja89 at gmail.com
Wed Mar 18 00:05:54 PDT 2015


Dear Subsurface team.

Below is my GSoC proposal, please review it. Comments are welcome :)

I would like to take this opportunity to apply for participation in Google
Summer of Code (2015) under your organization.
My name is Grace Karanja, and I am IT/Business undergraduate student at the
Jomo Kenyatta University of Agriculture and Technology in Nairobi, Kenya. I
have been active in the Subsurface community since early February, 2015,
and during this time I have had the chance to interact with some members of
the development team. I have greatly enjoyed this process, which has
enabled me to learn so much about open source development in general and
Subsurface in particular.


*Subsurface Questions*
*When did you first hear about Subsurface?*
I heard about Subsurface towards the end of January 2015, when researching
about Qt projects in Google Summer of Code.

*Do you have any diving experience? (this is not essential, we have devs
that are not divers)*
No. I have never dived in my life. I am terribly scared of being underwater.

*What attracted you to Subsurface?*
I was doing research on Qt based projects that have participated in Google
Summer of Code before. What caught my eye about Subsurface is that it
incorporates various aspects of tech that interest me:
- Qt
- Accessing/Controlling devices


*What other open-source tools do you use?*
-VirtualBox
-LibreOffice
-Linux
-Audacity (Audio Editor)
-QtCreator
-VLC
-Android Studio
-Eric 4 (Python IDE)

*Describe any participation by you in the Subsurface community (e.g.
created tutorials, submitted bug reports, asked or answered questions on
mailing lists or IRC).*
-As I have been working on the undo/redo feature, I have also been involved
in several IRC and mailing list discussions about the same.

*Describe any contributions you have made to Subsurface development (e.g.
bug fixes, translations, packaging, testing).*
-I have implemented the undo/redo feature for Subsurface.

*In exactly two sentences, why should we pick YOU?*
-You should pick me because I believe that I am broad minded and eager to
learn. I believe that my drive and passion for software development and
tech in general makes me a good candidate for this summers program as a
student, and as I gain enough experience and skills I wish to be a mentor
in the future.

*About Yourself*
What is your name, email address, and irc nickname?
Name: Grace Karanja
Email: gracie.karanja89 at gmail.com
IRC Nickname: gracek

*Describe any plans you have for the summer in addition to GSoC (classes,
thesis, job, vacation, etc.).*
-I don't have any other summer plans at the moment. I shall be done with my
first term exams in mid-April, and then I will be on break until the end of
June when I shall go to school for a week to apply for my internship. I
will then be free until the end of September when I will start my
internship for 6 months.

*What programming projects have you completed?*
-I have worked on a timetable generation tool for my college. This project
was done using ASP.NET and Microsoft SQL Server. The software allows the
students to view an online timetable, and keep a copy on their devices, as
opposed to the previous manual process where the schedules were posted on
notice boards.

-I have developed a Laboratory Information Management System (LIMS) for
Unga Group, a multinational milling company based in Kenya. This system is
made using Qt and PostgreSQL, and is used to collect grain samples and post
the results once they are tested in the lab. The staff in the field use an
Android app (made using QML) to post the details of collected samples, and
the same app is used by the suppliers to keep track of the status of their
samples. The LIMS system also integrates to various lab equipment to
automate fetching of results.

*What are your favorite programming tools (editor, etc.)?*
-I use QtCreator and KDevelop on Linux, and Visual Studio on Windows.
-On console I use emacs
-For plain text I use PowerPad on Windows and Kate on Linux.

*Describe any work on other open-source projects.*
-I have contributed to Bika LIMS, an open source Python based Laboratory
Information Management Systems.

*List other GSoC projects you are applying to.*
-I will only be applying to Subsurface.


*APPLICATION*
*Summary*
Subsurface in its current state is primarily designed to be used on a
personal computer. Although it can be compiled for Android devices, the
user interface is not really usable on mobile devices. Using QML, we can
create a new user interface targeted at Android mobile phones and tablets.
This QML based interface will maintain the C/C++ back-end, resulting in a
unified code-base which will be easy to maintain, and new features will be
easy to implement on both mobile and desktop devices.

By using QML for the Android port, we will be able to reuse the existing Qt
models used in Subsurface.

*Expected Outcome (GSoC period)*
An Android application that can be used to display a list of dives, view
the dive profile and other dive details, and edit dive details as needed.

*Long Term Goals (Post GSoC)*
Expand the Android application to be able to download dives directly from
dive computers, import from online dive logs, export to CSV, HTML etc,
sharing dive profiles on social media, and sharing dive profiles on Android
IM apps such as WhatsApp.

*Benefits to Subsurface*
Some expected benefits to Subsurface are:
1. Users will be able to carry their dives on their devices and view them
when mobile.
2. No need of PCs to edit dive details.
3. Once dive computer download is implemented, divers will be able to carry
only phones/tablets on diving trips.
4. Gain a new result driven contributor.

*Project Milestones*
Throughout the summer, I intend to achieve:
1. Models: Learn about the Qt models in use in Subsurface, and determine
what changes (if any) are needed to make these models drive our Android app.
2. Dive List: Draft application that can open dive logs and display a list
of dives.
3. Dive Details: Show the details of the selected dive.
4. Editing: Ability to edit dive details (Notes, buddies etc) on Android,
and saving them back to the dive log.
5. Dive Profile: Ability to render the dive profile on Android.
6. Polishing: Improve the user experience.

All sections above will involve the community, and suggested changes will
be effected as needed.

*Timeline*
The timeline suggested below will be my guide for the summer. I will keep a
copy of this timeline on my blog, and I will update it as I complete each
phase. I will also seek my mentors' opinion on the duration assigned to
some of the tasks, and alter them as needed.

*From now to 27 April:*
Continue on the undo/redo feature, while talking to the development team
about the android port.

*27 April to 25th May:*
Community Bonding Period:
I will use this period to work with my mentors to come up with a draft of
the classes to be used and a rough draft of the user interface.
During this period, I will sharpen my Qt/QML skills and research on all
technologies that might be needed during the summer and beyond.

*Section 1 (27th May to 26th June)*
Before the mid term, I expect to be finished with milestones 1 to 4.

*Week 1 (27th May - 6th June)*
I will make the needed changes to Subsurface's Qt models to make them
better suited for QML, and write a basic QML app that can browse the
device's file system to select files containing dive logs.

*Week 2 (8th June - 14th June)*
I will then add the ability to open the selected dive log, and display a
list of the dives, with some basic details such as date, time, location,
duration and average depth.

*Week 3 (15th June - 21st June)*
Next, I will expand the app further, so that when the user taps on a dive,
it will open an interface with more details about the dive.

*Week 4 (22nd June - 26th June)*
Editing: Before the mid term, we should be able to edit the dive details
and save them in the XML file.

*Week 5 (29th June  - 3rd July)*
I will take a break to go to school to apply for  my internship

*Weeks 6 and 7 (6th July - 18th July)*
Once we are able to preview the dive details, I will add the ability to
show the dive log. By swiping long-pressing on a dive in the list, the user
will be able to open up the dive profile for the respective dive.

*Week 8 (20th July - 26th July)*
The core part of the project should be done by here, and I will focus on UI
polishing, better animations and transitions to improve the user
application.

*Rest of the program (27 July - 17th August)*
This time will be focused on improving the application based on user
feedback, fixing bugs and writing documentation. At the end of the period,
we should have the app published on the Google Play Store.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.subsurface-divelog.org/pipermail/subsurface/attachments/20150318/36ab86e7/attachment-0001.html>


More information about the subsurface mailing list