-
Notifications
You must be signed in to change notification settings - Fork 393
Description
In this issue I collect the progress of the refactoring of SimplePie. This roadmap serves me as a central place for rough planning. Please note that the roadmap is only my personal proposal for the further development of SimplePie, but has not been officially confirmed by the SimplePie team.
I would love to hear feedback from the SimplePie team and community. Please share your thoughts on what you think of this roadmap.
Possible roadmap
All changes must be backward compatible to adheres Semantic Versioning. Breaking changes are allowed with the release of 2.0.0.
🚀 SimplePie 1.6.0
(Allow usage of PSR-4 namespaced classes)
- Merge of Add namespaced classes and PSR-4 support #711.
- Let users try out the new experimantal namespaced classes and collect feedback
- This will also allow us to get a better statistic data about used PHP versions on packagist.org
- discussion about the necessary changes in
build/compile.phpor the need at all. Upload compiled file as asset + tests #725 - Merge of New Release 1.6.0? #726
🚀 SimplePie 1.7.0
(Refactoring to use PSR-4 internally, refactoring tests)
- Merge of Use PSR-4 namespaced classes #722.
- Copy the tests and change them to test the namespaced classes: Create tests for PSR-4 classes, refactor oldtests #730
- Switch to Code Style PSR-12: Change code style to PSR-12 #738
- Merge of Release 1.7.0 #733
🚀 SimplePie 1.8.0
(Allow external cache implementations)
- Raising the minimum PHP version based on download numbers and feedback: Require PHP 7.2 or newer #743
- Allow the usage of PSR-16 cache implementation (requires PHP >=5.3.0): Allow usage of PSR-16 cache implementation #742
- deprecate the usage of internal cache implementation (provide PSR-16 implementation instead): Use Psr16 cache as Default, deprecate \SimplePie\Cache\Base implementations #752
- Create interface RegistryAware: Create interface RegistryAware #760
- declare strict_types=1 in every file: Declare strict_types=1 in every file #763
- Registry: Allow using class-strings instead of magic strings: Registry: Allow using class-strings instead of magic strings #766
- Merge of Release 1.8.0 #761.
🚀 SimplePie 1.9.0
(Allow external HTTP libraries)
- Add parameter type declarations in all classes (no BC break thanks to parameter type widening in PHP 7.2): Add type hints in all classes #775
- Remove obsolete phpdoc tags: [ENH] Revise the phpdoc tags
@packageand@subpackage#780 - Prepare File class as HTTP client: Split SimplePie\File class into HTTP client and response #774
- Replace the outdated idna_convert library: Use
idn_to_asciifunction instead ofidna_convertlibrary #785 -
Allow the usage of Requests as HTTP client library(use an adapter instead) - PHPStan Level 5 to fix issues from Declare strict_types=1 in every file #763: Raise PHPStan to level 6 #837
- Allow the usage of PSR-18 HTTP client library: Add support for PSR-18 HTTP clients #777
- Release SimplePie 1.9.0: Release 1.9.0 #850
🏗️ SimplePie 1.10.0
(deprecate File, Locator, Sniffer classes and provide alternatives)
- Fixes for PSR-18 usage: Add support for PSR-18 HTTP clients #826
- Replace Locator and Sniffer with alternative: Replace Locator and Content\Type\Sniffer with Content\Detector #849
- deprecate the
SimplePie\Fileclass (provide HTTP client instead) - Refactor exception throwing, deprecate the old error handling (enable_exceptions does not work properly in all cases #755)
🔲 SimplePie 1.11.0
(Trigger deprecation warnings to prepare for upgrade to SimplePie 2.0.0)
- Add option to throw or mute deprecation warnings
- Add deprecation warnings in all classes in
libraryfolder, see Add namespaced classes and PSR-4 support #711 (comment) - Add deprecation warnings in all internal cache implementation (provide PSR-16 implementation instead)
- Add deprecation warnings in
SimplePie\File(provide PSR-18 implementation instead) - deprecate the single-file build because of external dependencies in v2
- deprecate the usage of PSR-0
- deprecate the usage of global constants like
SIMPLEPIE_VERSION, useSimplePie\SimplePie::VERSIONinstead
🔲 SimplePie 2.0.0
(BC breaks are allowed; Require external HTTP library and cache implementation)
- Require PSR-16 cache implementation (use no cache as default)
- Require PSR-18 HTTP client implementation (use Requests as Default)
- remove single-file build because of external dependencies
- remove all deprecated code
- remove error handling and
enable_exceptions, throw always exceptions - remove the
libraryfolder - remove tests for deprecated code
🔲 SimplePie 2.1.0
(To be determined)
- Raising the minimum PHP version to PHP 7.4 or PHP 8.0, based on download numbers and feedback
- Improve mf2 support: [ENH] Consider better mf2 support #684
- Add return types by introducing new methods (using camelCase) and interfaces, deprecate old methods without return types
- Split the feed-level methods out of the main SimplePie class. This will make the main SimplePie class the main API for setting options.
- Improve performance and memory usage. SimplePie's performance leaves much to be desired, so this should be the focal point of this release.
- Handle very large feeds, see XML parsing not in chunks, parser out of memory #598 and Handle very large feeds PressForward/pressforward#1040
Old ROADMAP.md
This roadmap is based on the (10 year old) ./ROADMAP.md that is now outdated.
# SimplePie Roadmap
This roadmap is a guide for what we're heading towards with SimplePie releases.
These are guiding features, however more may be included in each release.
## 1.4
* **Split the feed-level methods out of the main SimplePie class**
This will make the main SimplePie class the main API for setting options.
* **Deprecate SimplePie_File**
There are much better HTTP libraries out there than the included one. Instead,
enable easy use of Guzzle and Requests via a new API, using Requests by
default via Composer.
## 1.5
* **Improve performance and memory usage**
SimplePie's performance leaves much to be desired, so this should be the focal
point of this release.
## 1.6
* **To be determined**