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.
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.
phpList 4 is entirely on GitHub, and is the documentation on how to contribute — jump in! For guidance see:
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):
- 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
- Admin features:
- Request logging
- Basic caching
- Automated configuration of modules (adding and removing)
- Existing components:
- 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
- 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
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!