Skip to content

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

@bbakerman

Description

@bbakerman

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions