githubv4 icon indicating copy to clipboard operation
githubv4 copied to clipboard

Roadmap.

Open dmitshur opened this issue 8 years ago • 1 comments

This issue provides a rough roadmap to give you an idea of the development status, and the remaining planned work.

Roadmap

Currently Implemented

  • [x] Basic and intermediate queries.
  • [x] All mutations.
  • [x] Query minification before network transfer.
  • [x] Scalars.
    • [ ] Improved support (https://github.com/shurcooL/githubql/issues/9).
  • [x] Specifying arguments and passing variables.
  • [x] Thorough test coverage.
    • [x] Initial basic tests (hacky but functional).
    • [x] Better organized, medium sized tests.
  • [x] Aliases.
    • [ ] Documentation.
    • [x] Improved support.
  • [x] Inline fragments.
    • [x] Documentation.
  • [x] Generate all of objects, enums, input objects, etc.
    • [x] Clean up GitHub documentation to pass golint.
  • [x] Unions.
    • [x] Functional.
    • [x] Improved support (https://github.com/shurcooL/githubql/issues/10).
  • [x] Directives (haven't tested yet, but expect it to be supported).
  • [ ] Research and complete, document the rest of GraphQL features.
  • [ ] Fully document (and add tests for edge cases) the graphql struct field tag.
  • [x] Extremely clean, beautiful, idiomatic Go code (100% coverage, 0 lines of hacky code).
    • [x] Document all public identifiers.
    • [x] Clean up implementations of some private helpers (currently functional, but hacky).

Future

  • [x] GitHub Enterprise support (~~when it's available; GitHub themselves haven't released support yet;~~ GitHub has released it now). Using issue #23 to track this feature.
  • [x] Frontend support (e.g., using githubql in frontend Go code via WebAssembly or GopherJS).
  • [ ] Local error detection (maybe).
  • [ ] Calculating a rate limit score before running the call.
  • [ ] Avoiding making network calls when rate limit quota exceeded and not yet reset.
  • [ ] Support for OpenTracing.

Known Unknowns

  • Whether or not the current API design will scale to support all of advanced GraphQL specification features, and future changes. So far, things are looking great, no major blockers found. I am constantly evaluating it against alternative API designs that I've considered and prototyped myself, and new ones that I become aware of.
  • I have only explored roughly 80% of the GraphQL specification (Working Draft – October 2016).
  • Performance, allocations, memory usage under heavy workloads in long-running processes.
  • Optimal long-term package/code layout (i.e., whether to split off some of the parts into smaller sub-packages).

dmitshur avatar Oct 17 '17 18:10 dmitshur

Good news, I've just checked off the following box:

  • [x] Directives (haven't tested yet, but expect it to be supported).

I've tested GraphQL directives and they work well with githubql. They're actually quite handy for some queries.

(In my situation, I wanted to get all comments of an issue, including the issue description, while performing pagination, but only get the issue comment on the first page. Directives made it easy to only get the issue description on the first page of results. See https://github.com/shurcooL/issues/commit/36fff28db4d1f8abcc8bce30659f0ad759331307, grep for firstPage in that commit.)

dmitshur avatar Feb 13 '18 22:02 dmitshur