question-mark
Stuck on an issue?

Lightrun Answers was designed to reduce the constant googling that comes with debugging 3rd party libraries. It collects links to all the places you might be looking at while hunting down a tough bug.

And, if you’re still stuck at the end, we’re happy to hop on a call to see how we can help out.

The project should better demarcate what is API and what is not

See original GitHub issue

Currently 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:closed
  • Created 7 years ago
  • Reactions:4
  • Comments:6 (6 by maintainers)

github_iconTop GitHub Comments

1reaction
bbakermancommented, Dec 28, 2016

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

 graphql.api.AnApiClass

and

graphql.internal.InternalImplementationClass

the use of annotations are a way to not break current API while better documenting what is API

1reaction
Jimexistcommented, Dec 26, 2016

regarding @Internal i think putting internal in package name is a good practice

Read more comments on GitHub >

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

github_iconTop Related Medium Post

No results found

github_iconTop Related StackOverflow Question

No results found

github_iconTroubleshoot Live Code

Lightrun enables developers to add logs, metrics and snapshots to live code - no restarts or redeploys required.
Start Free

github_iconTop Related Reddit Thread

No results found

github_iconTop Related Hackernoon Post

No results found

github_iconTop Related Tweet

No results found

github_iconTop Related Dev.to Post

No results found

github_iconTop Related Hashnode Post

No results found