laminas / getlaminas.org

getlaminas.org source code
https://getlaminas.org
BSD 3-Clause "New" or "Revised" License
67 stars 23 forks source link

[RFC]: [Laminas Ecosystem] #199

Open arhimede opened 3 weeks ago

arhimede commented 3 weeks ago

RFC

Goal

Let's create 2 new sections on getlaminas.org website, to list "approved" 3rd party components which can be used with Laminas projects.

  1. Middlewares : example: https://github.com/akrabat/ip-address-middleware
  2. Wrappers around 3rd party libraries: example: https://github.com/netglue/laminas-messenger

Background

When we are building production platforms based on Laminas, we may need to solve trivial tasks , or to integrate some good quality 3rd party libraries, in order to achieve a certain business goal.

The current page where are listed Mezzio projects is too hidden and incomplete: https://docs.mezzio.dev/mezzio/v3/reference/mezzio-projects/

Considerations

Do not reinvent the wheel. Have in a central place as many as possible 3rd party libraries and components which are known to work with laminas, or are usefull middlewares. Attract contributors to those 3rd partie libraries.

Proposal(s)

Create 2 new pages in getlaminas.org website, where will be listed:

  1. Middlewares: small libraries which solve one problem , and can be integrated directly in a laminas project
  2. Wrappers, sorted by functionalities : for example, a queue management library, build by 3rd party ( symfony for instance ) , ready to be integrated in a laminas project.
gsteel commented 3 weeks ago

Or, why not host a fat JSON file on the website along the lines of

[
    "name": "Some Middleware"
    "tags": ["Middleware", "Something Else"],
    "repo": "https://github.com/some-url",
    "docs": "https://example.com/optional-docs-url",
]

So that authors can publish packages by PR and the website can programtically filter the results by tag/category/whatever.

We'd just need to ensure that there are some unit/integration tests for the relevant endpoint to ensure the JSON is valid etc

froschdesign commented 3 weeks ago

I would follow @gsteel' suggestion here because there are more than middlewares and wrappers (bad term that says nothing).

We'd just need to ensure that there are some unit/integration tests for the relevant endpoint to ensure the JSON is valid etc

And that the projects are not archived/outdated.

Examples

Example for Layout

https://getgrav.org/downloads/plugins

arhimede commented 3 weeks ago

I would follow @gsteel' suggestion here because there are more than middlewares and wrappers (bad term that says nothing).

Let's find another term instead of wrappers. As will be marketed a lot once we find a good wording.

Example for Layout

https://getgrav.org/downloads/plugins

Indeed , this is what i imagine. A page with lot of (extensions, plugins ? )

gsteel commented 3 weeks ago

It's all of these. It might be worth considering a finite list so that we can tag items appropriately.

For example, I have a lib that integrates Postmark (Service) with the Laminas ecosystem - it provides Services (i.e. Mail Transport, Api Client etc) and validators for pre-dispatch validation. This kind of lib might indicate it hooks into the validator and mail components along with providing service items??

arhimede commented 3 weeks ago

Probably the acceptance criteria for such a library in the Laminas Ecosytem page would be something like:

will it work in a Laminas Mezzio project ?

gsteel commented 3 weeks ago

Whatever is accepted must be installable via composer.

If you've created a lib for Laminas/Mezzio integration, you should be shipping a ConfigProvider and/or a Module - at least one of these must be present to permit the laminas composer plugin to do its thing.

I think that limiting submissions to Mezzio is a mistake, i.e. there should be a category for MVC regardless of how much we use it ourselves.

froschdesign commented 3 weeks ago

I suggest that this topic be included as a new item for the next meeting.

internalsystemerror commented 5 days ago

I understand the desire, but not the result. e.g. Mezzio supports PSR-15, so is this going to list every PSR-15 compatible library, since that's what's supported?

Is further than that and these are libraries that are actually tested against our packages? Or is this just a "laminas recommends these libraries because we've used them and they seem pretty good"?

internalsystemerror commented 5 days ago

My recommendation, which I hope aligns with the desire here, would be to make the scope "third party packages which provide explicit support for Laminas packages - with testing the responsibility of the third party".

arhimede commented 5 days ago

My recommendation, which I hope aligns with the desire here, would be to make the scope "third party packages which provide explicit support for Laminas packages - with testing the responsibility of the third party".

This sound good, as we do not want to test each package.