Developing

From Gestinux Wiki
Jump to navigation Jump to search

Developing Gestinux

You are welcome to help make Gestinux better.

Some guidelines for project maintenance follow, which can be discussed in the development forum.

Gestinux is being developed using Lazarus 1.0.6 and FreePascal 2.6.0.

Obtaining the sources

Gestinux source code is managed using subversion. You must use a SVN Client and connect to it.

With svn only, the command line is : svn checkout http://svn.code.sf.net/p/gestinux/code

Use your username and password on sourceforge.net

  • You can change sources in the trunk branch only.
  • The 1.0 branch should be released stable as soon as possible. You can only add or edit languages files in this branch.
  • The 0.5 branch is for history only, you can't work on it.

Packages which are required

Release 1.0 should compile with the following packages. You can use more recent versions of the packages, but at your own risk !

Let us know if using a newer version of any of these packages works sucessfully.

  • Zeos DBO 7.0.3-stable
    • Download the package and unzip to any directory.
    • Open packages/lazarus/zcomponent.lpk and click Install
  • Power PDF 0.9.10
    • Download the package and unzip to any directory.
    • Open pack_powerpdf.lpk
    • Install.
  • LazReport 0.9.8
    • Open components/lazreport/source/lazreport.lpk in the Lazarus installation folder (/usr/share/lazarus/<version> on Linux)
    • In Options, IDE integration, select "automatically rebuild as needed"
    • Install.
  • LazReportPDFExport 0.7
    • Open components/lazreport/source/addons/pdfexport/lazreportpdfexport.lpk in Lazarus installed files.
    • In Options, IDE integration, select "automatically rebuild as needed"
    • Install
  • Gestinux_util 1.2 : a package containing the components Gestinux uses
    • Open util/gestinux_util.dpk in the gestinux sources (svn)
    • Install.

Gestinux development Rules

  • The source must be compilable with : Lazarus 1.0.6 and FPC 2.6.0
  • Do not use features available only in Lazarus 1.1 or other SVN.
  • Only use English for identifiers and comments.
  • Use the Code Formatter (CTRL+D) to indent modified sources, with default options.
  • Read the gestinux_util documentation, and do not use a Txxxx component when there is a TGxxxx component in this package

Ask to be granted a developer profile in SourceForge. Don't forget to lock the files before any change.

What to do

Everyone can help ! If you are a beginner, there are some simple things you can do, and this would save time. For gurus, we do need better components.

You can look at the Tracker to see what is the most useful improvement you might make.

Before starting anything, you are advised to discuss your proposal a bit in the forum.

Translation system

Refer to the Internationalisation programmation page to learn how you can use it and offer translations for Gestinux.

Database

Supported DBMS

MySql 5 and PostgreSQL are supported. My Sql because it is common and administration is quite simple. PostgreSql because it is completely free software. In the future, we may try other DBMS, but that would require a bigger development team.

In the main sources, avoid SQL statements specific to MySQL or Postgres. When there is no alternative, compatibility procedures should be made. They are all centralized in one unit (unitdatamodule.pas for now).

Table and fields definitions and properties

In Gestinux_util there is a TGTable component used to store all the metadata of tables used in Gestinux. With this component, there is no need to store table definitions elsewhere, and no SQL script is required to initialize or upgrade the database.

The database and table structures are created by the main executable, as specified in unitdatamodule.pas, in TGTable properties. See the component TGTable for more details.