roc/design/editor/requirements.md

46 lines
2.7 KiB
Markdown
Raw Normal View History

2022-11-23 14:09:30 +03:00
# The Editor Must
- Edit roc code
- Run plugins asynchronously. Plugins can be standalone or come with roc packages.
# The Editor Should
2022-11-25 14:01:06 +03:00
- Support beginner-friendly projectional editing.
- Support typed holes.
2022-11-23 14:09:30 +03:00
- Support temporarily switching to free/legacy editing for operations that are difficult in projectional mode.
- Allow everyone to write, publish and test plugins.
- Disregard optional whitespace; there should be only one way to format roc.
- Provide useful debug UI and relevant data about the state of values.
- Allow running tests and viewing test results.
- Search and view documentation.
- Apply and render basic editing operations in 8.3 ms.
- Be the most popular roc editor.
- Be bundled with the roc CLI/compiler.
- Help find answers to all questions you would normally google.
- Accommodate those with disabilities better than other popular editors.
- Provide key familiar features: autocomplete, go to def, find references, rename, show type...
- Be able to execute core functionality with keyboard, with the exception of plugin functionality.
- Allow for output and errors that are nicer to read and search through compared to terminal output.
- Have an integrated REPL.
- Allow measuring performance of running roc apps.
- Show which code is covered by tests.
- Support several chart types, ability to transform data coming from logs, output, and intermediary values (from roc program execution).
- Support easily generating tests for a function.
- Indicate progress for slower operations.
- Provide assistance when upgrading roc/libs to new versions.
- Make it easy for the user to provide feedback/report problems.
- Provide tutorials for people with different amounts of programming experience.
- Provide useful cheat sheets.
- Accommodate those new to functional programming.
- Allow viewing editor, library, platform… release notes.
- Support roc notebooks similar to Jupyter.
- Support publishing and searching notebooks.
- Encourage making your code transparent and having a meaningful visual overview.
# The Editor Might
- Warn the user for code patterns that can be written to run significantly faster.
- Support publishing of roc libraries from the editor.
- Support conversion for snippets of code from different languages to roc.
- Support running in the browser.
- Support code execution on a remote machine while being able to view UI locally.
- Allow detailed logging so you can see everything you were doing(including plugin actions) when you were for example editing a specific file 3 months ago.
2022-11-25 14:01:06 +03:00
- Support entering a parseable formatted piece of roc code character by character so that the rendered result in the editor looks exactly like the input. This could make working with a projectional editor more intuitive.