
NEWS 02-12-2017 - Plugins/Bundles a new world
As some of you know we are working with Reaby on the version 2 of eXpansion. Our beloved server controller. In exp1 and other controllers you install, enable & disable plugins. In eXpansion2 this has changed. For the user perspective we are not talking about plugins anymore but about bundles.
You might think, why? It's a mess?
To take things back to earth a Bundle is not much different then a plugin. The main difference is that a bundle contains a multitude of plugins (and other things).
Well there are few reasons why, I am going to try and explain.
Spliting plugins into smaller services
In previous versions and in other controllers you may have a plugin named Maps; this plugin has 1 file that handles many tasks. In eXpansion 1 for example it did the fallowing tasks
- Displaying a list of maps to the user with /list command.
- Handling the database to insert maps data.
- Handle the JB.
- Handle the removal of maps
In eXpansion2 we are able to separate this :
- A plugin handling the insertion of maps data
- A plugin handling the jukebox
- Multiple plugins for all the chat commands
This allows for separation of logic. I won't dwell much on this as it's part of the programming. I will just try and explain what this brings to the users of eXpansion.
small services means flexibility.
Nothing prevents in eXpansion2 to code a bundle with a single huge plugin as we are used to in expansion1 or other controllers.
eXpansion2 comes with a powerful system(Dependency Injection) that allows a bundle to replace plugins(actually services but plugins are services) of another bundle or of the core. Distributing our code in a logical manner into multiple services(plugins in some case) means that Bundle creators can change the default behavior of eXpansion with ease.
One of the examples to this is our very own ImmersiveBundle. By default eXpansion2's windowing system is very much like eXp1. You can open multiple windows that you can move around.

When ImmersiveBundle is enabled all windows becomes full screen windows and opening a new Window closes the old window.

This is done by, replacing the service that generates the window's content. There is very little logic but quite alot of styling done in this Bundle. This automatically affects all windows already existing all windows that will be created by other bundles. Immersive also interacts with the menu, you can see the menu elements on the top of the image. As you can see we are still working on the display of these elements.
What more
Globally eXpansion2 is waking on the footprints of eXpansion1.
- Still multi language support
- Gui handler is still the best out there, grouping manialinks and optimizing the sends. Without all the bugs from eXp1.
- eXpansion2 is built on the best PHP foundation there is. SYMFONY
- eXpansion2 is unit tested, this hopefully means less bugs, better stability.
- Documentation, at http://mp-expansion.com/ is there as we develop. So it's already up to date.
- Entirely new menu.
- 2 styles out of the box, default & immersive
- Local records, that can save both race records & laps records. not one or the other, both.
- Unified GUI. A GuiFactory service centralizes all the gui components, powered with FML this means you can expect Bundles that will change the whole style of eXpansion. A bit like a custom skin or theme.
- A unique data provider system makes adapting a plugin/bundle to a new gamemode a child plays (well it's relative)
- DI system takes it to a whole new level
We haven't yet finished,
- Ingame configuration, it was part of eXpansion1 it will be there in the first stable version of eXp2.(not in alpha-1 planned for alpha2)
- Optimized widget system. More on this subject in a future news. But for now let's say that exp1 widget system was the fastest, but could have synchronization issues. We are working on a new system that will hopefully marry the best of both worlds.
- More plugins more features; at the moment eXp2 bundles are just emerging
- Migration tools to migrate from eXp1 and other controllers.
Road Map
- Alpha - 1 For devs to start to look into eXpansion, help us by building essential plugins
- Alpha - 2 eXpansion2 core is done, devs can really start working on awsome functionality. We test and you test. Version still not ready for public use
- Beta All essentials future are ready, we can prepare install archives with autopdate. It's basically ready for the end user, the server admins !!
- Release Once all the bugs fixed, all is stable we can add Beta and release it.
Next big step : Alpha - 1
We intend to do a first alpha soon, end of the year? Beginning of next year? Hard to say. We did quite a bit of progress features wise this last weeks but some essentials in the core are still missing.
The core will not yet be done, all the configuration and widget system won't be there for the first alpha. This alpha is intended for developers. If you are interested in eXpansion2 and wish to help us by coding bundles for eXpansion2, by helping us get a list of things to do that will be the moment todo so. We are going to communicate more on this in due time
The more people to code and help with the essential bundle the faster eXp2 can be ready. But the core is our main priority.
Thanks for reading