1
1
mirror of https://github.com/github/semantic.git synced 2024-11-28 01:47:01 +03:00
semantic/ROADMAP.md
Rob Rix 82bd0bf579 Split up the work project-wise.
🎩 @joshvera @tclem for this breakdown.
2017-04-28 11:33:09 -04:00

2.5 KiB
Raw Blame History

Semantic Roadmap

Semantic Code produces data around codes structure and meaning. This is made available via GraphQL APIs, enabling others (both at GitHub and elsewhere) to build features.

GraphQL APIs

  • Parse tree.
  • Diff.
  • Repository and/or project-level
    • Dependencies
    • Some sort of persistence to “link” together different parse trees/repositories/etc

LSP integration

Enables:

  • Find References from blobs
  • Go To definition
  • Find workspace symbols

Tasks:

  • Hosting language servers
  • Hosting LSP servers in containers
  • Persistence or caching of requests

Semantic analysis

  • À la carte syntax
  • Cyclomatic complexity
  • Modular abstract interpreters
  • Type inference
    • Is this program well-typed?
    • What is the type at any particular node?

Language support

  • Python

Operability/Production readiness

  • Containerization/-as-a-service architecture
  • Caching
  • Performance
  • Security review of tree-sitter
  • Resolving tree-sitter error recovery hangs

ToC

  • Performance with large parse trees
  • Depends on improved operability
  • Production ready tree-sitter
  • ToC in Enterprise

Ongoing work:

  • Extend/improve the data provided via GraphQL. API consumers will have to specifically opt in to any new fields in order to receive them. This is our core.

    Examples: type signatures, parse/type errors, callers/callees, labelling symbol declarations (for e.g. jump to…/ToC as well as code search), linking symbol references to declarations.

  • Extend the set of supported languages, guided by data on language usage. Provide/improve tooling for writing/testing tree-sitter grammars. Review contributions to open-source grammars. Automate as much as possible to keep us focused on the core. Can we reduce/offload this in other ways?

  • Performance improvements.

  • Resiliency improvements/maintenance/operational excellence.

  • Metrics. How does it perform, how are people using it, what data do people care about, what dont they use at all.

High-level goals:

  • Production ready in Q3 2017.
  • Help developers understand, navigate, and improve their code.
  • Lower barriers to contributions, e.g. by eliminating conflicts from renaming variables.

See also our roadmap project.