You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The goal of the OAI specification is to define a standard, language-agnostic interface to REST APIs which allows both humans and computers to discover and understand the capabilities of the service without access to source code, documentation, or through network traffic inspection. When properly defined, a consumer can understand and interact with the remote service with a minimal amount of implementation logic. Similar to what interfaces have done for lower-level programming, Swagger removes the guesswork in calling the service.2
However, these goals do not necessarily map to lower level decision criteria when looking at issues/proposals/pull requests. How does OAI/TDC resolve two competing and conflicting proposals which both satisfy the above goals?
Examples of questions/proposal in need of guiding principles:
"If OpenAPI wants to be agnostic about design-first vs code-first, then the specification has to be able to adequately describe real world APIs. I don't think any decisions about inclusion in the specification should be determined by how easy or hard it is for a tool to implement. That is a problem that can be solved elsewhere, and if tool authors don't want to deal with it, then let them implement workarounds. By omitting something like this from the spec entirely you just force the problem on the users."Support for Either #57comment.
I suggested drafting a set of Guiding Principles which can be used to concretely evaluate proposals.
For some examples of Guiding Principles to consider:
to what degree does tooling support (Swagger UI, Swagger Editor, Swagger codegen and hundreds/thousands of other tools) impact specification decisions?
To what degree to we rely on the crutch/claim "tooling can improving the experience"
How much do we weigh the ability to capture RESTful designs (such as HATEOAS) first and foremost, vs. toolability?
Convention over configuration. (Does a path parameter really, really have to have a required, explicit required: true?)
Does a lowest common denominator (such as target language/library etc.) skew OAS design choices?
How highly do we value making OAS documents readable/understandable/editable by humans?
There's a tension between "meeting developers where they are" and making value judgements and promoting good practices. One feature of OpenAPI that will help it and the API ecosystem grow is abstraction. By allowing implementation details to be hidden by generated code or other adaptors, OpenAPI can make it easier for more people to be API developers and users. But this requires high-quality tooling, and adding complexity to the spec to include more stakeholders makes that more difficult.
There is a purpose statement on the home page of the Open API Initiative: "Open API Initiative (OAI) is focused on creating, evolving, and promoting a vendor neutral API Description Format based on the Swagger Specification." But the value of that isn't directly stated. The best justification that I could find is on the About page: "Creating an open description format for API services that is vendor neutral, portable and open is critical to accelerating the vision of a truly connected world." Based on that, "meeting developers where they are" is true to the Open API mission, but as I hinted above, I don't think that's the same as making it possible for more people to easily create and use APIs, which would include picking and promoting best practices that can be well-supported by automation and accessible to future users.
There are some high level goals for OAI/OAS:
However, these goals do not necessarily map to lower level decision criteria when looking at issues/proposals/pull requests. How does OAI/TDC resolve two competing and conflicting proposals which both satisfy the above goals?
Examples of questions/proposal in need of guiding principles:
merge
construct #674 comment Group multiple parameter definitions for better maintainability Overlay-Specification#34 commentI suggested drafting a set of Guiding Principles which can be used to concretely evaluate proposals.
For some examples of Guiding Principles to consider:
required: true
?)etc
We may not be able to get purely objective criteria, but then again, principles are usually more subjective than objective.
The text was updated successfully, but these errors were encountered: