Difference between revisions of "SoC2007"

From GnuCash
Jump to: navigation, search
(Move app logic out of UI-handling code: unsure whether this is a good proposal)
m (Exportable reports: typo)
 
(9 intermediate revisions by 6 users not shown)
Line 1: Line 1:
 
= Google Summer of Code 2007 =
 
= Google Summer of Code 2007 =
  
GnuCash is applying as a mentoring organization to the [http://code.google.com/soc/ Google Summer of Code].  The following are the proposed projects from the GnuCash developers.
+
GnuCash was accepted as a mentoring organization to the [http://code.google.com/soc/ 2007 Google Summer of Code] (GSoC).  The following are the proposed projects from the GnuCash developers.  If you are interested in applying to the Google Summer of Code then follow the link to google and apply.
  
== Proposed Projects ==
+
(GnuCash has also applied for [[SoC2010]].)
 +
 
 +
== Accepted Applications 2007 ==
 +
 
 +
These four applications have been [http://code.google.com/soc/gnucash/about.html accepted] for the 2007 GSoC.
  
 
=== QIF Importer Rewrite ===
 
=== QIF Importer Rewrite ===
  
GnuCash has a generic importer mechanism used by OFX and HBCI, but the QIF importer is still on its own, written in Scheme, and uses a completely separate User Interface.  This project would invove rewriting the QIF importer in C and integrating it into the existing Generic Importer User Interface.  One attempt to rewrite the importer in C was attempted, but the student does not need to continue with that re-write and may choose to start over again (or they may choose to continue with the aborted first attempt).
+
GnuCash has a generic importer mechanism used by OFX and HBCI, but the QIF importer is still on its own, written in Scheme, and uses a completely separate User Interface.  This project would involve rewriting the QIF importer in C and integrating it into the existing Generic Importer User Interface.  One attempt to rewrite the importer in C was attempted, but the student does not need to continue with that re-write and may choose to start over again (or they may choose to continue with the aborted first attempt).
  
* '''Student:'''
+
* '''Student:''' Chintan Agarwal
 
* '''Mentor:''' [[User:Warlord|Warlord]]
 
* '''Mentor:''' [[User:Warlord|Warlord]]
 
* '''Backup Mentor:'''
 
* '''Backup Mentor:'''
 
  
 
=== Dogtail UI Test Harness ===
 
=== Dogtail UI Test Harness ===
Line 18: Line 21:
 
GnuCash has an automated test suite which can test all the UI-independent code logic, but it has no tests of the UI itself, to make sure the UI works as it should, or that no regressions happen in the UI when changes are made to the code.  This project would integrate a [http://people.redhat.com/zcerza/dogtail/ Dogtail] test environment into the gnucash automated test suite.  It would entail learning dogtail and writing dogtail tests specific to various gnucash widgets, dialogs, and windows and integrating those tests into the gnucash test suite.
 
GnuCash has an automated test suite which can test all the UI-independent code logic, but it has no tests of the UI itself, to make sure the UI works as it should, or that no regressions happen in the UI when changes are made to the code.  This project would integrate a [http://people.redhat.com/zcerza/dogtail/ Dogtail] test environment into the gnucash automated test suite.  It would entail learning dogtail and writing dogtail tests specific to various gnucash widgets, dialogs, and windows and integrating those tests into the gnucash test suite.
  
* '''Student:'''
+
* '''Student:''' Ahmed Sayed Hassan
* '''Mentor:''' [[User:Warlord|Warlord]]
+
* '''Mentor:''' [[User:Jsled|Jsled]]
* '''Backup Mentor:'''
+
* '''Backup Mentor:''' [[User:Warlord|Warlord]]
 
 
  
 
=== Register Rewrite ===
 
=== Register Rewrite ===
Line 27: Line 29:
 
Finish the re-write of the GnuCash register to use the GtkTreeView.  Make sure all the interfaces that use the Register (Transaction Register, SX Register, Invoice Register) can use the new UI.
 
Finish the re-write of the GnuCash register to use the GtkTreeView.  Make sure all the interfaces that use the Register (Transaction Register, SX Register, Invoice Register) can use the new UI.
  
* '''Student:'''
+
* '''Student:''' Jeff Green
 
* '''Mentor:''' [[User:Chris|Chris]]
 
* '''Mentor:''' [[User:Chris|Chris]]
 
* '''Backup Mentor:'''
 
* '''Backup Mentor:'''
Line 37: Line 39:
 
As a "delimited file" or "CSV file" might be built from all different kinds of data format, this task includes writing a wizard-like GUI that will guide the user through the necessary decisions, including but not limited to: Character encoding of the file, field separator character, semantics of each data field. Ideally, each required decision should have a reasonably guessed suggestion, and additionally there should be a "preview" of what the user's decision will result in.
 
As a "delimited file" or "CSV file" might be built from all different kinds of data format, this task includes writing a wizard-like GUI that will guide the user through the necessary decisions, including but not limited to: Character encoding of the file, field separator character, semantics of each data field. Ideally, each required decision should have a reasonably guessed suggestion, and additionally there should be a "preview" of what the user's decision will result in.
  
* '''Student:'''
+
* '''Student:''' Benjamin Leonard Sperisen
* '''Mentor:''' [[User:Cstim|Cstim]]
+
* '''Mentor:''' [[User:Jsled|Jsled]]
* '''Backup mentor:'''
+
* '''Backup mentor:''' [[User:Cstim|Cstim]]
 +
 
 +
 
 +
== Proposed Projects ==
  
 
=== Bulk/multi-transaction operations ===
 
=== Bulk/multi-transaction operations ===
Line 78: Line 83:
 
This would generally involve identifying places where relatively non-UI specific work is done in response to button-presses or Action activiations, and moving that concept and handling into a Model, which the View controls.
 
This would generally involve identifying places where relatively non-UI specific work is done in response to button-presses or Action activiations, and moving that concept and handling into a Model, which the View controls.
 
:Although this "task" is a nice thing the core developers would like to see completed, I actually think the definition of the task doesn't fit well to the scope of the Summer of Code project. For this task by its very nature we can't describe well the current status, the desired completed status and some potential way of achieving the desired status... I'd rather propose not to submit these to the SoC. --[[User:Cstim|Cstim]] 15:54, 28 February 2007 (EST)
 
:Although this "task" is a nice thing the core developers would like to see completed, I actually think the definition of the task doesn't fit well to the scope of the Summer of Code project. For this task by its very nature we can't describe well the current status, the desired completed status and some potential way of achieving the desired status... I'd rather propose not to submit these to the SoC. --[[User:Cstim|Cstim]] 15:54, 28 February 2007 (EST)
 +
:I agree, and am fine with that.  [[User:Jsled|Jsled]] 11:42, 3 March 2007 (EST)
  
 
* '''Student:'''
 
* '''Student:'''
Line 99: Line 105:
 
* '''Backup mentor:'''
 
* '''Backup mentor:'''
  
== Suggestions from a user ==
+
 
 +
=== Standalone MacOSX Binary Installer ===
 +
 
 +
Right now a user can only install GnuCash on MacOS X using Fink or MacPorts, generally building from source and requiring lots of dependencies.  Many users are crying for a Mac Installer that would let them install GnuCash from a standard binary installer (which would also include any dependencies, as necessary).  This may even involve looking into using the gtk-macos project for a Mac-Native UI instead of an application that depends on X11.
 +
 
 +
* '''Student:'''
 +
* '''Mentor:'''
 +
* '''Backup mentor:'''
 +
 
 +
 
 +
=== Other Bugzilla Enhancement Requests ===
 +
 
 +
There are a lot of [{{BugURL}}/buglist.cgi?query_format=advanced&short_desc_type=substring&short_desc=&product=GnuCash&long_desc_type=substring&long_desc=&status_whiteboard_type=substring&status_whiteboard=&keywords_type=anywords&keywords=&bug_status=UNCONFIRMED&bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&bug_status=NEEDINFO&bug_severity=enhancement&emailassigned_to1=1&emailtype1=substring&email1=&emailreporter2=1&emailtype2=substring&email2=&bugidtype=include&bug_id=&chfieldfrom=&chfieldto=Now&chfieldvalue=&cmdtype=doit&order=Reuse+same+sort+as+last+time&query_based_on=Gnucash+Bugs&field0-0-0=noop&type0-0-0=noop&value0-0-0= enhancements requests] in our [[Bugzilla]] tracking system.  Some of them may be easier to implement than others, but perusing the list may provide students with additional ideas of things they could do.  Note that these requests have NOT been vetted by the developers; they are all user suggestions.  Some are reasonable, some are quacky, some are some lone gunman's wishes.  Students should be aware that choosing from the bugzilla enhancement list will result in stricter guidelines and acceptance criteria (necessarily because these haven't been vetted).
 +
 
 +
== Suggestions From Users ==
  
 
=== Simplify Stock actions ===
 
=== Simplify Stock actions ===
Line 112: Line 132:
 
=== Exportable reports ===
 
=== Exportable reports ===
  
One thing I am missing from Money is the possibility to export all reports to whichever format I want. Like text, cvs, mail, html, printer etc
+
One thing I am missing from Money is the possibility to export all reports to whichever format I want. Like text, csv, mail, html, printer etc
  
 
* '''Student:'''
 
* '''Student:'''
Line 119: Line 139:
 
* '''Suggested by:''' [[User:Bengtt|Bengtt]] 00:21, 22 February 2007 (EST)
 
* '''Suggested by:''' [[User:Bengtt|Bengtt]] 00:21, 22 February 2007 (EST)
 
** There's no strict requirement to do so, but this is probably better sequenced after more reports overhaul is done. :( [[User:Jsled|Jsled]] 19:26, 27 February 2007 (EST)
 
** There's no strict requirement to do so, but this is probably better sequenced after more reports overhaul is done. :( [[User:Jsled|Jsled]] 19:26, 27 February 2007 (EST)
 +
 +
=== "Effective Date" for transactions ===
 +
It would be useful to assign an "effective date" to a transaction, which is separate from the actual transaction date.  This would be very useful for budgeting purposes.  For example, the date for a transaction in the ledger for my bank account is the date that my bank recorded the transaction, so that my GnuCash account reconciles exactly with my printed bank statement.  However, this date often occurs in a different month from the actual expenditure, making it difficult to track income and expenses in a specific accounting period.  Just a thought...
 +
* '''Suggested by:''' [[User:Oanjao|Oanjao]] 14:50, 24 March 2007 (EDT)

Latest revision as of 12:54, 23 November 2020

Google Summer of Code 2007

GnuCash was accepted as a mentoring organization to the 2007 Google Summer of Code (GSoC). The following are the proposed projects from the GnuCash developers. If you are interested in applying to the Google Summer of Code then follow the link to google and apply.

(GnuCash has also applied for SoC2010.)

Accepted Applications 2007

These four applications have been accepted for the 2007 GSoC.

QIF Importer Rewrite

GnuCash has a generic importer mechanism used by OFX and HBCI, but the QIF importer is still on its own, written in Scheme, and uses a completely separate User Interface. This project would involve rewriting the QIF importer in C and integrating it into the existing Generic Importer User Interface. One attempt to rewrite the importer in C was attempted, but the student does not need to continue with that re-write and may choose to start over again (or they may choose to continue with the aborted first attempt).

  • Student: Chintan Agarwal
  • Mentor: Warlord
  • Backup Mentor:

Dogtail UI Test Harness

GnuCash has an automated test suite which can test all the UI-independent code logic, but it has no tests of the UI itself, to make sure the UI works as it should, or that no regressions happen in the UI when changes are made to the code. This project would integrate a Dogtail test environment into the gnucash automated test suite. It would entail learning dogtail and writing dogtail tests specific to various gnucash widgets, dialogs, and windows and integrating those tests into the gnucash test suite.

  • Student: Ahmed Sayed Hassan
  • Mentor: Jsled
  • Backup Mentor: Warlord

Register Rewrite

Finish the re-write of the GnuCash register to use the GtkTreeView. Make sure all the interfaces that use the Register (Transaction Register, SX Register, Invoice Register) can use the new UI.

  • Student: Jeff Green
  • Mentor: Chris
  • Backup Mentor:

Delimited file importer

A CSV importer is the more direct way to say this, but general delimited file support would be best; think of the "Import text file" dialog in Gnumeric, and in fact try to leverage that same code, if possible. Supporting the core transaction profile is a good start, but "extended" import options (Invoices, time-spent, &c.) would be nice too.

As a "delimited file" or "CSV file" might be built from all different kinds of data format, this task includes writing a wizard-like GUI that will guide the user through the necessary decisions, including but not limited to: Character encoding of the file, field separator character, semantics of each data field. Ideally, each required decision should have a reasonably guessed suggestion, and additionally there should be a "preview" of what the user's decision will result in.

  • Student: Benjamin Leonard Sperisen
  • Mentor: Jsled
  • Backup mentor: Cstim


Proposed Projects

Bulk/multi-transaction operations

The ability to change the name, value or split(s) of multiple transactions at once. This can get tricky, but there are probably good use cases in the archives.

  • Student:
  • Mentor:
  • Backup mentor:

Scheduled Invoices

Extending the Scheduled Transaction mechanism to support other scheduled concepts, like Invoices.

  • Student:
  • Mentor: jsled
  • Backup mentor:

Basic Inventory support

As title; the basic tracking of items, counts of items and probably lots of items.

  • Student:
  • Mentor:
  • Backup mentor:

Gnome-vfs support

Use gnome-vfs for filesystem operations, gaining the features that it provides. We'd need to think about how this fits in with any DB-backend stuff.

  • Student:
  • Mentor:
  • Backup mentor:

Move app logic out of UI-handling code

This would generally involve identifying places where relatively non-UI specific work is done in response to button-presses or Action activiations, and moving that concept and handling into a Model, which the View controls.

Although this "task" is a nice thing the core developers would like to see completed, I actually think the definition of the task doesn't fit well to the scope of the Summer of Code project. For this task by its very nature we can't describe well the current status, the desired completed status and some potential way of achieving the desired status... I'd rather propose not to submit these to the SoC. --Cstim 15:54, 28 February 2007 (EST)
I agree, and am fine with that. Jsled 11:42, 3 March 2007 (EST)
  • Student:
  • Mentor:
  • Backup mentor:

Enhanced Expression Parser

Basically, change the current recursive descent parser into a grammar-based parser. Better: good error handling. Better, still: a UI-based expression editor. The goal here is to support existing and long-desired uses-cases around formulæ generated in the mortgage/loan druid. For example, we'd like to support something like AccountBalanceAsOf(Account, Date), but the internal storage method isn't the same as the user interface.

  • Student:
  • Mentor: jsled
  • Backup mentor:

Migrate Reports

(Assuming expected availability of a new reporting framework...) migrate reports from HTML-emitting Scheme to ${scripting_language}-generator with templated HTML. There are multiple part of that undefined, so helping define them might be the first step.

  • Student:
  • Mentor: jsled
  • Backup mentor:


Standalone MacOSX Binary Installer

Right now a user can only install GnuCash on MacOS X using Fink or MacPorts, generally building from source and requiring lots of dependencies. Many users are crying for a Mac Installer that would let them install GnuCash from a standard binary installer (which would also include any dependencies, as necessary). This may even involve looking into using the gtk-macos project for a Mac-Native UI instead of an application that depends on X11.

  • Student:
  • Mentor:
  • Backup mentor:


Other Bugzilla Enhancement Requests

There are a lot of enhancements requests in our Bugzilla tracking system. Some of them may be easier to implement than others, but perusing the list may provide students with additional ideas of things they could do. Note that these requests have NOT been vetted by the developers; they are all user suggestions. Some are reasonable, some are quacky, some are some lone gunman's wishes. Students should be aware that choosing from the bugzilla enhancement list will result in stricter guidelines and acceptance criteria (necessarily because these haven't been vetted).

Suggestions From Users

Simplify Stock actions

Currently it is not to easy to perform common action on the stock accounts. Things like Buying / Selling / Divident / Splitting etc all take quite a bit of manual entering of data. Would be nice if there were a small GUI for it, like in Quicken/Money. A GUI where you only enter the needed information once and let GnuCash sort out everything else. Need to decide how the account structure should be, in regards to Cash, and Commodity. This so we can trace everything nicely.

  • Student:
  • Mentor:
  • Backup Mentor:
  • Suggested by: Bengtt 00:21, 22 February 2007 (EST)

Exportable reports

One thing I am missing from Money is the possibility to export all reports to whichever format I want. Like text, csv, mail, html, printer etc

  • Student:
  • Mentor:
  • Backup Mentor:
  • Suggested by: Bengtt 00:21, 22 February 2007 (EST)
    • There's no strict requirement to do so, but this is probably better sequenced after more reports overhaul is done. :( Jsled 19:26, 27 February 2007 (EST)

"Effective Date" for transactions

It would be useful to assign an "effective date" to a transaction, which is separate from the actual transaction date. This would be very useful for budgeting purposes. For example, the date for a transaction in the ledger for my bank account is the date that my bank recorded the transaction, so that my GnuCash account reconciles exactly with my printed bank statement. However, this date often occurs in a different month from the actual expenditure, making it difficult to track income and expenses in a specific accounting period. Just a thought...

  • Suggested by: Oanjao 14:50, 24 March 2007 (EDT)