KnpLabs / Gaufrette

PHP library that provides a filesystem abstraction layer − will be a feast for your files!
http://knplabs.github.io/Gaufrette
MIT License
2.47k stars 355 forks source link

[RFC] Reboot Gaufrette #466

Open akerouanton opened 7 years ago

akerouanton commented 7 years ago

Milestone: release v1.0.

Current situation

Solutions

For the lack of required dependencies:

  1. 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

  2. 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

  3. 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:

stof commented 7 years ago

I don't think PHP 7 is unsupported (except for some outdated adapters, like the Mongo one as it uses an old extension). The fact that Travis does not run tests on PHP 7 is a CI issue, not a compatibility issue.

gquemener commented 7 years ago

What about keeping one repository for contribution and auto-splitting it into read-only repositories (one for the core and one for each adapter) ? The splitting script used on symfony/symfony was OSed but I don't know where it is.

Another idea would be to look how npm @ mecanism is working and see if the same behaviour exists on composer.

stof commented 7 years ago

@gquemener the low-level tool is open-sourced at https://github.com/splitsh. But the full splitter is not open-source (you could request Fabien to run it for you though, as he already does it for other open-source projects).

The npm @ mechanism is a way to namespace packages. Composer has it since day 1 and requires using it since years, as packages registered on Packagist are required to use a vendor namespace.

akerouanton commented 7 years ago

List of referent maintainers:

Adapter Referent
AwsS3 @NiR-
AzureBlobStorage @NiR-
DoctrineDbal @pedrotroller, @NicolasNSSM
Flysystem @nicolasmure
Ftp @fabschurt
GoogleCloudStorage @AntoineLelaisant
GridFS @NiR-
InMemory
Local
OpenCloud
PhpseclibSftp @fabschurt
Zip
burci commented 7 years ago

Is there any chance to also merge https://github.com/K-Phoen/gaufrette-extras as mentioned in #246 or implement something similar functionality?

dkarlovi commented 7 years ago

You should also take the chance to review the API. For example, keys() should really take an optional glob pattern, as I've discovered implementing #486. In most cases, you don't want to fetch ALL of your keys.

akerouanton commented 7 years ago

@dkarlovi There's also listKeys() method from ListKeysAware interface, and it takes an optional pattern. Both methods exist because some storages don't allow to search for a specific pattern. But I think the current implementation is cumbersome. IMHO it would be better to remove keys method, merge ListKeysAware into Adapter interface and let adapters unable to list keys for a specific pattern mimic needed behaviors.

But I agree: we need to overhaul current API! We'll do it in coming months.

teohhanhui commented 6 years ago

There's no option to just migrate to / merge with Flysystem?