[RFC]: [Laminas Ecosystem]
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.
- Middlewares : example: https://github.com/akrabat/ip-address-middleware
- 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:
- Middlewares: small libraries which solve one problem , and can be integrated directly in a laminas project
- 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/
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
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
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 ? )
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??
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 ?
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.
I suggest that this topic be included as a new item for the next meeting.
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"?
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".
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.