|
From: Joe E. <jen...@fl...> - 2006-11-18 20:18:32
|
When making incompatible changes to the Tile public API, I've been trying to follow a policy where the old and new syntaxes are both supported for at least one release cycle, then removing the old syntax at a later time. This is to avoid the need for "flag day" conversions, where users have to upgrade all the programs that use Tile as soon as they upgrade Tile itself. As it stands right now in Tk CVS HEAD, switching from Tk<=8.5a5+tile to Tk>=8.5a6 will require a flag day conversion. So the top priority for Tile 0.8.0 is to act as a transitional release: it should support the Tile 0.7.X interface as well as the ttk::* interface provided by the core. That way users who wish to do so can upgrade in two easier stages instead of one hard one. To make this work, the core API will need a couple changes as well. First: the treeview widget needs to come back. People are actually using this widget, and the only alternative I can think of is for them to switch to TkTreeCtrl. Although TkTreeCtrl can certainly do all the things that ttk::treeview can (and much, much more!), it's not that easy to use; and since "ease of use" is the primary, overriding design goal of the ttk::treeview widget, I don't think this will be work upgrade strategy. (Jeff was talking about dropping ttk::dialog, too. That would be OK, since the implementation is all in Tcl and can be distributed separately, but ttk::treeview can't be.) Next: Ttk_Init() in the core needs to [package provide $something]. Right now, if you load the tile package into an 8.5a6 core, all heck breaks loose, and I don't know how to fix this yet. So existing code that says [package require tile] is going to suffer catastrophic failure unless 8.5a6+ can make this into a no-op, either by declaring "tile 0.8.0" already provided or by registering a do-nothing "ifneeded" script. The stubs mechanism (needed for third-party themes like TileQT) also uses the package database, which is another reason for the core to [package provide $something]. I can find a workaround for this if necessary, though. And on the subject of third-party themes: Tk 8.5 is definitely going to require a flag day conversion for them. This isn't as big a deal -- there aren't as many themes as there are applications using Tile, the changes required are minor and mostly mechanical, and a flag day for themes was on the Tile 0.8.X roadmap anyway. It doesn't look like I'll be able to get the theme overhaul done in time for the December core release, so third party theme developers should expect two flag days. Sorry about that; the release schedules just aren't lined up right. --Joe English jen...@fl... |