Blog

Londonvasion Re-Cap – phpBB Ascraeus

Posted by Acyd Burn in Development with the tags , , , on September 19th, 2008

Hi,

I think it is time to write about the presentations we (the developers) gave at Londonvasion revealing the planned features in the upcoming version of phpBB – codenamed Ascraeus.

Please do not take anything mentioned within this blog post as guaranteed. There may be changes, some things may not evolve at all, some may be changed completely. But yeah, this is the current state of planning.

Requirement Changes:

Because the 3.0.x requirements were written a few years back, we had to look at the requirements again and decide how far back we want to support software.

For the programming language (PHP) we decided to drop PHP4 support altogether, mainly because by the time we anticipate the release, PHP4 will no longer exist (and is already deceased) and most likely PHP6 already released. At the time of writing, we expect the minimum requirement for Ascraeus to be PHP 5.2.0+.

For database backends, we will drop support for versions no longer supported by their vendors. For example support for MySQL 3.x and 4.x has ended – hence we will only support 5.x and 6.x.

There may be other products within the phpBB stack for which we might have to raise the requirements, but this also depends on the market situation at the time of the first public release.

Significant framework enhancements:

The goal for these enhancements is to separate phpBB into independent parts for better code abstraction, unit testing, ease of use and re-use, single point of entries and removing spaghetti code.

The layout of our filesystem structure will see general changes. At the moment, files are not named consistently, nor are they grouped consistently. We will try to solve this by introducing an easy-to-follow filesystem structure. At the same time we will refrain from changing it too excessively to retain some backward compatibility.

Static phpbb class for creating a global namespace and for grouping our most-used globals

For our “main classes” ($db, $user, etc.) we will use a static class, generally mimicking a global namespace. Referenced through phpbb::$db, phpbb::$user, etc.

The static class will have a register call to be able to register objects for handling through this new static class.

The benefit is the removal of most objects and due to singleton usage the ease of getting the correct instance of the object the developer wants to use.

Due to our main objects being referenced through a static class, the global namespace will remain unpolluted.

Class name changes to prevent conflicts with third party products/code

Class names will change a bit, all our own will be prefixed by phpbb_, interfaces by phpbb_interface, abstracts by phpbb_abstract, and so forth…

Examples of extending our framework

At the moment, some files do not call common.php to initialize everything, forcing us to duplicate code from common.php. Attachment delivery is an example for such a case. To be able to only have one entry point and code for this, we will add a new “init file” which will be responsible for setting the required parts of the “base” with minimal effort. This file will be called from within common.php, but could also be called by other files who need the framework, but do not need the full setup.

So, basically, this splits two use-cases. The first to make the framework available to the script and the second to initialize phpBB-specific settings.

Moreover, our filter functions, namely our validate_* functions and our parameter handling function request_var() will be collected for easy (re-)use.
Our URL handling and redirect functionality will undergo the same changes.

Ascraeus will also use more hooks, directly embedded into objects which are defined as “hookable”. This will allow third-party applications to introspect and alter the script’s state, for an even easier integration into existing code.

Cache Systems:

We recently added new cache systems supporting APC, Xcache, shmop and others. Also, the db based cache will be revived. Furthermore, we will change the underlying cache structure.

We will introduce cache containers – the actual cache type will be configurable on a per-container basis. Say, one wants to use the file cache to store templates, the db to store global data and memcache to store sql queries – that will be very easy to set up. This is one example for the flexibility we will gain by implementing the framework enhancements.

New BBCode Parser:

The new BBCode parser will not suffer from the problems we faced previously within 2.0.x and 3.0.x. It is already committed to the repository and will completely replace and enhance the old BBCode system. We learned from 2.0.x and introduced a new BBCode parser for 3.0.x. This parser had its own problems, but not as many as in 2.0.x, especially regarding security. Now that we identified the issues, we can make sure that the BBCode parser for 3.2.x will not suffer from unexpected limitations.

Some features the new BBCode parser has:

  • stack-based parsing
  • ability to use BBCodes for any text-column
  • ability to parse BBCodes on demand
    for example BBCodes possible in word censors
  • no separation between custom and built-in BBCodes
  • Custom BBCodes regular expression support
  • Change storage mechanism for BBCodes (separating entered text and parsed text)

Planned Features:

Following is a list of the planned features we have for Ascraeus. These are the bigger ones. If you want, you can call it our milestone list (Of course, we have a more detailed one… but it has a lot of nonsense not required here).

  • New MCP
    • Complete overhaul of moderation capabilities
    • add inline moderation capability
    • ability to add user notes while performing several moderation actions
    • allow moderation tools in search results
    • Canned Responses
    • More control over Warnings
  • AJAX
    • Server-side library
    • Implement in some ACP pages
      • progress bars
      • configuration dependant pages/content
    • Used for the inline moderation tools
    • Not used everywhere, but where applicable and helpful
  • Event System – Trigger-based event system
    • Trigger: configurable trigger defines an entry point, for example post new
      topic for post event
    • Condition: Condition need to evaluate to true for the event to be triggered
      and action to be executed. For example: user reaches 20 posts.
    • Action: Action to be executed if Condition is true within the triggered event. For example: add user to group X
    • Callback: Callback for notification methods of triggered events
  • RSS
  • Custom Profile field changes
    • new types (image, floating point, etc.)
    • All in-built profile fields incorporated into custom profile fields
  • PM System Enhancements
    • read receipt request
    • remove outbox and instead show message status
    • user-based option to include the message text into the PM notification
    • proper report PM’s
  • Authentication System (auth)
    • Add support to update profile data/additional profile fields in external tools to the authentication system
    • Extend to a system able to handle profile data, a tool able to be used by others too.
    • OpenID support

Some smaller planned features:

  • Styles System no longer attempt to store templates and themes within the DB. The system will be backwards compatible, but we want to have the filesystem as the primary location for templates, themes and images. Changes from the ACP can be transferred to the filesystem.
  • Topic Title Prefixes
  • Special maintenance forums (Trash Can, Archiving)
  • Soft Delete
  • CAPTCHA plugins
  • Sessions workflow simplifications
  • support for queued edits
  • extend cron to be able to define the times for execution
  • improve error logging by adding additional notification possibilities
  • Editable FAQ and Board Terms
  • Help System to support the Admins and Moderators (little help icon with inline layer)
  • Ability to adjust default user preferences/options
  • We may add support for services such as Akismet.
  • Use default language variables as a fallback if something language-dependant is not available
  • allow IDN+IRI domain names
  • Full Multi-Language support by allowing certain texts to be defined in several languages (for example forum names and forum descriptions)
  • proper DST handling (automatic DST switching)

Events → Plugins → Hooks → API → code

On the developer side of things, Ascraeus will consist of many mechanisms meant for different use-cases.

Events:

Used by developers/admins to define special actions triggered by events.
Example: Place user into group X if his post count reaches 10 posts

Plugins:

Used by developers to drop in new functionality into main areas.
Example: Adding a new ACP page with more detailed statistics.

Hooks:

Used by vendors to integrate phpBB into their application/product.

Example: Joomla! Bridge

The API:

Used by developers to use the framework to achive certain goals.
Example: add user to group by calling the API
Example call: phpbb::$api::$user->add_to_group(’ADMINISTRATORS’)

The Code:

Used by developers/core developers and only touched by core devs.
Example: the function append_sid()

Conclusion:

There is much to do. ;) As you can see, we basically started planning what we want to see. We also need to take into account that we want to retain some sort of backward compatibility – in the sense of not rewriting everything. :) subsilver2 will most likely be dropped though.

At the moment our main focus is still on Olympus. Bug fixing and managing the product in it’s full entity takes still the most time.

If you want to see the presentations, please go to our Londonvasion page and view them online or download the videos and view them offline. :)

Thanks for reading,
Meik

32 Responses to “Londonvasion Re-Cap – phpBB Ascraeus”

Posted by SamG on September 19th, 2008 at 5:39 pm:

That was very interesting and informative. Thank you for taking the time to put all that information together!

Posted by a_o_c on September 19th, 2008 at 7:03 pm:

very informative. i watched some of the videos where you guys discussed this, but having it layed out on “paper” is easier for me to understand.

i do have a question about the overhauled MCP. say for instance i give my global moderators permission to edit users. with 3.0.x, they have to acess the ACP to use that function (3.0.x is smart enough to only show them the “users” tab, safeguarding the rest of the ACP). what i think would be more efficient (and i know this is going to sound like a feature request, so please be nice :)) is to add all the modules to the MCP, and allow admins to “pick and choose” what groups have access to what modules via the MCP. for instance, i have give my global moderators access to users, groups, and ranks; and give my regular moderators access to just topic functions (delete, move, lock, edit, etc).

hope i didnt confuse you with my question.

Posted by TheIlluminative on September 19th, 2008 at 7:04 pm:

Great work, actually it does implement tons of features, I’m looking forward to the very first beta release of it.

Why to drop subsilver2 ? It’s widely admirable by lots of users, it’s really a nice looking style though.

But I actually don’t get the part of the Static class, can you please explain it more ?

Posted by Acyd Burn on September 19th, 2008 at 7:56 pm:

a_o_c:

We will still separate ACP actions from MCP actions – so most likely not allowing to merge both (although we partly did with managing groups within the UCP). At the moment i am not able to say how far the MCP develops, but i can say that we never discussed what you said.

Why to drop subsilver2 ? It’s widely admirable by lots of users, it’s really a nice looking style though.

We only provide it with Olympus because people knew it – the first intention was to only provide prosilver. 🙂 But with Ascraeus we do not want to take care of two separate styles, so we will drop one and hope some talented styler will be able to provide a “clean, square” style, maybe even our styles team. 🙂

But I actually don’t get the part of the Static class, can you please explain it more ?

If you do not know what this “tech talk” means… do not care. 🙂 It will not change the board experience and is only something technical for the “code guys”. 😉 The blog post is in parts quite technical, as was the presentation. But i think also without knowing the inner workings you get the idea pretty well.

Posted by faw on September 19th, 2008 at 8:19 pm:

Writing down ‘RSS’, you mean that Ascraeus will support RSS only or it’s a general suspicion and it will have some kind of feed plugins system?

Posted by Double_J on September 20th, 2008 at 8:26 am:

I have a small question regarding the hooks and MODs.

Will the hooks be in such a way that we are capable of developing plugins, as it is with for example wordpress.

Where we for example add an install function which tells
– Which function hook where in the code
– Add additional tables/configuration properties

Or do you plan to go with this in a bit of another direction?

Posted by luchtzak on September 20th, 2008 at 5:53 pm:

Is there a timeframe for this new project ? 😉

Posted by bonelifer on September 21st, 2008 at 12:53 am:

luchtzak it will be done three weeks after fours after the first time someone asks that question. 😉

Posted by idiotnesia on September 21st, 2008 at 5:02 am:

Great job for the developers. it looks like everything will be improved.

How about polling and cencored system?

It’s better if the developer also add regular expresion support in the cencored system (ups request again)

Also, with the many planned improvement I wonder if phpBB 3.2 will exist. It look like the upcoming phpBB will be phpBB 4 :p

Posted by JimA on September 21st, 2008 at 6:49 am:

It’s done the day before the day after the day it’s done. 🙂

Posted by Acyd Burn on September 21st, 2008 at 10:03 am:

Writing down ‘RSS’, you mean that Ascraeus will support RSS only or it’s a general suspicion

it’s a general suspicion for providing feeds.

Will the hooks be in such a way that we are capable of developing plugins, as it is with for example wordpress.

No, the system is not comparable to wordpress or drupal for example. Hooks are not “plugins”. In 3.2 there will be also not much hooks.

This question was raised in london too and we explained it in detail – do not know if it got cut out of the videos though.

Is there a timeframe for this new project ?

As with any phpBB project… no.

It’s better if the developer also add regular expresion support in the cencored system (ups request again)

The list within the article has only the most important ones, the big changes. Of course there will be numerous of very tiny alterations and additions we will not separately list.

Posted by Techie-Micheal on September 22nd, 2008 at 5:02 am:

Glancing through this post, I’m drooling. 😀 I can’t wait!

I was going to ask if you were using singleton based on what I read, but then I saw this later:

“The benefit is the removal of most objects and due to singleton usage the ease of getting the correct instance of the object the developer wants to use.”

Good to know I haven’t completely lost it. 🙂

Posted by T50 on September 22nd, 2008 at 1:55 pm:

Ok, I didn’t go through all of it, yet, but will eventually, but for the parts I did,,

for the bbcode, will is be possible to have permissions on who get’s to use to? like have it for only admins/mods? at leaset for like th custom bbcodes, so only certain groups can use certain bbcodes, all set in the ACP

Posted by Acyd Burn on September 22nd, 2008 at 2:06 pm:

for the bbcode, will is be possible to have permissions on who get’s to use to? like have it for only admins/mods? at leaset for like th custom bbcodes, so only certain groups can use certain bbcodes, all set in the ACP

Most likely, yes. Since we will only have custom bbcodes we also need to transpose permission settings to them, for our current static bbcodes (quote, code, smilies for example).

Posted by BigK on September 23rd, 2008 at 8:46 am:

Wow, cool. Looks promising. Best of luck to you.

Posted by Kutagh on September 23rd, 2008 at 9:29 pm:

I have to say, what you are saying there, it sounds good.
I certainly hope that it will go well and quickly.

I certainly like the fact of Canned Responses being changed from modification (it already exists as a modification, but not fully released yet nor working quite properly when I tested it) to an actual feature. I’m also quite curious as to how the MCP will feel, as currently it is a bit…. Troublesome. I always found IPB to be easier when used from a moderation view. I hope that it will be easier to actually use without switching screens.

Good luck and my best wishes goes out to this project. Many thanks to the people who are working on this project voluntarily and are so nice to share it with us for free.

Posted by AndyDragon on September 24th, 2008 at 6:27 am:

For BBcodes, besides permissions, it would be nice to be able to specify ‘topic’, ‘reply’ or ‘both’. That is, if set to topic, it can only be used in the intial topic, reply means it can be used only in a reply. Also another setting for ‘post’, ‘pm’ or ‘both’. These obviously only affect editing time since changing the setting should not invalidate existing posts/messages. Lastly, it would be really cool to be able to list which forums the BBcode could be used in. I realize this might make for an admin nightmare, but if the default is ‘all’ and then you could narrow it down, it would make it very powerful to contain certain BBcodes to certain forums.

Posted by Persian on September 29th, 2008 at 12:23 pm:

As well as a nice XML sitemap hopefully, hmm?

Regards,

Posted by Drake Bozono on October 1st, 2008 at 11:34 pm:

Not to be rude to the people are programming this, but it sounds like this is going to get a little bloated, which i thought the phpBB group was against. Will there still be support for upgrading from phpbb1 (i know i need to upgrade) and phpbb2, since i run forums with both software?

Keep up the good work and thoughts.

Posted by A_O_C on October 15th, 2008 at 3:50 am:

Will there still be support for upgrading from phpbb1 (i know i need to upgrade) and phpbb2, since i run forums with both software?

Why not upgrade to phpbb 3.0.x now? It would probably be easier, and Im not sure if the developers will offer an upgrade script from 2.0.x, much less 1.0.x

[ EDIT ] – Use <blockquote>text</blockquote> as BBCode does not work on blog comments. – Highway

Posted by iWisdom on October 16th, 2008 at 12:11 am:

As phpBB3 does not offer a direct upgrade method from phpBB1, I suspect phpBB 3.2 will not as well.

Posted by drixie on October 29th, 2008 at 10:46 am:

You guys should consider building an automatic mod installer and manager into the system or make mods plug and play (copy mods onto server and activate in admin control panel).

Just a suggestion though.

Posted by damsprivate on November 9th, 2008 at 11:05 am:

waiting for it. btw same as above can u make mod man be one as phpbb ?

Posted by Christophe on November 26th, 2008 at 7:39 pm:

Yes, an automatic mod installer would be GREAT !

Posted by Christophe on December 2nd, 2008 at 12:47 pm:

I don’t know if it’s the right place to discuss the features, but i don’t know any better…

What about a “WISIWIG” editor ?

Also, the non-interpreted BB-code should simply not appear (or only to the author and moderators) ?

Thanks to the team for it’s great job !!!

Posted by Bob Smith on February 28th, 2009 at 3:49 pm:

How about implementing nice little BB code buttons, with images, instead of the dull text buttons it has now?

Posted by bizimpencere on March 19th, 2009 at 1:00 pm:

Called that phpbb is 4 comes or which? … And which is with our mods etc. already installed… Do we have to again begin everything with phpbb Ascraeus???

Posted by leviatan21 on April 7th, 2009 at 4:43 am:

About bbcode system you should take a look at the MOD Advanced Bcode Box 3 (aka ABBC3 ) by mssti.
It have icons and permission 😉

Posted by ChriZathens on June 15th, 2009 at 1:38 pm:

A very important feature – IMO and my user’s – especially for forums with a lot of active users, is the ability to see all unread posts (this is done by a mod called “view or mark unreads for phpbb3”)
I know that phpbb3 is much better in this area than phpbb2 (who was loosing your unreads after a logout) but the ability to view all unreads with one click is extremely important if you need to keep track of all the new posts. I hope you can implement something like this in 3.2..
Just my 2c..

Posted by Dave on July 1st, 2009 at 5:14 am:

Would be cool if you have a global module system instead of seperating ACP, UCP and MCP. I hate it to write wrapper classes and duplicate template stuff just in cause of the need for the same functionality in ACP and in UCP.

Posted by Dave on July 1st, 2009 at 5:23 am:

Oh… I forgot… PLEASE don’t deal with to much new stuff.
I prefer more smaller changes in a couple of months. Than a waiting 5 years on a cool mega realease like 3.0.
Actually I use phpBB only as a framwork on some projects (without board functionality) and I’m really(!!) looking forward to those cool new framework features. But please don’t take to much stuff on your agenda for 3.2 and don’t hesitate to use 3rd party code (e.g. for ajax stuff). This actually is the strength of open source… that there is no need to reinvent the wheel.

regards, dave

Posted by Dudez009 on March 15th, 2010 at 12:57 am:

One think I would like is a more advanced Quick Reply by default. The one at the moment is too basic.

Commenting is disabled for this blog post