The project should better demarcate what is API and what is not
See original GitHub issueCurrently it is not crystal clear what is API and what is not.
Clearly top level classes such as GraphQL and ExecutionStrategy are API
But what about graphql.execution.Execution
or graphql.execution.ValuesResolver
. Are they API or implementation detail?
If we had to add new aspects to these classes and changed constructors etc are we breaking consumers?
I suggest that the API be made more clear.
Annotations are a great way to do this. The project could have 3 new annotations
@PublicAPI (things you can call and wont change) @PublicSPI (things you are meant to implement) @Internal (public things that are not API and may change)
This will allow the project to better keep semver
sematics while evolving as necessary.
Issue Analytics
- State:
- Created 7 years ago
- Reactions:4
- Comments:6 (6 by maintainers)
Top Results From Across the Web
API products, not API projects - MuleSoft Blog
By having clear lines of demarcation between Amazon's software ... You can explore this “API products, not API projects” approach in greater ...
Read more >What Is an API? How APIs Improve Application Development
Application programming interfaces (APIs) make software development and innovation easier by allowing programs to communicate data and functions ...
Read more >What is an API: Definition, Types, Specifications, Documentation
API stands for Application Programming Interface. This post will explain what APIs are, how they work, and why you should care about them...
Read more >What is an Application Programming Interface (API)? - IBM
Application programming interfaces, or APIs, simplify software development by enabling applications to exchange data and functionality ...
Read more >10 ways to modernize your API strategy - Axway
APIs are a simple concept: they connect data to create new digital experiences. If we look at the IT modernization trends driving digital...
Read more >
Top Related Medium Post
No results found
Top Related StackOverflow Question
No results found
Troubleshoot Live Code
Lightrun enables developers to add logs, metrics and snapshots to live code - no restarts or redeploys required.
Start Free
Top Related Reddit Thread
No results found
Top Related Hackernoon Post
No results found
Top Related Tweet
No results found
Top Related Dev.to Post
No results found
Top Related Hashnode Post
No results found
I agree on .internal in the package name as well as .api in the packages however that would be a major breaking change.
Ideally it would be
and
the use of annotations are a way to not break current API while better documenting what is API
regarding
@Internal
i think puttinginternal
in package name is a good practice