[deleted]17 Nov 2015
I hadn't been planning on talking much about this just yet, but the fork has come up a couple times in conversation recently so I figured I'd put this up to get it out of the way and answer any questions there may be.
Click here for the full post, plus links to stay in touch with how development goes: http://www.dreamhearth.org/fireside/ ...or just read on.
What is Fireside?
Fireside is an in-development fork of the esoTalk software by Toby Zerner. Recently esoTalk was abandoned in favor of the development of a from-scratch forum software, leaving many esoTalk users wondering about the next step. Fireside picks up where esoTalk left off, adding new features while holding onto the speed and simplicity that esoTalk users know and love.
The State of esoTalk
There are currently a few primary pain points for esoTalk that we see needing to be addressed:
The interface for plugin and skin authors is difficult to navigate, and many things are challenging or impossible without modifying core.
This is a problem that is hindering the growth of the esoTalk community. After some discussion and investigation, it was apparent that the current system for plugins and skins has significant flaws. I won't get into all of the reasons for this, but here are some highlights: The hooks system is incomplete, forcing some plugins to modify core; The primary mechanism for extending a view is to overwrite the view with a new file, making it impossible for skins and plugins to modify the same view without a conflict; The platform core emits HTML frequently, making it more difficult for skins to take full control of the visuals.
Development and maintenance of the platform core is challenging.
As Toby said himself: "esoTalk is great, but its codebase is unsustainable. It is built on a custom pseudo-framework which means a lot of wheels are being reinvented. Its potential is limited by the many inherent flaws of this approach."
To address these problems, the plugins and skins system is being heavily modified in Fireside.
- Controllers no longer emit HTML at any point—instead they pass data on to the view and the active skin is the sole owner of presentation step, transforming that data into HTML.
- Plugins can no longer override views. Instead, plugins hook into core using a system of actions and filters. This lets plugins modify and add data that enters and leaves the controller but before it goes to the view.
- The PHP views used in skins are being ported to Handlebars templates. Using a template language for the interface makes skin development much easier and more enjoyable. This also enforces the separation of presentation and data—if the data is not emitted from the controller or a plugin, it's not available in the view.
This lets skins own the presentation step completely, but affords plugins the flexibility to expand on the functionality for any view and any controller. More importantly, there's much less of a chance of a conflict occurring between skins and plugins.
At this point, you're probably wondering about compatibility. Custom esoTalk skins will not be compatible with Fireside, but the new template system makes skin development much easier and more intuitive. Plugins will require some modification to be compatible with Fireside. To address this, the Fireside developers will manually port several popular plugins to the new plugin system, letting a majority of users upgrade without losing functionality. For more on compatibility, read the section below.
As development goes on, we're gradually working on cleaning out and caring for the code in core. It's currently less of a priority, since a vast majority of users should never have to interact with core. However, making the codebase easy and fun to develop on will help a lot in the long-term.
Development is ongoing on GitHub . Currently I've got an early version of the theme system working on a separate feature branch and I'm converting the base theme to Handlebars. You can track the progress of that here .
When making substantial revisions to software, bugs will crop up and some sacrifices have to be made. Fireside is being careful to preserve compatibility where possible.
We know a lot of users value the ability to install their forum software on shared hosting. For this reason, installation and upgrade will continue to be possible via FTP or git just like esoTalk. To upgrade from esoTalk to Fireside, simply replace all files except the configuration file.
Unfortunately, plugins and themes made for esoTalk will not be compatible without some modification. However, to main upgrading as painless as possible, we'll be manually porting many of the most common plugins, including Likes and reCaptcha, for example. Plugins that rely on the database will use the same database tables, so if your current forum has Likes and you choose to upgrade, just can use the new Likes plugin and you won't lose any data or functionality.
Q: Will Fireside be compatible esoTalk?
A: Mostly. Existing esoTalk installations will be able to upgrade to Fireside via FTP or git, making the installation/upgrade process identical to the existing esoTalk process. However, plugins and themes made for esoTalk will need to be modified to run in Fireside. The Fireside developers will attempt to ensure as many plugins as possible are available to upgrade for Fireside so that users will not have to miss out on functionality they currently use in esoTalk.
Q: What are the goals of Fireside?
A: The stated objective of esoTalk as found it its readme are to be fast, simple, and powerful. Fireside embraces these values and has a few ideas of its own. Plugins and themes for Fireside should be easy and fun to make. Features that enable developers to use the platform to greater potential will always be considered, as long as they do not compromise the speed and simplicity of the software.
Q: How does development of Fireside work?
A: Fireside currently has a Vagrant developer environment, giving developers everything they need to easily get up and running. If you don't want to use Vagrant, Fireside can simply be downloaded and installed on a PHP-enabled server (currently PHP 5.3+) for development and testing.
Have something to say?
If you would like to bring up any issues, ideas, or simply have something important to discuss, feel free to leave a comment. You can also create a GitHub issue .