Roadmap Linux
From TurboCASH Wiki
Ok I started this on 8 December 2005 , its a bit sparse at the moment, but it will grow rapidly. Feel free to make your contributions. We are focusing on the spec and product plan here. If you want to wax off on your own thread, please use the Forum
Contents |
State of the Union
Generations
There have been three generations of TurboCASH over the last 20 years. This current one was begun in 1998. It must now be assumed to be in the mature cycle of development. It still has much to offer us in the Windows environment, but we have to begin a ground-up approach to a new system.
Roadmap TurboCASH 4 is offering us the chance to get versions of TurboCASH on other platforms
The Producer is King
More than in most projects, in an Open Source project, those that produce will determine where we go. What we want to do is develop an architecture that is wide open enough to include as many different programmers as possible. The environments that we use and the databases we use will be determined by those that contribute. You can't chirp on the side about you want to use this or that library and expect us to change direction.
Wine
TurboCASH on Wine
It is going to take us a long time to get a Linux version or a new version of TurboCASH out. We have a robust version of software now. Wine offers an enticing option to "Port Immediately" we should consider this as an interim measure. I would be interested to see if you Linux guys can get it going.
We have had a contribution from Joachim von Thadden where he has managed to get TurboCASH to Run in a simple Wine deployment. You can get more info at Wine Tools
To use it:
- I tested with wine-0.9.1
- note that you have to have at least a copy of win98 spare for this
- installation as this is required by DCOM98 and IE6
- download and install WineTools
- be a normal user and type "cd ~"
- go through the "Base setup"
- go through the installation of "Windows System Software"
- go through the installation of "MS TrueType Core fonts"
- go to the "Install tested SW" menu
- select "Database"-"DBCrab" and install
- select "Database"-"Borland DB Engine" and install
- quit WineTools
- download "TurboCASHFull374.exe"
- on the command line type "wine TurboCASHFull374.exe"
- follow the installation
- type "wineboot"
- run TurboCASH by the command line "cd ~/.wine/c/TCash3; wine Tcash3.exe"
- have fun while testing - note that it can alway crash
Service Oriented Architecture
SOA
|
|
The above shows a general way for us us to move forward.
|
|
We have a large commitment to Windows users, so we should consider interim measures. In particular we have an enormous database of data in the Windows Paradox environment. We should be able to move this data back and forth to the new system for testing and developement purposes. This is the only way to get the wide acceptability for the product.
I therefore propose that we have an interim measure whereby TurboCASH can interact with the new system.
We can still spend much more time discussing the business objects that will be enteresd into the system.
Databases
The starting point is to get a working database. We are fortunate in that we already have the TurboCASH database and by and large, with the exception that it is a Paradox database, it seems to work. So our first step must be to create a working database structure that lets the majority of programmers into the development process.
I have had many discussions and it seems that the most widely accepted databases amongst developers are Firebird and MySQL. We will begin with both of these, but may have to make a choice of one or the other.
Programming Environments
Two programming environments have come forward so far, Lazarus and PHP. I have had some enquiries from Java and Python Developers, but they do not look as serious.
Lazarus
Lazarus programmers will be able to use the Firebird and MySQL databases as soon as they are available. Feel free to fit your comments in here.
Roadmap for porting to Lazarus
1 - Add before the interface keyword on each unit the following code:
{$ifdef fpc}
{$mode delphi}
{$endif}
Notes: This is a very big improvement into making the software compile with Free Pascal, and it will keep compatible with Delphi.
Status: Not Implemented
2 - Convert all .dfm files to .lfm files
Notes: This can take some time. With some ifdef's the code can be compatible with both Lazarus and Delphi.
.lfm files are almost .dfm files. If you just rename the file and take out some properties not available on Lazarus then it will work! The difference is the way it's used by the library (VCL or LCL). On Delphi it's on the implementation and is added like this:
implementation
{$R *.dfm}
On Lazarus it's on the initialization section and requires that LResources is added to the uses clause. So in the end it will get like this:
unit myunit;
{$ifdef fpc}
{$mode delphi}
{$endif}
interface
uses
{$ifdef fpc}
// Free Pascal only units
LCLIntf, LResources,
{$else}
// Delphi only or Windows only units
Windows, Messages,
{$endif}
// Units available for both
Forms, SysUtils, Classes, StdCtrls, etc;
.......
implementation
{ifndef fpc}
{$R *.dfm}
{$endif}
.....
initialization
{$ifdef fpc}
{$I myform.lrs}
{$endif}
end.
Notice that the file that is acctually added is a .lrs file. Just by loading the form on Lazarus IDE and saving it, the .lrs file is created.
Status: Not Implemented
3 - Make a list of all third-party components utilized by TurboCASH that are not available for Lazarus and also look for possible substitutes.
Notes: This is the hardest part, as all third-party components utilized will have to be converted or new ones will have to be written.
Status: Not Implemented
4 - Connect from a Lazarus software to the new TurboCASH databases
Notes:
Status: Not Implemented
5 - Identify all direct Windows API utilized by the software
Notes: The recommended thing is to try to substitute all direct Windows API calls with VCL calls. If there is no easy VCL substiture, the LCLIntf unit on Lazarus implements most common Windows API functions on Gtk, so simply adding LCLIntf to the uses clause (ifdefed to continue compatible with Delphi) can make those calls work. Those that cannot be substituted by VCL or LCLIntf will need to be $IFDEF'ed and implemented in Gtk by hand.
Status: Not Implemented
PHP
PHP programmers will be able to use the Firebird and MySQL databases as soon as they are available. Feel free to fit your comments in here.
Roadmap
Define Database
Pieter Valentijn has begun a Delphi project to convert the Paradox Database to Firebird and to pump the data up and down to the Firebird Database. I will ask him to publish this as soon as possible.
Ettiene Du Plessis has begun a MySQL project that can pump data up to a MySQL Database. I will ask him to publish this as soon as possible.
This should be the first step. We do not want to turn our backs on the vast data sets out there that have made TurboCASH the stable environement it is today. We must be able to bring these data sets in and use them. Migrating users is one of the huge tasks of accounting systems.
Razor
We already have an SOA architecture going in the Razor Accounting Servant between Paradox Databases. More This project is managed by Sylvain Nzala. Once we have completed the steps above we can look at implementing Razor in the new databases. We should in the interim look at how we can improve the functionality of Razor.
At this point we can decide to write the SOA objects and PHP OR Lazarus code, or any other code that the developers may choose.

