# Semantic Roadmap Semantic Code produces data around code’s structure and meaning. This is made available via GraphQL APIs, enabling others (both at GitHub and elsewhere) to build features. ### GraphQL APIs - Parse tree. - Integration with code search 2.0 - [Semantic notifications](https://github.com/github/semantic-diff/issues/744) - Diff. - Repository and/or project-level (semantic index) - 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](https://github.com/github/semantic-diff/projects/8) - 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 don’t 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][]. [roadmap project]: https://github.com/github/semantic-diff/projects/5 [navigate]: https://github.com/github/semantic-diff/issues/909 [renaming variables]: https://github.com/github/semantic-diff/issues/91