Skip to content
Scraper Dave edited this page Nov 20, 2013 · 6 revisions

RFC Status: Work-in-Progress

RFC Author(s): Gary Hockin, Kyle Spraggs, Antoine Hedgecock

Overview

ZfcUser is not being maintained despite its wide adoption rate because no core members have stepped up to take over maintenance. The primary reasons for this, it seems, is due to the existing architecture, lack of tests, the tight coupling with Zend\Db, and the inability to make backwards compatible breaks.

This RFC outlines the idea to release a new version (probably version 2.0) of ZfcUser rewritten entirely, so that the core architecture can be changed, and BC breaks introduced.

The existing ZfcUser module would continue to exist in an unmaintained state.

Current ZfcUser

It's proposed that the current ZfcUser (and it's dependencies) are "released" as a 1.0.0 tag with only existing pull requests that fix bugs merged. Existing pull requests that extend functionality are refused with the explanation that the project is being "mothballed", and inviting the contributors to apply the functionality to the new project. Existing users of ZfcUser will be encouraged to restrict their version to 1.0.* using Composer (or similar dependency managers).

"ZfcUser2"

The new module would be split into many more modules to allow any user to only install and maintain the code they actually need to re-use. The base module (ZfcUser) should consist only of interfaces, services, and any required assets (chain adapter, hashing strategies, controller, etc).

The base module should also only contain a bare minimum set of features and those features should be implemented with sane defaults. Any additional functionality will be provided by "extension modules". Once an extension module is added there is no option to "disable" the feature the module provides; installing/removing the extension module is synonymous to enabling/disabling a feature.

The base module will also have no data backend; data backends themselves will be supplied by extension modules; eg. ZfcUserZendDb, ZfcUserDoctrine, ZfcUserMyOrm.

An example of the extension modules we imagine being supplied at launch are:

  • ZfcUserRememberMe: Provides persistence over multiple sessions via a cookie or similar.
  • ZfcUserSocial: Provides the ability to register and login via 3rd party websites (Facebook, Twitter etc).
  • ZfcUserForgotPassword: Allows a user to send a link to their email to reset a forgotten password.

Comments Exceptionally Welcome

FIN

Comments Section:

ScraperDave: With the appearance that ZfcUser 2.0 would almost be a complete re-write that may take quite a while to completed. Along with the fact that fixes for 1.x that have been made and have been ignored as if RFC ZfcUser 2.0 has already been approved. Perhaps a new repository for ZfcUser 2.0 be made. This would allow for the continuing fixes and/or minor enhancements the community has already made to version 1.0 be allowed. This would allow for those willing and able to work on ZfcUser 2.0 to do so without the intermixed 1.0 Pull Requests.