SiteFusion?

SiteFusion is a server-based development environment. Applications are written in pure object-oriented PHP and work through a thin XUL client. SiteFusion applications look and behave like native system applications but run on a server generating JavaScript commands.



News


21/01/10 - Updated Installation Guide

The installation guide was a bit cumbersome and not entirely up to date on the newest release details, so it has been extended. Now also including a troubleshooting section.


07/01/10 - Release 5.2.0 and client 1.2.0, and a happy new year!

It seems hard to keep releasing the small increments, so here again is a major update. Downloads here. Both server and client have been substantially extended. The changes include:
  • Added Zlib compression for both server to client and client to server traffic, improving performance especially over slower network connections.
  • Included the Extension Manager, allowing easy installation of clientside extensions and plugins (accessible through Application::openExtensions()).
  • Included the Error Console (accessible through Application::openErrorConsole()), which now reports both PHP and JavaScript errors. No need to run the daemon in foreground, all errors are collectively managed and displayed including stack trace and file/line references.
  • Included the Updater (accessible through Application::checkForUpdates()). Settings (such as URL's to check, intervals etc.) can be changed in the defaults/preferences/prefs.js file.
  • Reworked event system defaulting to non-blocking events allowing smoother user interaction while still keeping server and client in sync. Only window 'initialized' and 'close' events are now blocking by default. Added Node::setEventBlocking( (string) $event, (bool) $blocking ) to set blocking mode per event.
  • Added XULCodeEditor class, a code editor with line numbering.
  • Included sys/console to allow direct message posting to the Error Console.
  • Resolved all known character-set issues.
  • Included new XULRunner 1.9.2b5
  • Reworked webfrontend files and client error handling to allow for greater diagnosticity.
  • Fixed issues with buggy bindings of menulist element.
  • Fixed issues where having the FileDownloader class send a big file to the client would crash the application.
  • Added XULDialogHeader, XULStatusbar, XULStatusbarPanel, XULRichListBox and XULRichListItem, XULPrefWindow and XULPrefPane classes.
  • Fixed buggy daemon shutdown/restart procedures.
  • Added 'Open Error Console' checkbox to the error alert prompt.
  • Added logging of all errors in all process types. Application errors are only logged when the daemon is running with the debug flag.
  • Fixed many minor bugs.
We also added the serverside parts of the components DOM Inspector, SiteFusion Image Library and VLCPlayer. The clientside components, installable through the Extension Manager, are available here (if somehow the download ends up being called .zip, rename to .xpi):
  • DOM Inspector - Allows deep inspection of the DOM tree and its JavaScript object representation.
  • SiteFusion Image Library - Allows client-side image resizing (will include more image manipulation features in the future)
  • VLC Player - Allows playing streaming and local video and audio content in your applications (we're working on the platform independent version, MacOS X is still bugging us. Download available soon).

18/11/09 - New tutorial, and new release coming up

Tutorial number five on Windows and Dialogs is now available. Also, we'll be releasing a new version of the server package soon, containing more bugfixes and examples.


02/10/09 - Release 5.1.0 and client 1.1.0!

We decided to skip 5.0.6 and work on toward stabilizing SiteFusion and implementing a lot of the features that we intended to implement further down the road. The first open-source releases contained a lot of freshly rewritten parts. This is the result of the decision to drop compatibility on some points between the proprietary version of SiteFusion and the open-source one. Because of this fork, we could implement some changes that were previously stalled. The result however is that the first open-source release was not as thoroughly tested as its predecessor. Now we've had enough time to test everything, and we smoothed the wrinkles. Mind that the old client release is no longer compatible with this server release! This won't happen often, but in this case it was necessary. Downloads here. The changes include:

Client
  • Character set problems are now resolved. Server and client now use fully compliant UTF8
  • Automatically set and hide any of the five input boxes through prefs.js. If all five are set, the client logs in automatically
  • New window opening strategy opens the main window without flickering by setting Application::$centerscreen, Application::$width and Application::$height as part of your application class definion.
  • ClientComponent substrate added to hook binary client extensions in. This makes the XUL/XPCOM extensions available to the server.
  • Fully functional Mac OS X menubar
  • Command-line arguments are now supported
  • XULRunner updated to latest version 1.9.2
Server
  • Several example applications added in app/testapp, including a demonstration of the custom tree class with drag & drop, editable cells and sorting.
  • The server now receives extensive client version and platform info through Application::$client
  • Receives the status of every installed client component in Application::$clientComponents
  • Receives client command-line arguments through Application::$cmdlineArgs
  • Application arguments are no longer passed to the Application::init() function of the Application class, but are stored in Application::$applicationArguments. Instead, the init() function is now actually a default event handler for the root window 'initialized' event, and thus receives the event object as its first parameter.
  • Now compatible with PHP 5.3
The next release will probably include an (optional) client debug component that allows you to use DOM Inspector and Venkman in a SiteFusion application.


23/09/09 - Tutorial: Events

Events are a crucial subject to grasp when writing SiteFusion applications. This tutorial explains the use and functioning of events in applications, and global events that are distributed between processes. Note that this is the first version, and it may be extended since the topic is quite large. Read it here: Events.


21/09/09 - New Forum

Because of constant problems with the SourceForge phpBB forum, we decided to move the SiteFusion support forum to our own server. Therefore we once again welcome all of you on our support forum which can now be found at http://forum.sitefusion.org.


17/09/09 - Tutorial: Basic user interface construction

The second tutorial explains the ways in which user interfaces can be constructed in SiteFusion applications. Read it here: Basic user interface construction.


14/09/09 - Hello World!

With the traditional Hello World! example we kick off the Tutorials section, where we'll be introducting all aspects of SiteFusion application programming in an incremental fashion. The installation how-to will head the list, followed by Hello World, and later on, basic user interface construction. Next tutorial after that will be on events.


04/09/09 - Open-source release of SiteFusion 5.0

After several years of development we are proud to present the open-source release of SiteFusion, a web application development client-server framework. Unlike most web application frameworks, SiteFusion does not work through a browser but instead uses a thin XUL client (the same technology Mozilla Firefox is based on). This means that SiteFusion applications are platform-independent, look and behave like native system applications, and are not restricted by browser security to access the local filesystem and execute programs.

SiteFusion is a server-based development platform in which applications are written in pure object-oriented PHP. Clients connect to the SiteFusion daemon through a regular webserver, allowing access even from within very restricted network environments. When logged in, the application remains a separate process on the server. Contrary to regular web applications, a SiteFusion application has a two-way connection with the client, allowing the server process to initiate action on the client side as well as the traditional other way around. This is achieved through a technique called long polling and does not require additional webserver configuration.

Because the Mozilla XUL framework has been completely captured within a PHP class structure, the construction of complex user interfaces requires a minimal amount of code, allowing developers to quickly produce professional applications. This abstraction layer eliminates the division between client and server, keeping both in constant synchrony while maintaining speed and responsiveness. With even the JavaScript libraries being server-based, the client software consists of a mere 200 lines of code, and even dramatic updates to a SiteFusion server will usually not require a client update.

SiteFusion already supports most XUL elements and adds some adaptations like the custom tree object, which unlocks all of the features of the complex Mozilla tree view interface in a highly optimized implementation. Supported features include sorting, even in hierarchical trees, editable cells, drag & drop and support for sparse trees, allowing the fast presentation and operation of very large trees containing over 10000 nodes.

The development of SiteFusion was initiated by the Dutch media company theFrontDoor in 2006, and it has since been the platform of choice for most of the applications produced for their clients. Because theFrontDoor and her employees are strong supporters of the open-source philosophy, and to stimulate further development of this project, the choice was made to release it publicly under the Mozilla Public License 1.1. This includes the SiteFusion platform itself and the SiteFusion Admin server maintenance utility, which is also an excellent example application for developers. Everyone, private and commercial, is invited to use this software and take part in its development. We also encourage both end-users and developers to comment on their experience and to suggest opportunities for improvement of the software. The project is located at http://sourceforge.net/projects/sitefusion/