[GSoC Proposal] Python scripting and reporting project

Christian Stimming stimming at tuhh.de
Wed Apr 6 14:39:35 EDT 2011


Dear Rohan,

thanks for your detailed proposal about python scripting code. In general, 
your research is well-thought and goes into plenty of detail about how to 
migrate scheme code to python code. However, my statement from my previous 
email http://lists.gnucash.org/pipermail/gnucash-devel/2011-April/031642.html 
is still valid: Your goal is still rather vague in terms of user-visible new 
features, at least in the first half of your plan. As I said before, we 
recommend not to plan to migrate "all" of the current Scheme reporting code 
into another language, Python in this case. Not even "all of business" 
reports, because even that will easily get you lost in the whole collection of 
various reports there are.

Instead, you should still modify and rearrange your application so that your 
python scripting code will enable new user-visible features *early* in your 
project. For example, the "import/export customer data" could be one such 
user-visible new feature. The "improved budgeting reports" could just as well 
be such an early user-visible new feature. My point is that you should first 
try to implement something new and user-visible very early in your project, 
and only as a next step work on migrating existing features from language x to 
language y. This will immediately lead to a better user-focused design of the 
framework parts that are still missing, and ultimately to a better deliverable 
and application.

Regards,

Christian


Am Mittwoch, 6. April 2011 schrieb Rohan Kulkarni:
> Hello,
> 
> I have drafted a proposal for the above mentioned project.
> 
> I have come up with this proposal based on what I could research and
> infer. There may be shortcomings in the content, its my humble request
> to comment on this for further improvement.
> 
> Initially, I have listed down the goals of the project which involve
> steps needed to integrate python scripting and some functionalities that
> I want to add to the current prototype. Below that, I have described in
> detail about each point, what exactly I aim to achieve.
> 
> Goals:
> 
> 1] Develop python scripts in gnucash to provide a python framework.
>     To achieve the above goal, my aim is to focus on and enhance the
> current reporting system
> 2] Export the report-system, which defines modules that provide
> functionalities for report
>      generation, to python
> 3] Take up the business reports section, enable all the reports in this
> section to be generated by
>      python scripts
> 4] Enable the customer information in this section to be imported/exported
> 5] Take up the standard reports section, export them to python
> 6] Enhance the budget generating system, add more graphical reports
> 7] Develop more ideas to utilise the powerful python scripting to
> enhance the reporting system.
> 
> Detailed description:
> 
> -:- The aim of this project is to develop a python framework for gnucash
> which currently uses uncommon scheme scripting.
>       A python scripting framework will enable a large set of
> developers, well versed with python than with scheme to enhance or to
> alter the system as per their requirements. Also migrating to python
> will provide a large set of capable functionalities for gnucash.
>       Major part of the scripting work is in the reporting section. My
> goal is to provide a python framework by exporting major parts of it to
> python. This framework will be useful for development of the whole
> report generating system to gradually integrate with python.
> 
> -:- The initial goal is migrate the report-system to python. This will
> define modules that will provide interface for all the report generation
> scripts.
>       This will involve writing python scripts for report tables,
> bar-graphs, pie-charts, style-sheets and other related formats. The vast
> python module library will enable the reporting to include wide range of
> features. These scripts will provide functions that will be used by the
> report generating scripts to display report data as desired.
>       Once this goal is achieved a python framework for writing report
> scripts in will be ready. All the reporting scripts can use the
> functionalities provided by this framework to create data and graphical
> reports.
> 
>    * Once this report-system is ported to python, test it thoroughly for
> proper loading and working of modules.
> 
> -:- The next goal will be to export the business scripts. It will
> involve writing python scripts, using the python defined functions in
> report-system to generate reports. It will enable business reports,
> customer, tax-invoices and related reports to work with the python
> modules. Here a sub goal is to enable the feature of importing/exporting
> customer information. I.e. to provide a functionality to import/export
> customer information in csv format. It will enable users to migrate
> their customer data from other sources(thunderbird/google contacts etc.)
> to gnucash and vice-versa.
> 
>    * Test this section for proper functioning.
> 
> -:- The next goal will be to take up the standard scripts. Though the
> aim is to migrate all of it to python, initial focus will be on the
> budget part. Here a sub goal is to enhance the budget reporting. Aim is
> to add more graphical features to display budget reports. The current
> budget summary displays simple data, budget values and actual values,
> here the idea is to add horizontal bar-graphs to display them. I.e.
> display bar-graphs of budgets of individual accounts along with the
> bar-graphs of actual values. This will graphically give the user an idea
> of where and by how much margin the budget and actual values vary. After
> this, depending on the amount of time available, rest of the reports
> will be migrated.
> 
>    * Test this section for proper functioning.
> 
> -:- During the development of python scripting, always, aim will be to
> make use of the vast python library for enhancing gnucash
> functionalities with the python framework.
> 
> Deliverables:
> 
> 1] A proper tested and working report-system which will facilitate
> python framework for report generation.
> 2] A proper tested and working business report generation system.
> 3] A functionality of importing/exporting customer data in the business
> report system.
> 4] A proper tested and working standard report generation system, which
> will have an enhanced budget reporting.
> 
> Timeline:
> 
> -:- The initial phase will be to get familiar with the report-system.
> Understand the module definition/initialisation for the report
> infrastructure. Discuss about how to get started with development of code.
> 
> -:- With the understanding of the report-system, develop the required
> modules in python to provide the framework. This will involve using the
> python plotting modules for displaying graphs and charts. Completing
> this stage will be a major part of the project.
> 
> -:- The next goal of business report scripting will involve the defined
> modules in the report-system to generate reports.
> 
> -:- The sub part of importing/exporting customer data will involve the
> python libraries for cvs formatting. This will complete almost 2/3rd of
> the project.
> 
> -:- In the next part, first thing will be enhancing the budget reporting
> with the described bar-graphs support. Later, the migrating of rest or
> the scripts will start. Depending on available time the individual
> reports will be migrated.
> 
> -:- The development part finishes at this point. The testing and
> documenting the scripts will go hand in hand with development. So extra
> time will not be consumed at this point for documenting the code. Just a
> final brushing up of the documentation and final testing of codes will
> be done.
> 
> Current state:
> 
> I have built and tested the gnucash code latest revision from the SVN by
> enabling python. I have run the example python scripts present.
> Currently getting comfortable with the python console and the reporting
> scheme files. Also going through the various python modules
> availablethat are required for developing the necessary scripts. Also
> thinking of new ideas that can be introduced as features using the
> python scripts. I am very exited and interested to get involved in this
> project and to contribute to this open source community.
> 
> Thank you for reading.
> 
> Regards,
> Rohan Kulkarni
> IM, GTalk: kulkarni.rohan.p at gmail.com
> IRC Nick: ahknor/rohan_k
> _______________________________________________
> gnucash-devel mailing list
> gnucash-devel at gnucash.org
> https://lists.gnucash.org/mailman/listinfo/gnucash-devel



More information about the gnucash-devel mailing list