The next generation of phpList, version 4, has been under development for some time. It’s still in the early stages (Alpha 1), but already provides useful API functionality. Here’s an update on what it is, what you can do with it, and short-term goals.
What is it?
A ground-up rewrite of phpList 3 using best practices for development workflow, testing, and documentation, plus modern frameworks and a more modular architecture (see the Technical Summary for details). phpList 4 has a core central component to which modules are added. Modules contain additional functionality, as plugins do in phpList 3. A Base Distribution automatically pulls in the core and all the necessary modules (two by default), and either installs phpList 4 directly or generates a Tarball archive for distribution.
phpList 4 can read and write to databases used by active phpList 3 installations. The two versions currently complement each other on the same web server, with phpList 4 providing basic REST API access to a phpList 3.
The Composer package manager is used extensively for management of phpList modules and also packaging and dependencies. All modules are available Packagist.
Rationale
Rewriting an established app from scratch is hard; instead of reaching feature-parity between phpList 3 and 4 and then making the switch, phpList 4 has focused on the providing a REST API initially so it provides something immediately useful to existing installations. Over time, the expectation is that more functionality will be added to phpList 4, including a web interface, and in future it will come to replace phpList 3 entirely, with a code-base that’s a joy to contribute to and deploy.
Contributing
phpList 4 is entirely on GitHub, and is the documentation on how to contribute — jump in! For guidance see:
- Guide to contributing
- Architecture overview
- Code of conduct
- Open tasks (see Roadmap below)
What you can do with phpList 4 now
- Install it:
- Using composer create-project
- Distribute it:
- Using composer-generated tarball
- List, remove, and add modules:
- Using composer and custom composer script
- Run it (for testing):
- Using php dev server
- Using apache
- Using pre-defined API calls with the Postman browser plugin
- Use the API with a phpList 3 database for:
- Authentication (create and delete session tokens)
- Getting a list of all available lists
- Getting details of a given list
- Deleting a list
- Adding a new subscriber
What you can’t do
- Use a new web interface (use phpList 3 for this, for now)
- Send email notifications to new subscribers
- Require opt-in when adding new subscribers
- Anything else
Technical summary
- Admin features:
- Request logging
- Basic caching
- Automated configuration of modules (adding and removing)
- Existing components:
- Core (the central application which hosts other modules)
- REST API module
- Web front-end module (which will provide the web interface in future)
- Base distribution module (combining standard modules into an installable package)
- Under the hood:
- Symfony 3 PHP Framework
- Doctrine database abstraction layer
- Composer for module management
- Composer for installation and deployment
- Yaml config files
- FOSREST Symfony bundle
- Planned:
- Support for SQLite
- Fine-grained api logging (user, action, outcome)
- Module installation via composer
- Symfony, Doctrine, and HTTP caching
- Module template for plugin developers
- Configuration import wizard (from phpList 3)
- Automated deployment of new releases
Roadmap
Development progress and priorities are tracked in GitHub issues. You can see the current priorities for each of the modules below, as well as phases which have already been completed. To work on an open issue or add an issue you’re working on to an open phase, just comment on the issue and get started!
I hope this gets through. In version 4 I sincerely hope you have incorporated a way to quickly build an Optin Page??? I really like your software but I would use another Software if you do not have the ability to quickly create optin code for your optin pages. That is such an important feature and you have left it totally out of this version I am using now ( The latest version) ?? Why would you choose to leave that out? Please put it in in version 4 then this software would be excellent!