+1 however the list should remain in the PSR if it is to be a PSR. The problem with that being is that we do not change PSRs.
Thanks,
Michael Cullum
--
You received this message because you are subscribed to the Google Groups "PHP Framework Interoperability Group" group.
To unsubscribe from this group and stop receiving emails from it, send an email to php-fig+u...@googlegroups.com.
To post to this group, send email to php...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/php-fig/8dfa7ae2-3ec9-4a11-b71f-8fe7598026f9%40googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.
+1 however the list should remain in the PSR if it is to be a PSR. The problem with that being is that we do not change PSRs.
Interface Namespaces
This document defines common, shared namespaces for Interfaces.
The goal is to encourage interoperability between PHP projects using common Interfaces. Frameworks, CMSs, and Package developers MAY implement interfaces for their own purposes defining the qualified namespace within the shared namespace. Interface authors are encouraged to collaborate with others who have similar interfaces to refine definitions and construct standard approaches.
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in RFC 2119.
The word implementer in this document is to be interpreted as one implementing an Interface using a common Interface Namespace.
1. Specification
A list of approved namespaces for interfaces SHALL be maintained by FIG {link to the workspace-maybe a github repo for PR's}.
Each namespace MUST have an associated definition to aid implementers in selecting an appropriate Interface Namespace.
FIG may add to or remove from the list of approved namespaces.
Implementers MAY use the common namespace for their interfaces and within their frameworks, CMSes and software packages.
A list of qualified interfaces for each namespace SHALL be maintained by FIG to encourage collaboration towards common API's.
Implementers MAY propose their interface be added to the list of qualified interfaces by following the instructions posted {here} after ensuring those interfaces qualify.
1.2 Qualified Interfaces
In order for an Interface to qualify for listing, the following conditions must be met:
All implementers offering the same type of qualified interface MUST be willing to collaborate towards a single, shared Interface.
The Interface MUST be licensed according to {FIG licensing}.
The Interface MUST be publicly available, at no charge, and packaged without concrete class(es).
The Interface MAY be packaged with other qualified Interfaces.
The Interface MUST conform to PSR-2 and PSR-4.
The Implementer MUST be willing that the Interface be available to FIG for consideration of becoming the source for a PSR and, if so selected, to be distributed by FIG.
Amy,
I still think it should be in the Spec (and continue to avoid external links citing them as part of the PSR) and I don’t think we should be able to remove/edit them, just append extra ones (make it an exception PSR for amending it).
--
Thanks,
Michael Cullum
--
You received this message because you are subscribed to the Google Groups "PHP Framework Interoperability Group" group.
To unsubscribe from this group and stop receiving emails from it, send an email to php-fig+u...@googlegroups.com.
To post to this group, send email to php...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/php-fig/d6bc99e1-f5f8-47c3-8005-1c3a9250fc37%40googlegroups.com.
I guess I don't have a good grasp at this stage of the concrete problems that such a PSR would be trying to solve.
In short, the reality is, since PSR-3, it's been a long dry spell.
Interoperability is a good goal and the group is right to focus on the purpose. But, I'm wondering, should the group do all of the heavy lifting? Make all of the decisions? It seems, perhaps, to be creating a bottleneck to progress. Maybe the goal would be easier to drive towards, maybe the results that much better, if efforts were directed towards setting the stage for broader involvement of those so inclined, those motivated, by preparing the soil, planting seeds, and in doing so, engage and empower the broader community. Stepping back and enabling others to make good things happen.
Towards that end, establishing a set of namespaces might help sketch out the lay of the land, as it were, for the kind of shared software present in so many software projects. Software that has been created multiple times, software that continues to be created, to accomplish the same purpose. Note: I am not of the belief that many projects each writing the same code is necessarily bad but I do believe the collective results are made better with interoperability.
A set of namespaces set aside for Interfaces that any PHP developer can use will help create focus on common API's. It will reinforce a culture of interoperability, an expectation that this shared space requires collaboration. The hope would be a qualified name of Api/Http/ResponseInterface, for example, could result in use by several projects and prompt them to independently collaborate in a cooperative fashion towards a common API.
That type of organic involvement really is more geared towards how open source communities work. We tend to be most productive with minor structure, enough to light the way, but a great deal of freedom and independence, and recognition for effort made.
Hope that helps explain some of the thinking behind this type of idea.
On Friday, 8 November 2013 08:43:01 UTC-5, Amy Stephen wrote:In short, the reality is, since PSR-3, it's been a long dry spell.You're forgetting about the caching PSR, which is still trundling along.
Yeah. I am also not convinced at all by the proposal for much of what paul said.
I also take issue with comments that we have not passed a psr for a while. That is irrelevant. Plenty of discussions and activity have been ongoing. Frequency of psrs is not a good measure of anything. Progress matters and getting things right.. Even if it takes a long time.
Silence is also golden. It doesn't hurt to have pause and also let things ferment. We do not need to fill the silence for the sake of it.
It would be much better to let current PSRs come to a resolution first IMO than create more noise.
Drak
--
You received this message because you are subscribed to the Google Groups "PHP Framework Interoperability Group" group.
To unsubscribe from this group and stop receiving emails from it, send an email to php-fig+u...@googlegroups.com.
To post to this group, send email to php...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/php-fig/dac57e36-3369-4f33-893d-e7f1aefa90d0%40googlegroups.com.
The API Commons, announced by 3scale and API Evangelist, provides a transparent mechanism for the copyright free sharing and collaborative design of API specifications, interfaces and data models.
--
You received this message because you are subscribed to the Google Groups "PHP Framework Interoperability Group" group.
To unsubscribe from this group and stop receiving emails from it, send an email to php-fig+u...@googlegroups.com.
To post to this group, send email to php...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/php-fig/dafbd32a-27a4-4882-b3cd-3edd3efa6770%40googlegroups.com.
Amy,I think this is confusing. API Commons is providing a licensing framework so it makes clear that APIs are not restricted by copyright - remember Oracle tried to sue Google because Android used the same interface names as some Java stuff they owned? And it also provides a way to machine read certain metadata about the API.
This is quite different to what you have proposed. I see Phil just posted something to that effect so I wont repeat that, but he pretty much "took the words out of my fingers" :)
Drak
This was also the point of Fabien Potencier and the reason why he left this group (https://groups.google.com/forum/#!msg/php-fig/b6UxDiug_jA/Gq9PiA_bQhwJ)
All we need is a common vendor name. "Api", as suggested by Amy, or "Interop" would be nice.
Although my work is not complete, these are the Interfaces I plan to share.
Using something like a shared "Api" root namespace with common second level names removes vendors from the equation entirely. My first thought when I heard about this was, "won't this lead to massive conflicts?" So I assumed I was misunderstanding. Based on this code, I don't think that I was... Just one example:If we promote this idea, there is nothing to stop two separate vendors from creating Api\Cache\CacheInterface interfaces. If they are not identical, won't this be very bad? Won't we have separate packages distributing the same interface with different proposed implementations?
...
Personally, I still see laying out a couple of shared "vendor name" nodes and a way to exchange Interfaces as helping to drive towards shared code. If FIG is interested, cool, if not, I'm still planning on sharing mine in this way and using "Api" and "Exception." The way I look at it, it certainly would not hurt to encourage collaboration in this way to see if it helps light a spark.
If we promote this idea, there is nothing to stop two separate vendors from creating Api\Cache\CacheInterface interfaces. If they are not identical, won't this be very bad? Won't we have separate packages distributing the same interface with different proposed implementations?
Yes, in fact, that would be the hope. The idea is to identify conflicts and encourage developers to work together towards common API's.
Said differently, what enables us to share Interfaces now? (Except for the Log Interface where we have a PSR?) There really is no packaging for it, the Interface comes in a package with concrete classes. So, if I want to use common Interfaces, I have to manually pull them out of other packages and I likely have to manually pull the Exception classes, as well.
In some cases, you want namespaces to separate work (which is what you are describing).
But, in this case, the idea would be to use namespaces to empower those developers who are interested in helping drive towards software commodization and common API's to have a way to do it. Today, that's just not easy to do.
However, what I see posted here looks like an attempt to write twenty new PSRs all at once, starting with the interfaces. I just don't think that is what the FIG is aiming to do. Shared interfaces like this would need to be so broad, i.e. so open and essentially empty, so they cater for implementations that have not been explored, that they would not be much use as a recommendation.
Understood. But, you guys are describing a system that prevents collusion, not one that promotes and enables collaboration.
Namespaces, through the implementation of the vendor prefix, ensures a lack of collusion -- and that mechanism is available for those who aren't looking to collaborate in this manner. I'm not suggesting that change. It enables sharing of software without namespace collusion.
What's missing is a common namespace that doesn't have a brand where Interfaces can be shared with those devs who want to collaborate and do so in a way that promotes interoperability of component-level software. If I want to use Project X's Interface today, I have to manually extract it from the concrete classes it's packaged. Manually check back and see if Project X made changes to the Interface. And, package their Interface with their namespace in my package.
The point is -- there is no enabling mechanism, no "unbranded vendor prefix", no packaging approach, for those who want to work on common Interfaces and APIs.
I went ahead and extracted my Interfaces from Molajo, put them into a CommonApi repository and packaged them by subsystem. I'll add some documentation and basic unit testing and see if others are interested. We really are missing the ability to work together in this manner. Maybe there are other ideas for how to remove those barriers without having to trust developers to work things out?
Anyway, it's clear this isn't an idea that FIG supports. In time, maybe someone will have an idea for how to support this type of peer-to-peer collaboration.
Appreciate the feedback.
I went ahead and extracted my Interfaces from Molajo, put them into a CommonApi repository and packaged them by subsystem. I'll add some documentation and basic unit testing and see if others are interested.
We really are missing the ability to work together in this manner. Maybe there are other ideas for how to remove those barriers without having to trust developers to work things out?
...
Anyway, it's clear this isn't an idea that FIG supports. In time, maybe someone will have an idea for how to support this type of peer-to-peer collaboration.
Jason -- It sounds like you understand the concept, but don't trust an organic, collaborative process to work out the collision issues. Personally, I believe developers looking to collaborate in this area can use a shared namespace for this purpose and they would resolve collisions without oversight. I don't see a cognitive problem that would require explaining it to a five year old, but rather a difference of opinion on how it might or might not play out.
On Wednesday, 27 November 2013 16:12:02 UTC, Amy Stephen wrote:Jason -- It sounds like you understand the concept, but don't trust an organic, collaborative process to work out the collision issues. Personally, I believe developers looking to collaborate in this area can use a shared namespace for this purpose and they would resolve collisions without oversight. I don't see a cognitive problem that would require explaining it to a five year old, but rather a difference of opinion on how it might or might not play out.
Nothing to do with trust. I just don't understand the mechanism. There are a lot of loaded words: organic, collaborative, oversight - what do you mean by these things. It's ambiguous. I am not trying to argue against this, or pushing an alternative opinion. I *really* do not understand how this proposal would work, and what its expected or desired outcomes are.
On Nov 27, 2013, at 11:37 AM, Amy Stephen <amyst...@gmail.com> wrote:
> It's a simple concept -- define a high level vendor name (ex. "Api") that developers are encouraged to use for Interfaces that they are willing to share and work towards common definitions.
If you want to pursue this, I assert that the top-level vendor name needs to be something a lot more specific than "Api" or "CommonApi" or anything that carries even a whiff of being generic. I am not pro or con at this point, but a generic name is asking for trouble.
On Wednesday, November 6, 2013 4:37:27 PM UTC-6, Amy Stephen wrote:
Examples of two level namespace prefixes that could be added to and maintained on the Wiki:
- Api\Authorisation
- Api\Cache
- Api\Controller
- Api\Database
- Api\Email
- Api\Event
- Api\Filesystem
- Api\Http
- Api\IoCC
- Api\Language
- Api\Log
- Api\Model
- Api\Route
- Api\Render
- Api\User
I mean that the top-level vendor name should not be generic in any way. DO what you like beneath that, but the top-level name needs to be something very non-generic. "AmysInterfaces" or something like that, not merely "Api", "CommonApi", "SharedStandards", etc.
You mean me, personally? If so, I would just kept them Molajo. Kind of defeats the purpose of creating a non-branded vendor name that can be shared by multiple developers to make it a brand. =)
--justin
Would that strike the right balance to enable cooperative, organic cooperation without collusion?
I'd like to gauge interest in a simple PSR for a simple, two-level shared namespace for Interfaces. (This approach is supported by PSR-4 -- meaning it fits the rules and should work with a compatible autoloader).
My thinking is in offering a small amount of structure (two-levels) and a shared namespace (examples below), it could help encourage organic collaboration in the PHP community between willing projects where it does not require as much discussion and collaboration as a PSR.
Many projects have fantastic full sets of Interfaces which have untapped potential driving interoperability. Over time, these independent efforts would likely to gain support and become a defacto standard that might (or might not) gain official sign-off as a PSR and then use the PSR namespace.
Over the years, in observing open source communities, it seems a little structure, a lot of freedom, and recognition for work well done, lead to innovation. I have found myself thinking about how FIG might build some energy and involvement around its important mission and introduce those opportunities for the broader PHP community to collaborate along common goals.
Towards that end, I offer this idea for your consideration.
Hi Amy,I think this idea is interesting. David Négrier and I have been discussing lately (here and there) regarding a PSR for Dependency Injection Containers, especially a ContainerInterface. That interface would allow a first form of interoperability between containers.However, I agree with the general consensus that there is no point building a standard on something that doesn't already exists and that we have experience with. So the first step would be to test such an interface (or several interfaces?) in the wild, and see if it solves the problem and should be made into a PSR.So what David and I thought was very close to what you suggest, limited to container interfaces. So hey, we could work together!However, there are things that I'm not really sure about what you started:- you have already created loads of sub-projects (IoC, controllers, Http, Cache, …) with code. I thought there was going to be discussions, and iterations before ending up with interfaces. The subjects are so different from one another I think it would be best to start from 0 projects, 0 code, and create them when enough people show interest and can agree on something.- for example, right now I don't agree on the IoC interfaces and I would love to discuss all this and understand how it ended up the way it is, and maybe change it.- I also think those projects should start in "beta" version, because coming up from start with a 1.0 "stable" version means we can already start a PSR. It also sends the message that this is stable, good and bulletproof. Which is not, unless I don't see it the way you do. Maybe they should even be only non-stable versions. Because what's the goal of all this, if not testing and iteratively build interfaces until we feel confident we can take it to a PSR?Anyway, that's a good thing you started, I hope we can lead it somewhere.Matthieu
Cool. The packages are tagged v. 0.1.0 Alpha. I am most certainly open to change (in fact, that's kind of the point, to work with others towards common definitions). Be glad to add you for the IoC repository. I'll email you and we can discuss.