GSoC2012

From GnuCash
Revision as of 00:49, 6 March 2012 by Jralls (talk | contribs) (Fix up Unit Testing task)
Jump to: navigation, search

Google Summer of Code 2012

GnuCash applies as a mentoring organization in the 2012 Google Summer of Code (GSoC) program. See our org application here: GSoC2012/OrgApplication


The following are the proposed ideas from the GnuCash developers for student projects. If you are interested in applying as a student for the Google Summer of Code, first contact the GnuCash developers through the Mailing List gnucash-devel@gnucash.org to discuss your ideas, then follow the link above and apply at Google.

Timeline

The timeline is copied from here:

  • March 16: List of accepted mentoring organizations published
  • April 6: Student application deadline.
  • April 23: Accepted student proposals published
  • May 21 - August 20: Students work on their GSoC projects.

Proposed Projects

Here we collect projects which are proposed for students interested in the 2012 GSoC.

Other lists of feature proposals are here:

In particular, the GnuCash developers think the following ideas would make good GSoC projects:

GnuCash Expense Tracker Android application

GnuCash is a desktop application. It will make the life of users easier, if they can capture expenses closer to where they incur expenses using a mobile phone. This will be more accurate and save them time when later entering the transactions.

  • Allow users to enter expenses.
  • Make a selection for each expense as to the mode of payment - cash, credit card, debit/ATM card or check.
  • Allow the expense entries to be exported in QIF/CSV format for import into GnuCash.
  • Mark those entries exported with a flag to avoid duplicate export.

Prerequisites: Software engineering knowledge; Android SDK, Java, C knowledge to understand GnuCash code.

You will learn: You will have the time to evaluate the required and optional fields that need to be populated for importing expenses into GnuCash. You will also learn how to allow users to configure multiple credit cards and bank accounts into the Android application. You will get an insight into GnuCash data model and business logic, while advancing in Java and Android development.

You can achieve: The result of your project would be an Android application readily used by thousands of users for their personal and business financial transactions.

Mentor: Muslim Chochlov

Core libraries unit testing

Many parts of Gnucash's core libraries are not well covered by unit tests. In some cases the programming interface isn't well documented. In this task, the student can use GnuCash as a real-life example for software engineering, working his/her way through the code and documenting and/or adding unit tests. Many of the classes exhibit poor object-oriented design and don't fully or correctly implement the desired GObject framework. This task involves achieving 100% unit test coverage (using GLib Testing) on functions in one or more compilation units (the number of modules and which ones can be determined by the student based on his/her experience and interests).

Prerequisites: Software engineering knowledge including basics of unit testing with XUnit and object-oriented design; you'll need to be fairly proficient in C programming on a Unix platform.

You will learn: Real-life software engineering with legacy code: Refactoring complex functions to get test access to different branches, writing comprehensive unit tests, memory management in a reference-counted (as opposed to garbage collected) environment.

You can achieve: You will see how some more fragile parts of GnuCash can be refactored into much better code by using your newly introduced unit tests. Eventually new user features will become possible only because your unit tests lay the foundation for major architecture changes.

Mentor: John Ralls and others

Others

If you have other ideas yourself, do not hesitate to propose them on the gnucash-devel mailing list. We have several mentors available which could mentor projects proposed by yourself as well.

However, first please read this mailing list reply and follow its instructions. Then, explain your progress on the mailing list and discuss your project ideas in some more detail there. Announce your idea on the list, and you will quickly receive some feedback on whether this sounds like a viable project within GSoC or not. We are looking for your ideas.

Student Participants Application

If you're a student who is interested in any of the ideas above, please perform the following steps:

  • Subscribe to our mailing list gnucash-devel and send a message to the list, announcing your interest and starting a discussion on how to work on this project. The idea is to find out from members if your idea is feasible in the timescales of Google Summer of Code.
  • You will then need to turn your ideas into a proposal for a project and apply at google for your project. We are proposing the following template for student proposals:
Basic Information
-----------------
Student name:
Location (Country, state, Home town, state):
Email:
Instant messaging contact details (Skype or similar):
College/University:
About yourself (short bio):

Programming skills
------------------
What operating systems you are used to work with?

What is your experience with programming languages (what language/how many years)?

Are you used to version control systems?

Any other IT skills that you think might help you with your project.

Get to know GnuCash
-------------------
Have you ever built GnuCash from source? Please do so before applying (see
http://wiki.gnucash.org/wiki/Building), otherwise your application will not be considered!

What problems did you encounter during the build process? 

    • //TODO Other pop quiz questions about GnuCash
Project Information
-------------------
What project in GnuCash would you like to work on?

What will be the result of your project (e.g. "At the end of my project,
GnuCash can handle twenty new import and export file formats")?

What makes you the right person to be selected for this project?

How do you propose to solve the problem(s) posed in the project you'd like to work on?

Provide the timeline of how you are going to subdivide the project into tasks (it is not final and could be changed
during the GSoC).

If you're accepted we will also be asking for your proposed username and SSH public key for access to the subversion server. If you need assistance with those steps, don't hesitate to ask on the mailing list gnucash-devel as well.

Previous Years

See SoC2007 and SoC2010 and GSoC2011 for our previous ideas and accepted students who worked on gnucash projects in the GSoC 2007 and 2011. Our 2011 Mentoring organization application was successful.