Difference between revisions of "Developing"

From Gestinux Wiki
Jump to navigation Jump to search
Line 35: Line 35:
 
Gestinux source code is managed using SVN.
 
Gestinux source code is managed using SVN.
  
It is easier if you install some GUI SVN Client program : [[http://rapidsvn.tigris.org/ RapidSvn]] for Linux and [[http://tortoisesvn.net/ TortoiseSVN]] for Windows are working fine.
+
It is easier if you install some GUI SVN Client program : [http://rapidsvn.tigris.org/ RapidSvn] for Linux and [http://tortoisesvn.net/ TortoiseSVN] for Windows are working fine.
  
You must also have a SourceForge account and will need to enter your SourceForge password, or setup a SSL secured connection to SourceForge.
+
You must also have a SourceForge account and will need to enter your SourceForge password, or set up a SSL secured connection to SourceForge.
  
To help you to configure your client program, here are the possible svn command lines :  
+
To configure your client program, the svn command line is :  
  
   svn checkout http://svn.code.sf.net/p/gestinux/code <your_local_source_directory>
+
   svn checkout --username=your_sourceforge_account svn+ssh://your_sourceforge_account@svn.code.sf.net/p/gestinux/code <your_local_source_directory>
  
or
+
Read [https://sourceforge.net/p/forge/documentation/SSH%20Keys/ this documentation] to avoid entering your password every time.
 
 
  svn checkout --username=your_sourceforge_account svn+ssh://your_sourceforge_account@svn.code.sf.net/p/gestinux/code <your_local_source_directory>
 
  
* You should improve or create new sources with new functionnalities in the '''trunk''' branch only, after having obtained a developer profile in the sourceforge project (ask in the developement forum).
+
* You should improve or create new sources with new functionalities in the '''trunk''' branch only, after having obtained a developer profile in the sourceforge project (ask in the developement forum).
  
 
* In the 1.2 branch, only fix important and well identified bugs.
 
* In the 1.2 branch, only fix important and well identified bugs.
Line 54: Line 52:
  
  
You should lock the files before changing anything. For this and to commit, ask in the [[http://gestinux.net/forum/viewforum.php?f=7 forum]] to be granted a "developer" privilege for Gestinux SourceForge project.
+
You should lock the files before changing anything. For this and to commit, ask in the [http://gestinux.net/forum/viewforum.php?f=7 forum] to be granted a "developer" privilege for Gestinux SourceForge project.
  
 
=== Packages which are required ===
 
=== Packages which are required ===

Revision as of 16:39, 14 February 2016

 Français

Developing Gestinux

Gestinux is an open source software and anyone can help to its development.

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

Tests

Gestinux must work in various combinations of environments, databases, and languages. It would be useful to have refrent testers in each of these different possible combinations, particularly during release-candidates publishing.

Translation

You can easily translate gestinux into your mother language, and existing translations can definitely be improved.

Documentation

To help improving documentation, that is to create or edit pages in this wiki, you must before subscribe in the forum.

Then, in this forum, ask for the right to edit this wiki, introducing yourself briefly.

You will have to learn how to use WikiMedia (used by Wikipedia), and follow some editing rules. The account and password are the same as in forum.

For any question or remark, it is necessary to use only the forum and not the wiki.

Programmation

Gestinux 1.1 was developed using Lazarus 1.2.2 and FreePascal 2.6.4.

For Gestinux 1.2 and the trunk version currently in development we are using Lazarus 1.2.6 (and the related FreePascal).

It looks also fine with Lazarus 1.4, but changes in SaveToFile/LoadFromFile procedures will cause bugs with Windows & Files having accentuated characters in names, and we could discover other issues. That's why we must wait some time until Gestinux 1.2 is released stable, before switching to Lazarus 1.4. However, in the trunk, it is possible to workaround this problem using compilation directives.

Obtaining the sources

Gestinux source code is managed using SVN.

It is easier if you install some GUI SVN Client program : RapidSvn for Linux and TortoiseSVN for Windows are working fine.

You must also have a SourceForge account and will need to enter your SourceForge password, or set up a SSL secured connection to SourceForge.

To configure your client program, the svn command line is :

 svn checkout --username=your_sourceforge_account svn+ssh://your_sourceforge_account@svn.code.sf.net/p/gestinux/code <your_local_source_directory>

Read this documentation to avoid entering your password every time.

  • You should improve or create new sources with new functionalities in the trunk branch only, after having obtained a developer profile in the sourceforge project (ask in the developement forum).
  • In the 1.2 branch, only fix important and well identified bugs.
  • Do not change anything in older branches which are available for history only.


You should lock the files before changing anything. For this and to commit, ask in the forum to be granted a "developer" privilege for Gestinux SourceForge project.

Packages which are required

Releases 1.x or trunk 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.

Rebuilding EDI at each step should not be required. But sometimes it helps !

  • Zeos DBO 7.1.3a-stable
    • Download the package and unzip to any directory.
    • Open packages/lazarus/zcomponent.lpk
    • Install (click Use, Install)
    • It is not required to rebuild the EDI at this time
  • Power PDF 0.9.10
    • Download the package and unzip to any directory.
    • Open pack_powerpdf.lpk
    • Install.
    • It is not required to rebuild the EDI at this time
  • LazReport 0.9.9 and LazReportPDFExport 0.8
    • Click Menu Packages > Install/Uninstall packages
    • Select these packages (lazreport and lazreportpdfexport) in the right pane, and move it to the left one.
    • Click the button Save and rebuild EDI.
  • Gestinux_util : a package containing the components Gestinux uses
    • You need either :
      • Gestinux_util 1.2 for Gestinux 1.2 stable version (subdirectory of branch 1.2)
      • Or The last version of the package (currently a subdirectory of the trunk branch)
    • Open gestinux_util.dpk
    • Install.
    • Rebuild EDI

Gestinux development Rules

  • The source must be compilable with : Lazarus 1.2.6 and FPC 2.6.4
  • Do not use features available only in lower or higher versions, or only in Lazarus trunk
  • 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

What to do

Everyone can help ! If you are a beginner, there are some simple things you can do, and this would save time. From 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 development forum.

Database

Supported DBMS

MySql 5, MariaDb 5, and PostgreSQL 9 are supported. MySql because administration is quite simple. PostgreSql because it is completely free software. MariaDb for both reasons.

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 some DBMS. When there is no alternative, compatibility procedures should be made. They are all centralized in one unit (util/gconnection.pas).

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.