Skip to content

5.0.0-beta1

Pre-release
Pre-release
Compare
Choose a tag to compare
@lcharette lcharette released this 19 Apr 01:12
d059ab5

This is the first beta of UserFrosting 5 !

IMPORTANT: This version is meant for testing. It's should not be used in a production environnement. No documentation is provided yet, beside this page. Feel free however to test this version and report any bugs, ideas or missing features!

This version is meant as a the first test version of the big V5 released. It's meant for UserFrosting developers to get a first fully working version of UF5 and to test it.

While no major changes are planed at this stage, things could still be moving around. Any breaking changes would however be documented during the beta period. Support for UF5 can be found for this beta on the chat or GitHub Discussions.

Requirements

  • PHP 8.0, 8.1 or 8.2
  • Node.js 14 or higher
  • Database (MariaDB, MySQL, Postgres, SQLite, or SQL Server)
  • Composer 2

Installation

To install locally, you can use theses commands, as long as you met the requirements above (i.e. PHP and Node installed). When running the bake command, you can select sqlite if you don't have a database engine installed.

composer create-project userfrosting/userfrosting UserFrosting "^5.0.0@dev"

Once the initial setup is done, the website can be locally served with the following command from the install directory and then be accessed at http://localhost:8888.

php -S localhost:8888 -t public

In the event something went wrong during initial setup, you can run it again manually with the following command from the install directory:

php bakery bake

What is UserFrosting 5 ?

UserFrosting 5 is the culmination of almost two years of work by @lcharette. It is a complete rewrite of the backend PHP code. And by complete, we really mean complete. No class was left untouched! The main updates are :

  • Slim 3 upgraded to Slim 4
  • Pimple Dependency Injection Container replaced with PHP-DI
  • Frontend assets management replaced with Webpack Encore
  • New Sprinkle system, now with extra modularity
  • Skeleton type main repo for easier initial development
  • Built-in sprinkle are now managed by Composer
  • New Event dispatcher and listener services
  • New Bakery command for easier debugging
  • (Almost) 100% test coverage and quality check through PHPStan
  • And so much more

The Slim migration itself is a big deal. While brining UF to a more modern era, it had the most impact on the core changes applied to the UserFrosting framework. Most changes were made in response to the new Slim 4 requirements and changes. It also required the use of a new Dependency Injector, which itself really brought UF5 to a whole new level. You should really check out PHP-DI, it's awesome!

Basically, UF5 uses updated dependencies, all of existing code have been updated to new standard and new test coverage should provide better long term stability.

What UserFrosting 5 isn't ?

UF5 is not a drop-in replacement for UF4. The whole backend has been rewritten, with a new container, sprinkle system, etc. which will require most sprinkle to be updated manually.

UserFrosting 5 also offers the same frontend as UserFrosting 4. But the bases have been set for the future, with Webpack Encore and the current AdminLTE theme separated in it's own Sprinkle providing the necessary tools for Vue.js or other similar frontend.

Known bugs and missing features

While most features are ready at this point, some things are not:

  • [Webpack Encore] Sprinkle entries needs to be manually copied in their parent sprinkle (Will require a custom plugin or contribution to Encore)
  • [General] Some test coverage still need to be added

What's next? When will it be stable? How can I help?

There's currently no ETA on the release date of the first stable version. For now, new beta released are planed, when necessary, until all documentation is written. Once this is done, the first release candidate version should be released, followed by the first stable release after some more testing.

At this point, the best way to help is to install this version and test it! Any bug you encounter should definitely be reported by opening a new issue. You can also contribute to the code and create pull requests.

Alternatively, you can contribute buy buying @lcharette a coffee.

Full Changelog: 5.0.0-alpha2...5.0.0-beta1