Description
Milestone: release v1.0.
Current situation
- Architectural problems
- Metadata badly handled or not at all (see Flawed metadata support #108)
- Unable to use big files / Performance issues (see add localKeys to Local adapter #252)
- No real exceptions, only bad return values like null or false (for reference Google cloud Storage - unknown bucket #400, Update AwsS3.php #395, Exception during write operation on S3 are not returned, we have false instead that doesn't help. #383) (fix: [1.0] Use exceptions if error(s) happen(s) #497)
- Inconsistencies across adapters for
keys
/listKeys
methods (see Inconsistent return value fromFilesystem#listKeys()
#344)
- Use of unmaintained 3rd-party libs
(see Replace mongo with mongodb ext #460)mongo
extension has been superseded bymongodb
extension (+mongodb/mongodb
php library)google/apiclient
has been deprecated and superseded bygoogle/cloud
(see Adds adapter for Google Cloud Client Library #427)guzzle/guzzle:~3
still used due byaws/aws-sdk-php:~2
&rackspace/php-opencloud:~1
(see aws/aws-sdk-php v~2 dependency #426)(see Upgrade aws-sdk-php to v3 #457)aws/aws-sdk-php
should be upgraded to v3rackspace/php-opencloud
should be upgraded to v2
- Lack of maintainers
- Find a way to to bring attention on tasks/issues that need some love
- Needs coherence across adapters, e.g.:
- Adapters should not be responsible for opening connections (see FTP adapter)
No real dependency in composer.json (makes it harder to use) (see aws/aws-sdk-php v~2 dependency #426)(see Create meta-packages for maintained adapter #478)Deprecate outdated adapters(see [RFC] Deprecate outdated adapters #464)- Cache adapter should be refactored/deprecated/superseded by a PSR-6/16 compliant adapter
Leverage adapters tests(see Run as much functional tests as possible on Travis #465)Stale PRsPHP7 not supported(see PHP7 compatibility #458)Old PHP versions supported (5.4 & 5.5)(see Remove support for php 5.4 & php 5.5 #459)
Solutions
For the lack of required dependencies:
-
Don't split right now: carry on with only one repository.
Good point: Easier to enforce coherence & architectural changes
Downside: Harder to give maintainer access to community members -
Split across multiple repositories.
Good point: 3rd-party libs would be required, not suggested / Easier to give maintainer access to community members.
Downside: Hard & time-consuming task / Harder to have a complete overview of Issues & PRs / Needs to split doc too -
Create as many repositories as adapters with only a composer.json requiring the main repo and 3rd-party libs (best of both world).
Good point: 3rd-party libs would be required too / Don't need to split doc across multiple repos / Easier to enforce coherance & architectural changes / Easier to have a complete overview of Issues & PRs
Downside: Harder to give maintainer rights to community members (compared to solution 2)
For the lack of maintainer, the solution will mostly depends on the answer to the previous problem:
- In case of splitted repositories: we can give maintainer access to any community member eager to maintain given adapter(s)
- In any other case: create a list of maintainer(s) for every supported adapter and use an issue/pr template which ask people to ping given maintainer(s)