Hi all:
I’ve been a few hours looking at the code and the structure of the database IP, in order to see the potential problems that may arise for future releases, and I have seen several things that I wanted to comment. I trust this is not understood as a criticism, although it may seem hard.
Both the code and the database look old and legacy, which is normal as it is a fairly old software.
Reviewing the database, I see no relationship between tables or seems to be normalized, and there arent indexes in the priority areas, which makes it slow in systems with many data or very old. Redoing the database (along with the migration of older installations), despite its difficulty, it should be a priority.
The fact that only now can use MySQL is another factor that must change, being that using ADO or like is very easy to offer support for several different databases, and is a basic feature in any self-host software
As for the code, regardless of the need to update libraries and framework (already known), it gives the impression of being made piece by piece, rather than be thought of as a whole. Each part is a separate module (which is not bad), no interfaces for common points (for example, an interface that defines export to PDF or other format), so create code or evaluation is more difficult. There is almost no documentation in the code (or code does not follow the principles of “Clean Code”, no Unit Test, etc.
And, most important of all, I cannt see there are a workflow defined in the application. Something like Budget -> Tasks -> Delivery note -> Billing -> Accounting -> Taxes / documents, allowing the clear interaction between the various parties.
IMHO, version 2.0 should be a review of the entire project, in structure and logic, and providing a migration script to carry the information from previous versions. Now that what is intended is to add new programming resources, I think the best time to raise this rate, simplify and clarify all the work, and especially one that allows IP be Open Source product level professionals.
Hope this would be useful