getlaminas.org icon indicating copy to clipboard operation
getlaminas.org copied to clipboard

[RFC]: [Laminas Ecosystem]

Open arhimede opened this issue 1 year ago • 10 comments

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.

Appendix

We may have a form to allow developers to submit any middleware or wrapper in order to be included in the website. Or we can promote the content of this page, in an extend form, by having a Middleware and Wrappers section: https://docs.mezzio.dev/mezzio/v3/reference/mezzio-projects/

arhimede avatar Aug 19 '24 14:08 arhimede

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

gsteel avatar Aug 19 '24 14:08 gsteel

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

  • https://lm-commons.github.io
  • https://www.doctrine-project.org/projects/doctrine-module.html
  • https://www.doctrine-project.org/projects/doctrine-orm-module.html
  • https://github.com/cherifGsoul/inertia-psr15
  • https://github.com/reinfi/zf-dependency-injection
  • https://github.com/Roave/psr-container-doctrine
  • https://github.com/trinet-at/mezzio-test
  • https://github.com/asgrim/mini-mezzio
  • https://github.com/bushbaby/BsbFlysystem
  • https://github.com/neilime/twbs-helper-module
  • https://github.com/phly/PhlySimplePage
  • https://github.com/mikemix/TacticianModule
  • https://github.com/eth8505/laminas-monolog

Example for Layout

https://getgrav.org/downloads/plugins

froschdesign avatar Aug 20 '24 09:08 froschdesign

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 ? )

arhimede avatar Aug 20 '24 10:08 arhimede

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??

gsteel avatar Aug 20 '24 10:08 gsteel

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

  • if we call it in composer
  • with some setup like config and pipelines

will it work in a Laminas Mezzio project ?

arhimede avatar Aug 20 '24 10:08 arhimede

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.

gsteel avatar Aug 20 '24 11:08 gsteel

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

froschdesign avatar Aug 20 '24 11:08 froschdesign

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 avatar Sep 09 '24 12:09 internalsystemerror

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

internalsystemerror avatar Sep 09 '24 12:09 internalsystemerror

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.

arhimede avatar Sep 09 '24 13:09 arhimede