I’m pleased to announce today that Bugdar 2.0’s first development phase has been completed. During this phase, all of the Bugdar code was ported to the ISSO3 framework, allowing it take full advantage of property access control, static functions, and the latest ISSO3 conventions.
The point of this phase was to upgrade the ISSO method calls to make refactoring code a simpler process. Had this first phase not upgraded ISSO-based code, the refactoring phase (phase 4) would have been twice as long and twice as much effort because the underlying ISSO code would be out-of-date.
Next in Bugdar’s development is the admin control panel rewrite. Before this can happen, however, a new ISSO3 module must be developed to make creating the admin interface easier. This will include removing the BSPrinter classes (which currently use PHP functions to generate HTML) and replacing it with well-designed CSS style sheets that will be used in templates in the Admin CP.
Separation of the view-controller logic in the Admin CP will make the code more agile and will allow for a more intuitive interface because the HTML will not be generated via on-the-fly code, but rather by designed HTML.
If you’ve taken a look at the bug tracker recently, you’ll see quite a few bugs back-logged. I’m not ignoring them (I still check out each individual report when it’s posted or updated), and if the bug is critical I’ll, of course, fix it. But at the moment I’m focusing completely on finishing the rewrite of ISSO. My time is extraordinarily limited so things are taking a lot longer than expected, but I’m really excited to start work on Bugdar 2.0. Before I can get there, though, ISSO needs to be finished. Here’s a little update on what’s left to do for ISSO:
The API module is what I’m currently focusing on. The error system is getting an overhaul to use PHP5’s exception system instead of trigger_error(). Furthermore, the validation system is being rewritten to work with the new error system.
Both MySQL and MySQLi modules are done and have complete unit tests. I still need to update the PostgreSQL module, however, because I don’t have Postgres on my laptop yet.
The graphing module, which has yet to be used in an application, is being removed. Instead, I have started a new project called WebFreeChart to take the place of it.
I have yet to unit test and update the pagination module. This will pretty much stay the same, though instead of using templates (whose names are hard-coded), I’ll switch to hooks and callbacks.
The printer classes are used to generate the green-styled interface for admin control panels and the like. I have already rewritten the classes but I am unhappy with them because they’re so verbose to use. I’m now thinking of ditching it for XML-based (maybe even XSLT) generators. There’d be various XML tags for the existing classes and methods to generate form elements with the proper markup. This would separate the presentation from the logic, while still not having to worry about styling and direct HTML.
I hope to finish these things off soon to get working on Bugdar 2.0, but because my time is so limited, I really can’t give an ETA. I’ll try to keep posting updates so you’re aware of what’s going on.
A few posts ago, I mentioned ISSO3. Well, work has been started on the trunk. ISSO3 will require PHP 5 or higher. I know a lot of hosts don’t yet meet this requirement, which is why ISSO 3 won’t be used publicly for quite some time. But that is a Good Thing(tm) because it allows plenty of time to give ISSO the overhaul it needs.
What’s different so far?
There’s now no more single kernel that you instantiate. Instead, you use the BSLoader class (now all classes are prefixed with “BS” for Blue Static) to create a new BSRegister. BSLoader is responsible for loading modules and creating new registers. BSRegister is responsible for setting objects for a given key, like this:
$register = BSLoader::NewRegister();
Then, you can get the object later:
$register->get('db')->query("SELECT * FROM foo");
BSLoader also has the ability to set a “main register” which is the register that all modules are linked to by default (if they need components from other modules). This allows you to do this:
… and then in some function, you don’t even worry about scope:
Ã‚Â Ã‚Â $result = BSLoader::GetRegister()->get('db')->query("SELECT * FROM moo");
So that’s what’s happening on the ISSO3 front. And because ISSO is no longer installed separately, it will stop getting standard versions (3.0.0) with the release of ISSO3 and instead will be given build/release numbers. ISSO3 will probably be somewhere between #11 and #13.
I’ll post more about ISSO3 development as it happens.
As a side note, Bugdar Beta 1 has been very-positively received with only minimal bugs. If all goes well, we could see another beta sometime next week. I do think we’re on track for a early-September final release.
Although it’s four days late, I finally released Edoc 2 and ISSO 2. It’s been an exhausting week by no stretch of the imagination. I have not had the time to release before now, but I finally got the website finished up and decided to deploy tonight.
For your own edification, this is how I prepare a release:
1. Test installing from fresh in a new database
2. Test upgrading from previous versions
3. On the development version of the isiwww main site, make sure the download package works (set up the versions in the download manager and make it work just like it would live)
4. Upload new versions to www.iris-studios.com and dog-food to make sure everything is okay
5. Insert new version records into the download manager and queue up the sources for deployment (this is what drives the download forms; I’ll explain how this works later)
6. svn update the isiwww to deploy the new site
7. Check download packages to make sure they work (rollback to previous site and start at step one again if they don’t work)
8. Tag all the necessary repositories for the release
So it’s out. Enjoy :). Bugdar 1.1 will now start development.
I have just finished the style used by Edoc’s administration section. This will also be used in Bugdar 1.1 when it’s converted to use ISSO2:
View the New Style
However, the new style is only truly great-looking in Firefox and WebKit (Safari) browsers. It will look decent in Opera 9, and it will look not-so-decent in Internet Explorer 6. The major thing that breaks is the tabs; but they don’t even break function-wise, just display-wise.
Now the only thing left to do before releasing Edoc2 is implementing the new navigation system.