SoC2007
Contents
- 1 Google Summer of Code 2007
- 1.1 Proposed Projects
- 1.1.1 QIF Importer Rewrite
- 1.1.2 Dogtail UI Test Harness
- 1.1.3 Register Rewrite
- 1.1.4 Delimited file importer
- 1.1.5 Bulk/multi-transaction operations
- 1.1.6 Scheduled Invoices
- 1.1.7 Basic Inventory support
- 1.1.8 Gnome-vfs support
- 1.1.9 Move app logic out of UI-handling code
- 1.1.10 Enhanced Expression Parser
- 1.1.11 Migrate Reports
- 1.2 Suggestions from a user
- 1.1 Proposed Projects
Google Summer of Code 2007
GnuCash is applying as a mentoring organization to the Google Summer of Code. The following are the proposed projects from the GnuCash developers.
Proposed Projects
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).
- Student:
- 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:
- Mentor: Warlord
- Backup Mentor:
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:
- Mentor:
- 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:
- Mentor: Cstim
- Backup mentor:
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:
- jsled willing
- 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.
- 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:
Suggestions from a user
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, cvs, mail, html, printer etc