Skip to content

Roadmap for UserFrosting 4.2

Alex Weissman edited this page Mar 27, 2018 · 12 revisions

Main goals : New Migrator, NPM fix, Locale fix and Social Login. And drop the Alpha!

Status: Implemented in develop branch

Related Milestone: 4.2.0

New user-facing features

Miscellaneous

  • Allow null group assignment for users
  • Factor out password rehash from User::onLogin into Hasher class and create an interface for devs to implement their own legacy hash detection
  • Switch over from Slim's NotFoundException to our own UserFrosting\Support\Exception\NotFoundException
  • Factor out user creation logic from AccountController

Social login

Frontend vendor asset improvements

Currently the frontend vendor asset system in UserFrosting faces several issues:

  1. Bower has been deprecated (#737)
  2. Duplicate frontend vendor libraries are downloaded (#727)
  3. Conflicts between dependencies in different Sprinkles go completely unnoticed

Fixing (1) is at face value, simple. Just add support for npm. Except that node and npm don't every have to deal with dependency conflicts, since in such a case 2 versions are downloaded. Thankfully a npm alternative called yarn addresses this via a dependency flattening mechanism triggered by "flat": true.

(2) is a little more tricky. One solution is to produce a package.json that references each sprinkle, but this results in significant garbage data being copied. The solution instead is to make a node package (merge-package-dependencies) that creates a new package.json based on the result of dependency merging.

Which leaves (3), the hardest issue to tackle. The best place to handle this is inside the package mentioned in (2). Having complete dependency tree conflict detection would be extremely difficult to achieve, and so the conflict detection should be kept to just the directly included dependencies, leaving yarn to pick up what remains. This lack will likely be addressed in the future however (merge-package-dependencies#6).

These improvements will have a consequence however. UserFrosting/assets does not handle using assets at different tree depths well. While possible to fix, breaking changes would be introduced. Changing the directory depth to fix this is one solution, but a poor one. Since the opportunity has presented itself, this project includes the following UserFrosting/Assets related issues:

  1. Locked to gulp-bundle-assets as the only bundling tool
  2. Library cannot be used in non-UserFrosting projects due to customization
  3. UserFrosting's development asset server functionality is tightly coupled with UserFrosting/Assets

In a nut shell, (4), (5), and (6) all lead in to modularity improvements.

Migrations and Testing

Eloquent Extras

Remove deprecated methods?

Not sure if this is safe for a minor release.

Aggregate eager loaders

Status: Implemented in feature-with-aggregates branch

These include withSum, withAvg, etc. Very useful for Sprunjing aggregates on related entities (total hours, for example).

Update to latest version of Eloquent

Client-side components

Rewrite ufForm as a wrapper around jQuery Form Plugin?

This would outsource a significant amount of maintenance and feature development. See https://github.com/jquery-form/form/blob/master/src/jquery.form.js. Issues related to file uploading (#717) and filtering (#834) would be partially or completely solved by integrating this plugin. Our extra features (validation, submit button locking, checkbox transformation) could still be part of our wrapper.