-
Notifications
You must be signed in to change notification settings - Fork 1
Open
Labels
Description
Current git-based design
Pros
- able to get it up and running instantly
- don't need to know anything about overleaf document models, javascript, and all that jazz. Just need to be able to read/write files using python.
- easy enough to "trigger" AI suggestions with
% @ai: do a thing for mesyntax - all requests are initiated on our end. no need to worry about websockets or accepting incoming updates from overleaf
Cons
- git merge can be tricky (Figure out how to manage merge errors #2) and the best way we have to handle it now involves lots of extra calls to OpenAI (Don't edit lines if the user is still playing with them #3)
- unclear if git fetch/commit/merge loop is fast enough / scalable
- little visual indication to the user that something is happening
- no access to "current cursor position"
- we end up wanting to implement our own database (Support sqlite paper managers #9)
- mild slowdown due to needing to poll for git updates. but not a huge deal because LLM calls are still the bottleneck
Hypothetical direct integration with overleaf
Speculative pros
- overleaf is open source
- maybe able to get the assistant to appear as a collaborator in the doc / give other visual indications
- maybe able to use "suggestions" and "comments" rather than just edits
- maybe get access to cursor position
- maybe get access to the document model and history directly
- maybe able to debounce user edits more directly / hook into however overleaf already does this (e.g. with their spell-checker)
Speculative cons and things to look into
- despite being open source, they don't appear to have docs about their own api. we'd have to invest a bit of time in reverse-engineering things / familiarizing ourselves with it
- can we still do it in our own python server, or will there be tons of CORS / auth issues? For comparison, writefull is all javascript. But unclear if this is because they're opting for a browser plugin model or if this is necessary.