2017-04-27 21:35:47 +03:00
# Semantic Roadmap
2015-09-15 23:25:02 +03:00
2017-04-27 21:35:47 +03:00
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.
2016-09-13 17:51:25 +03:00
2017-05-15 17:45:16 +03:00
See also our [roadmap project][] for our current efforts.
2017-04-28 18:33:09 +03:00
2017-05-15 17:07:23 +03:00
## Objectives
2017-05-01 19:04:55 +03:00
2017-05-15 17:58:59 +03:00
- [Run a resilient, scalable service ](#run-a-resilient--scalable-service )
2017-05-01 19:04:55 +03:00
- Help developers understand, [navigate][], and improve their code.
2017-05-15 17:58:59 +03:00
### Run a resilient, scalable service
Our service should operate with a minimum of headaches. Our service should scale with GitHub’ s customer base and our language support.
Task | PRP | Priority (1 to 3) | Amount of work (1 to 4)
---- | --- | ----------------- | -----------------------
Production readiness | @tclem | 1 | 3
2017-04-28 18:33:09 +03:00
### GraphQL APIs
2015-09-15 23:26:31 +03:00
2017-04-27 21:35:47 +03:00
- Parse tree.
2017-04-28 21:40:10 +03:00
- Integration with code search 2.0
2017-04-28 21:43:24 +03:00
- [Semantic notifications ](https://github.com/github/semantic-diff/issues/744 )
2017-04-27 21:35:47 +03:00
- Diff.
2017-04-28 21:40:10 +03:00
- Repository and/or project-level (semantic index)
2017-04-28 18:33:09 +03:00
- Dependencies
2017-04-28 21:40:10 +03:00
- Some sort of persistence to “link” together different parse trees/repositories/etc.
2017-04-28 18:33:09 +03:00
2017-05-01 19:04:55 +03:00
**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.
2017-04-28 18:33:09 +03:00
### LSP integration
Enables:
- Find References from blobs
- Go To definition
- Find workspace symbols
2017-05-01 19:04:55 +03:00
**Ongoing Work:**
2017-04-28 18:33:09 +03:00
- 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?
2017-05-01 19:04:55 +03:00
**Ongoing Work:**
- 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.
2017-04-28 18:33:09 +03:00
### Language support
- Python
2017-05-01 19:04:55 +03:00
**Ongoing Work:**
- 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?
2017-04-28 18:33:09 +03:00
### 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
2016-07-05 17:41:05 +03:00
2017-05-01 19:04:55 +03:00
**Ongoing Work:**
- 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.
2016-07-05 17:41:05 +03:00
2017-04-28 18:33:09 +03:00
### ToC
2016-01-06 20:59:58 +03:00
2017-04-28 18:33:09 +03:00
- Performance with large parse trees
- Depends on improved operability
- Production ready tree-sitter
- ToC in Enterprise
2016-07-05 17:41:05 +03:00
2016-01-06 21:05:42 +03:00
2016-09-13 17:51:25 +03:00
[roadmap project]: https://github.com/github/semantic-diff/projects/5
2017-04-27 21:35:47 +03:00
[navigate]: https://github.com/github/semantic-diff/issues/909