Skip to content
This repository has been archived by the owner on Sep 30, 2024. It is now read-only.

Code Intelligence 3.22 Tracking issue #14802

Closed
efritz opened this issue Oct 16, 2020 · 12 comments
Closed

Code Intelligence 3.22 Tracking issue #14802

efritz opened this issue Oct 16, 2020 · 12 comments
Assignees
Labels
team/graph Graph Team (previously Code Intel/Language Tools/Language Platform) tracking
Milestone

Comments

@efritz
Copy link
Contributor

efritz commented Oct 16, 2020

Plan

Goal: Provide precise code intel for the primary programming languages that combined cover > 50% of usage across customer projects. Garo is forging ahead with lsif-clang bugs, and will aim to index 10 more open source repositories as preparation to ship to a wider audience. Noah is forging ahead with lsif-java features, and will aim to have Gradle support by the end of the milestone.

Goal: LSIF indexers can operate in monorepos architecture. Garo will be merging their work on incremental indexing into the main branch of the relevant repositories. After this is complete, we should be able incrementally index source code in customer environments (for at least Go) and accept partial indexes in the backend.

Goal: Provide best effort auto-indexing for supported languages. Eric will continue building out the auto-indexing infrastructure so we can provide a wide coverage of code intelligence in the cloud environment. By the end of the milestone we should have updated metrics and UI, and will deep-dive into errors we see currently in production to harden the system and make it more reliable.

Uncategorized. Eric and Maria will also be spending time updating metrics, pings, and documentation across the code intelligence feature space.

Availability

If you have planned unavailability this iteration (e.g., vacation), you can note that here.

@efritz 21d
@macraig 21d
@gbrik 14d
@Strum355 20d (26/10/2020)

Tracked issues

@Strum355

  • lsif-java: Tracking issue (#14564)
    • Potential for numerous files to be missed on indexing (#35)
    • hovers for stdlib and cross repo symbols (#54)
    • Maven support (#56)
    • Javadoc links support (#57)
    • Java record hover text (#66)
    • Improve gradle project meta inference (#70; PRs: #74)
    • Transform Javadoc hovers to Markdown hovers (#76)
    • WIP: Intercepting of javac calls with gradle (#78) :shipit:
    • WIP: JDK 8 (+?) Standard Library Hovers (#80) :shipit:
    • (🏁 21 days ago) Gradle support (#42)
    • (🏁 32 days ago) reference before definition emitted causes miss (#53)
    • (🏁 27 days ago) JRE <15 compatibility (#55; PRs: #65)
    • (🏁 24 days ago) lsif-java: cross/same-file references (prev. same-file only) (#59)
    • (🏁 35 days ago) lsif-java: cross-file references (#60)
    • (🏁 15 days ago) Unexpected hover data for Enum value (#62; PRs: #75)
    • (🏁 31 days ago) First iteration of gradle: fetching of source directories and classpath (#63) :shipit:
    • (🏁 22 days ago) Decoupled filetree visitor from DocumentIndexer type and tracking javac error count (#68) :shipit:
    • (🏁 8 days ago) First pass external dependency hovers (#77) :shipit:
  • WIP: Pass one of backward-cpp based backtraces on failure (#32) :shipit:

Completed

  • (🏁 35 days ago) lsif-java: cross-file references (#60)
  • (🏁 32 days ago) reference before definition emitted causes miss (#53)
  • (🏁 31 days ago) First iteration of gradle: fetching of source directories and classpath (#63) :shipit:
  • (🏁 27 days ago) JRE <15 compatibility (#55; PRs: #65)
  • (🏁 24 days ago) lsif-java: cross/same-file references (prev. same-file only) (#59)
  • (🏁 22 days ago) Decoupled filetree visitor from DocumentIndexer type and tracking javac error count (#68) :shipit:
  • (🏁 21 days ago) Gradle support (#42)
  • (🏁 15 days ago) Unexpected hover data for Enum value (#62; PRs: #75)
  • (🏁 14 days ago) Build meta from gradle init script (#74) :shipit:
  • (🏁 8 days ago) First pass external dependency hovers (#77) :shipit:
  • (🏁 1 day ago) Added check for invalid utf8 doc string and cleaning (#31) :shipit:

@efritz: 13.00d

  • 🚚 LSIF-Go Delivery (#13015)
  • Update RFC 236 (#14007) 1.00d
  • LSIF quickstart is not quick (#14422) 1.00d
  • codeintel: Topologically sort git log in gitserver (#14618) 0.50d 🧶
  • Write POC LSIF indexer testing utility (#14821) 1.00d
  • codeintel: git diffing fails graphql requests related to force-pushed commits (#12588) 0.50d 🐛

Completed: 9.00d

  • (🏁 32 days ago) codenotify: Update db package (#14842) :shipit:
  • (🏁 25 days ago) codeintel: Update index UI pages (#14550) :shipit:
  • (🏁 25 days ago) db: Prevent frontend from starting if codeintel-db == frontend db (#14881) :shipit:
  • (🏁 22 days ago) codeintel: Fix bad error reference (#15117) :shipit:
  • (🏁 21 days ago) codeintel: Store commits as bytea in lsif_nearest_uploads (#14679) :shipit:
  • (🏁 20 days ago) doc: Update codeintel sequence diagrams (#15200) :shipit:
  • (🏁 18 days ago) codeintel: Stop writing to duplicate commit column (#15190) :shipit:
  • (🏁 17 days ago) codeintel: Consolidate periodic jobs into frontend (#15136) :shipit:
  • (🏁 17 days ago) debugserver: Explicit shutdown (#15282) :shipit:
  • (🏁 17 days ago) Tracking issue: Generic user code executor (#14822) 2.50d
  • (🏁 16 days ago) dead code: Remove unused codeintel store methods (#15356) :shipit:
  • (🏁 16 days ago) dead code: Remove Update function from commit updater (#15358) :shipit:
  • (🏁 16 days ago) dead code: Remove tar package (#15359) :shipit:
  • (🏁 16 days ago) dead code: Remove unused gitserver methods (#15357) :shipit:
  • (🏁 16 days ago) dead code: Remove unused bundle manager client methods (#15364) :shipit:
  • (🏁 16 days ago) dead code: Remove unused bundle manager client methods (#15366) :shipit:
  • (🏁 16 days ago) dead code: Remove unused retry mechanism (#15368) :shipit:
  • (🏁 16 days ago) codeintel: Remove call to bundle manager in query path (#15369) :shipit:
  • (🏁 16 days ago) precise-code-intel-tester: Fix regex pattern (#15372) :shipit:
  • (🏁 15 days ago) codeintel: Inline calls to the upload store in the upload handler (#15375) :shipit:
  • (🏁 15 days ago) codeintel: Remove calls to bundle manager from worker (#15374) :shipit:
  • (🏁 15 days ago) dead code: Remove unused bundle manager client methods (#15405) :shipit:
  • (🏁 15 days ago) dead code: Remove unused lsifstore method (#15404) :shipit:
  • (🏁 15 days ago) dead code: Remove unused code around bundle manager ctor (#15407) :shipit:
  • (🏁 15 days ago) codeintel: Flatten bundle manager client (#15408) :shipit:
  • (🏁 15 days ago) codeintel: Clean up dead persistence files (#15411) :shipit:
  • (🏁 15 days ago) codeintel: Refactor bundle interfaces (#15371) :shipit:
  • (🏁 15 days ago) dead code: Remove sqlite batch inserter (#15360) :shipit:
  • (🏁 15 days ago) codeintel: Remove serializer interface (#15419) :shipit:
  • (🏁 15 days ago) dead code: Remove close methods on lsif stores (#15421) :shipit:
  • (🏁 15 days ago) codeintel: Remove sqlite from build process (#15422) :shipit:
  • (🏁 15 days ago) codeintel: Add bundle id to bundle store methods (#15424) :shipit:
  • (🏁 15 days ago) codeintel: Add bundle id to bundle database methods (#15425) :shipit:
  • (🏁 15 days ago) chore: Move dumpID field assignment into bundle database layer (#15468) :shipit:
  • (🏁 15 days ago) codeintel: Use one store instance in bundle manager client (#15469) :shipit:
  • (🏁 14 days ago) codeintel: Remove bundle manager client (#15474) :shipit:
  • (🏁 14 days ago) codeintel: Remove enterprise/internal/codeintel/bundle/client package (#15481) :shipit:
  • (🏁 14 days ago) codeintel: Remove enterprise/internal/codeintel/bundles/persistence/s… (#15485) :shipit:
  • (🏁 14 days ago) codeintel: Remove enterprise/internal/codeintel/bundles/persistence/postgres package (#15487) :shipit:
  • (🏁 14 days ago) codeintel: Merge LSIF stores (#15489) :shipit:
  • (🏁 14 days ago) codeintel: Merge bundle database into LSIF store (#15492) :shipit:
  • (🏁 14 days ago) codeintel: Remove enterprise/internal/codeintel/bundles/types package (#15494) :shipit:
  • (🏁 14 days ago) codeintel: Remove enterprise/internal/codeintel/bundles package (#15495) :shipit:
  • (🏁 14 days ago) codeintel: Reorganize files/defs in lsifstore package (#15496) :shipit:
  • (🏁 14 days ago) codeintel: Inline commits updater into the periodic handler (#15497) :shipit:
  • (🏁 14 days ago) codeintel: Move httpapi package into enterprise/cmd/frontend/internal (#15498) :shipit:
  • (🏁 14 days ago) codeintel: Remove dead queue package (#15499) :shipit:
  • (🏁 14 days ago) codeintel: Move auto-indexing packages (#15501) :shipit:
  • (🏁 14 days ago) codeintel: Move resolver/api packages (#15502) :shipit:
  • (🏁 14 days ago) codeintel: Rename uploadstore package (#15504) :shipit:
  • (🏁 14 days ago) codeintel: Group store packages in subdir (#15505) :shipit:
  • (🏁 14 days ago) chore: Match package name to directory (#15507) :shipit:
  • (🏁 14 days ago) codeintel: Remove bundle manager url envvar (#15508) :shipit:
  • (🏁 11 days ago) codeintel: Remove bundle manager (#15490) :shipit:
  • (🏁 10 days ago) codeintel: Remove observability layers (#14609; PRs: #15534) 1.00d 🧶
  • (🏁 10 days ago) codeintel: Update metrics (#15541) :shipit:
  • (🏁 10 days ago) doc: Add page on how to add support for a language (#15594) :shipit:
  • (🏁 10 days ago) language support: Treat pc/pcc files as C/C++ (#15595) :shipit:
  • (🏁 9 days ago) Tracking issue: Remove the precise code intel bundle manager (#14820) 3.00d
  • (🏁 8 days ago) Go to definition takes me to wrong line; wrong tokens highlighted on hover (#14015) 🐛
  • (🏁 8 days ago) event_logs: Reduce query expression duplication (#15665) :shipit:
  • (🏁 8 days ago) event_logs: Collect codeintel and search data separately (#15666) :shipit:
  • (🏁 6 days ago) Update code intelligence ping data (#14574; PRs: #15635) 0.50d
  • (🏁 4 days ago) Add total number of unique users on code intel to pings (#14673; PRs: #15635) 0.50d
  • (🏁 3 days ago) codeintel: Add feature flags for auto-indexing (#15804) :shipit:
  • (🏁 3 days ago) codeintel: Retry pulling upload from MinIO (#15808) :shipit:
  • (🏁 3 days ago) codeintel: Drop unused commit column (#15192) :shipit:
  • (🏁 1 day ago) doc: Update codeintel indexer docs (#15818) :shipit:
  • (🏁 1 day ago) RFC 201: Tracking issue (#13891) 1.50d

@gbrik

  • doesn't work on arch linux (#1) 🐛
  • Create successful and reproducible indexes of 20 OSS repos (#12)
  • remove all the dead code (#19)
  • no output produced for seemingly well-formed compile_commands.json (#4) 🐛
  • merge MVP of incremental indexing (#14863)

Completed

  • (🏁 14 days ago) fix imports (#24) :shipit:
  • (🏁 4 days ago) definitions aren't output for templates (#14; PRs: #28) 🐛
  • (🏁 today) add LSIF repl (#15987) :shipit:

@macraig: 1.00d

Completed: 1.00d

  • (🏁 15 days ago) Find reference & go to definition not showing up sometimes (sourcegraph.com) (#13802) 0.50d 🐛
  • (🏁 6 days ago) Update code intelligence ping data (#14574; PRs: #15635) 0.50d

Legend

  • 👩 Customer issue
  • 🐛 Bug
  • 🧶 Technical debt
  • 🎩 Quality of life
  • 🛠️ Roadmap
  • 🕵️ Spike
  • 🔒 Security issue
  • :shipit: Pull Request
@efritz efritz added team/graph Graph Team (previously Code Intel/Language Tools/Language Platform) tracking labels Oct 16, 2020
@efritz efritz added this to the 3.22 milestone Oct 16, 2020
@efritz efritz assigned efritz, macraig, shrouxm and Strum355 and unassigned efritz Oct 16, 2020
@macraig macraig changed the title WIP: Code Intelligence 3.22 Tracking issue Code Intelligence 3.22 Tracking issue Oct 23, 2020
@macraig
Copy link
Contributor

macraig commented Oct 23, 2020

Last Week [Oct 19 to Oct 23]

  • Migrated all GitHub projects to new Iterations and Backlog projects
  • Cleaned/followed up on some issues that were stale
  • Wrote the first version of Indexing a popular Go repo tutorial
  • Gathered info and docs to prepare for CE training session
  • Started documenting State of Indexers and when should we consider an indexer ready

Next Week [Oct 26 to Oct 30]

  • Tweak tutorial to make it useful for both CE team and general public users
  • Discuss and document the indexer's breakdown with the team to unblock roadmap revision

@efritz
Copy link
Contributor Author

efritz commented Oct 23, 2020

General notes

We began revisiting our team's goals. I don't think our plan is wrong, but the prose we use to describe it in our team page and in the product roadmap has been identified as problematic. We're having meetings as a team to better define the terminology we need to effectively communicate this to the greater Sourcegraph community. Doing this before a new manager onboards will certainly help them understand/align with the current heading of the team more effectively.

Completed 2020/10/20-23

Wrote and received approvals for RFC 253: Sunset the bundle manager. Started implementing the storage layer to replace the bundle manager so we can remove an entire service worth of complexity from the the code intel path. Waiting on reviews.

Met with @AlicjaSuska to get feedback on the code intel administrative UI and reworked it visually. This was a necessary pre-step to adding additional features into these pages (particularly the configuration of auto-index jobs) as the code was written by a react amateur (still am, but was too) in a way that would have made it tedious to modify. Feels nice now. Waiting on an approval from someone who knows frontend things.

Met with @sourcegraph/campaigns to have them live-review some PRs for the auto-indexer code. I am currently refactoring the auto-indexer code into a generic firecracker executor service, and a generic queue service that feeds the executor jobs. This may or may not be used by campaigns or other teams in the future, but was still an effective way to refresh the code now that we understand the use cases a little better. Code is organized better and the tests are more comprehensive. These reviews are approved and I'm waiting to merge these Monday.

Planned 2020/10/26-30

Will merge the approved executor/executor-queue PRs and continue working on https://github.com/sourcegraph/sourcegraph/issues/14822. The work here is already done in an experimental branch, so I just have to cut the remaining pieces into digestible PRs. The remainder of the work only affects the executor proxy in the frontend to the (which already exists as the precise-code-intel-indexer service, but targets slightly different routes). The deployment of this code should coincide with the deployment of the new executors in the sourcegraph-code-intel GCP project. Not doing so will make it so nothing is consuming the index queue.

Will continue to excise the bundle manager from the rest of the code base. The hard part here is mostly done. The rest may go slowly but it's due to deployment barriers (simply the turn around time of having something merged into cloud).

Might try to select a few of the open issues that aren't nested in another tracking issue to get them out of the way. Then, I'll jump back into https://github.com/sourcegraph/sourcegraph/issues/13891 as my next big focus.

@Strum355
Copy link
Contributor

Strum355 commented Oct 23, 2020

Completed 2020/10/20 - 2020/10/23

  • Basic gradle integration that works for standard single-project scenarios
  • Above integration has some support for multi-project scenarios (symbol resolving is whack, has not been dove into)
  • Completed rewrite to Kotlin to support JRE 8+ while also having all the comfy niceties of Kotlin (espc regarding nulls)

Planned 2020/10/27 - 2020/10/30

  • Improve multi-project scenarios, may involve compiling depending sources on demand TBD
  • Explore using gradle init scripts with the tooling API for a more buildscript querying capabilities than the tooling API generally exposes to us (bad gradle 😠 )
  • Maybe explore some concurrency/multithreading if I have the time

@macraig
Copy link
Contributor

macraig commented Oct 30, 2020

Last Week [Oct 26 to Oct 30]

  • Synced with the team to define our indexer breakdown steps.
  • Attended some IDE summit talks
  • Second draft of Indexing Go repo tutorial ready

Next Week [Nov 2 to Nov 6]

  • Finish polishing tutorial, split into more docs and add them to docs page
  • Start working on new version of goals and roadmap
  • Prep and hold CE deep dive

@efritz
Copy link
Contributor Author

efritz commented Nov 1, 2020

Completed 2020.10.26-30

Got very sidetracked by the surprise IDE summit so didn't make as much progress as I had planned. MinIO containers have been added to all deployment environments, and we have the cloud instance pointed to GCS to store LSIF upload files. The frontends are currently still contacting the bundle manager, but it will be removed for everything except upload fallback in 3.22, and will be removed completely in 3.23.

Planned 2020.11.02-06

Will continue to merge outstanding effort to get rid of the bundle manager and clean up the scar tissue that accumulated around these changes.

Have a goals refresh meeting to ensure that we're still focusing on the right thing (and that communicate what the right things are clearly outside the team). We also have a training session that we will prepare for and present to CEs.

Time allowing, will try to tackle updates to metrics and ping data this week.

@Strum355
Copy link
Contributor

Strum355 commented Nov 2, 2020

Completed 2020/10/27 - 2020/10/30

  • +1 to IDE summit
  • Improved java versioning support by having to insert explicit version checks before invoking potentially missing methods (due to e.g. java<14 not having records)
  • Further research for better Gradle support Improve gradle project meta inference  scip-java#70
  • Some QoL incl printing number of javac errors, configurable output for javac errors etc

Planned 2020/11/02 - 2020/11/06

@Strum355
Copy link
Contributor

Strum355 commented Nov 6, 2020

Completed 2020/11/02 - 2020/11/06

  • Implemented gradle build meta inference using init script functionality which vastly improved the inference of dependencies for Android oriented projects
  • Researched capabilities for including hovers for external dependencies, which could also be used for the virtual document
  • Explored another approach for inferring gradle build classpaths by intercepting calls to javac similarly to Kythe
  • Validated outputs of lsif-java in a local sourcegraph instance 🎉

Planned 2020/11/09 - 2020/11/13

  • Implement the javac intercepting inference in the previous init script to provide its results in a no-config way
  • Implement hovers for external dependencies and standard library (adapted from georgewfrasers lang server + getting sources via gradle?)
  • Prepare lsif-java for beta tester customers

@macraig
Copy link
Contributor

macraig commented Nov 6, 2020

Completed 2020/11/02 - 2020/11/06

  • Revisited team goals
  • New productboard roadmap structure (matches new goals/milestones/roadmap)
  • Prepared and held CE Code intel deep-dive
  • Finished polishing tutorial, split into more docs, and added them to docs page

Planned 2020/11/09 - 2020/11/13

  • Sort out Code intel Productboard
  • Keep working on docs (adding repo to sourcegraph web / index Typescript tutorial)

@efritz
Copy link
Contributor Author

efritz commented Nov 9, 2020

Completed 2020/11/02 - 2020/11/06

  • Landed new goals into handbook
  • Removed bundle manager service
  • Updated metrics for new/changed services (enterprise frontend, bundle-manager, worker, and executor{-queue}).
  • Major reorganization of code intel code. Removed giant swaths of outdated code and now everything feels squeaky clean (in comparison).

Planned 2020/11/09 - 2020/11/13

  • Update pings so that we can accurately set goals for the new few months
  • Going to set aside some time to tackle some smaller bugs (some of which are blocking deals)
  • Plan to write a document about how to add support for a language. It's been a long time coming. It may not be a complete document, in which case I will reach out to other teams in order to fill in my blindspots.

@macraig
Copy link
Contributor

macraig commented Nov 16, 2020

Completed 2020/11/09 - 2020/11/13

  • Sorted productboard caos
  • Worked ways to strategize on delivery goals
  • Support and strategy on customer issues and lsif-clang handoff

Planned 2020/11/16 - 2020/11/20

  • Focus on lsif-clang handoff
  • Planning and retro
  • Publish new docs

@efritz
Copy link
Contributor Author

efritz commented Nov 16, 2020

Completed 2020/11/09 - 2020/11/12

Updated metrics and pings.

Planned 2020/11/16 - 2020/11/20

Will concentrate on lsif-clang knowledge share.

@efritz
Copy link
Contributor Author

efritz commented Nov 20, 2020

This week the team mostly focused on knowledge-sharing before @gbrik's extended leave. We're switching to two-week sprints starting Monday. Follow new progress at https://github.com/sourcegraph/sourcegraph/issues/16036.

@efritz efritz closed this as completed Nov 20, 2020
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
team/graph Graph Team (previously Code Intel/Language Tools/Language Platform) tracking
Projects
None yet
Development

No branches or pull requests

4 participants