Archive for the 'Pbooks Development' Category Page 2 of 14



Development Lull for Good Reasons!

If you’ve been watching the SVN commits - they haven’t been too frequent or substantial lately. Apart from my wife and I having our first child, its also tax season here in the states. I’ve been using PBooks to manage my small business finances and its time to reconcile all the accounts for 2007. Its still a lot of manual work, but I’m happy to say everything is working really well!

With that said, I’m feeling like a stable release within 2008 might be pushing it. There is still a lot of work to be done before PBooks is ready for prime time. For the adventurous - feel free to give PBooks a try. :-)

Changing to a Monolithic Distribution Model

To ease installation woes, I’m moving to a monolithic distribution model. This way there will only be one SVN checkout, or one folder required to install PBooks.

Pre-packaged distributions for PEAR, Debian, and the like will not be monolithic, however, but we’re not ready for that yet anyway.

PS - Monolithic, in this sense, simply means “all in one giant package”. I only learned the meaning of this term in this context recently as it related to a monolithic kernel. In the case of software applications, libraries are handy because many applications can share their common elements. However, this can make installation a bear. This is just one more example of how convenience wins over efficiency! :-)

Approaching 0.08 Release




While there continue to be some issues with Selenium tests (failures when there shouldn’t be), PBooks 0.08 is almost ready for release.

Installation has been a significant hurdle for many people so in ticket 138 I have specified the need to test out a complete install prior to release. An installation into a webserver docroot will be tested, as even though it is not recommended, many users on shared hosts find it easier to do so.

Major SQLite Progress

I’m very pleased to report that there has been some seriously major progress towards running PBooks with SQlite. The major hurdle was the way that I had structured SQL statements with “LEFT JOIN”. Once I found a better way to draft them, specifically using “INNER JOIN”, the incompatibility went away.

Besides the JOIN issue, I also had to remove the use of SUBSTRING and DATE MySQL functions. Unfortunately those are not the same in SQlite. Instead I’ll write an action to use PHP’s substring, as I’m sure that will still be faster than XSL’s substring capabilities.

Also note that there are two new SQL files - one for the structure and one for some sample data. Using SQLite with PBooks is still very far from being complete, but its a lot closer than it was a few hours ago! :-)

For more information, see PBooks and SQLite

PBooks Progress




PBooks has come a long way in the past 6 months. The biggest developments have been in the business processes area, where we’ve included invoices, deposits, and transfer capabilities. More recently, I’ve personally been working on the overall code quality of PBooks, trying to make sure that the naming conventions are consistent (so that if one file is named invoice_view.xsl, there is no view_deposit.xsl file), good code documentation, and a solid data model.

Installation issues!

The community has spoken, and I’m listening. PBooks is too hard to install, no doubt about it. Although I haven’t done any explicit work on fixing this yet, I have been doing a lot of thinking about it. My concern was that if beginner developers started using PBooks, they would run into more serious problems with the unstable nature of PBooks, at least more serious than being unable to uninstall the software, and supporting the various installations would become a great burden. Inasmuch, it was “OK” in my mind that PBooks was difficult to install. Besides, there is still plenty of work to do on the application besides the installation process. What good is a crappy program even if it is easy to install?

Anyway, I’ve come to the conclusion that there are two main issues with the installation: the database and the folder layout. To remedy these issues, I’m planning to create a new database installation script and allow PBooks to be dropped into a web accessible directory and run. While that’s not the way I would do install a web application these days, that’s how a lot of web applications, like Wordpress, are installed. Along those lines, while I like everything to be modular, not all users have the liberty to install system-wide libraries (like from PEAR, for instance), so having a monolithic (everything incuded) distribution is needed. I’d like to keep everything modular on the development side and use a script to package it all up for distribution.

Oh yes, one more part to installation - an installation checker to inspect the server’s capabilities is needed to make sure that PBooks can actually run if it is installed.

The forums have been picking up in activity and I’m hoping that I’m able to help PHP-CODER to get PBooks installed so that there can be more dialogue about the software.

Big Changes

One major change occurred recently with PBooks - it now relies on nexista version 0.2.0 rather than the nexista 0.1.x stable branch. The good news is that version 0.2.0 is more compatible with PEAR coding standards, and will be easily installable via PEAR. For shared hosting folks, I’ll include it with the PBooks download.

I have good feelings about the new version of nexista, and as I’ve been working to improve the quality of PBooks code, I’ve been working on plugins. While this feature doesn’t change how PBooks will work out of the box, it will allow developers to alter the behaviour of PBooks drastically while maintaining compatibility with the mainline codebase. At first I was trying to use XSL for plugins, and while that works, I’m now thinking that plugins into Nexista are the better route. The final result will likely be a combination of both, depending on how complex the plugin is.

The Future

The future looks good for PBooks. Development on the installation process and plugin API will occur in tandem, and after that I’m going to work on a stable release. I don’t think the stable release will include all that I’d hoped and I’m sure will lack some functionality that people will require, but a stable release is needed to frame the next major steps for the future.

Thanks to everyone who provided feedback on our demo and the code. Please keep it coming! :-)

Invoices and Deposits

I’m working more on invoices and deposits, focusing on the ability to connect the two. When making a deposit, it would be very useful to attribute a payment to an invoice. Similarly, since business processes are fairly unique to each business and business type, I’ve been working on account transfers, and the creation of a check object if the transfer method is a check, as opposed to an electronic transfer.

I’m quite pleased with how the business processes / objects are coming along - they need a lot more refinement, but I’m comfortable enough with the progress made so far that I’m willing to do the refinement. (See ticket #124 for more information. )

An obvious refinement will be the offloading of complex Xpath queries to SQL JOINs. This will improve the application performance, but will also make the SQL less flexible. As I said, now that I’m comforable with the business objects, that shouldn’t be problem.