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

So we have multiple different logics all mixed up in a single file. In some cases that made our files very comlicated, and also it meant that writing automated tests for a specific task was nearly impossible you had to have the global vision.

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

And all of them are part of the `eXpansion/MapsBundle`

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.

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.

And gone further then ever,

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

What's to come

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.

We will not put as much features in eXp2 as we had in eXp1, we are taking the most used and the best features at first.

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.

There is still quite a way to go. They are a few big jobs to do in the core still but we have achieved a point where we believe our main idea is working(mainly the DI & Data provider system).

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

Developper for The next generation, Clean and Powerfull controller eXpansion for your SM & TM server . Working on eXpansion² with full MP4 support and many other awesome features...

You should look at symfony 4 that have been release a few days ago. Most notably Symfony flex would also be really good to help management of new plugin installation

Indeed it's probably going to happen at one point. I went completely wrong with the way I wrote unit test at beginning and they need to rewritten basically they won't work on SF4 to much deprecation. Also cache clear requires dedicated to run quite easy to fix but well.

so much todo

Developper for The next generation, Clean and Powerfull controller eXpansion for your SM & TM server . Working on eXpansion² with full MP4 support and many other awesome features...