Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[RFC] Reboot Gaufrette #466

Open
akerouanton opened this issue Mar 24, 2017 · 8 comments
Open

[RFC] Reboot Gaufrette #466

akerouanton opened this issue Mar 24, 2017 · 8 comments
Assignees
Milestone

Comments

@akerouanton
Copy link
Contributor

akerouanton commented Mar 24, 2017

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:

  • 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)
@stof
Copy link
Contributor

stof commented Mar 24, 2017

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
Copy link
Contributor

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
Copy link
Contributor

stof commented Mar 29, 2017

@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
Copy link
Contributor Author

akerouanton commented Mar 29, 2017

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
  • Those maintainers should be assigned to issues/PRs for given adapters, but they are not meant to be the only maintainer(s) to work on those adapters.
  • Other maintainers can also assign issues/PRs to referent maintainers

@burci
Copy link

burci commented Apr 21, 2017

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

@dkarlovi
Copy link
Contributor

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
Copy link
Contributor Author

akerouanton commented May 21, 2017

@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
Copy link
Contributor

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

@PedroTroller PedroTroller self-assigned this Apr 5, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

7 participants