Crazy Framewerk Changes

Posted on August 14, 2007

In working to optimize Framewerk to run on a site as large as myYearbook.com and our related sites, we've found several bottlenecks which we're now working to resolve. Some of the bottlenecks can be attributed to our hardware; for example, on our very cool Isilon NAS setup, there is a NFS penalty for file stat operations, and the Framewerk engine does its fair share of file stats.

As part of the cleanup we’re doing the following:

  • Adding a base level fFile class which will allow for transparent engine level caching using Shared Memory functions (shmop).
  • Unifying as much of the XML subdirectory into one file. fRegistry has been completely rewritten to allow for nesting and arrays of nodes to support moving configuration.xml into registry.xml
  • Caching maps of file locations that are used both at the base level class location and at the fTheme XSL, CSS and JavaScript auto-location detection routines.

In part of gearing all this up, and wanting to get Framewerk to a releasable state, the development team decided that we would pare the distribution down to a core framework without applications and to remove any database dependence for the core framework. The applications are not going away, they are just being moved to a satellite project level. As part of the base installer, the user will be prompted for their requirements, such as should database support be installed, what kind of user backend should be installed, if any, etc.

In addition, one of the ideas being tossed about is to add a function hook mechanism to fObject and fSingletonObject classes.

As such, the trunk of svn is once again unstable, but should become stable enough for a beta real soon. Keep an eye out for updates!