-
Notifications
You must be signed in to change notification settings - Fork 1.4k
ALE Development Philosophy
w0rp edited this page Jul 14, 2019
·
1 revision
This page exists to explain the general development philosophy of ALE, especially on GitHub. The page should serve to eliminate confusion over how ALE issues, pull requests, changes to the code, and so on should be handled.
- Have fun!
- Issues should stay open until they are either resolved, superseded, or deemed invalid. There's no harm in having a large issue count for users.
- Bug reports should be expected to written in clear English that everyone can reasonably understand, with enough information for identifying and fixing the bugs.
- Requests for new features don't have to have any fixed format. Some descriptive prose is just fine.
- Typically any pull requests with code should include accompanying tests.
- Some Vim code cannot be tested, so some reasonable exceptions can be made.
- New linters or fixers should include updates to documentation to describe new supported tools both on GitHub and in the Vim documentation.
- New options for linters or fixers should be included in the documentation, and described in a clear, and preferably brief English.
- Linters and languages in headings and tables should be sorted roughly alphabetically.
- Prefer defaults that the majority of users will prefer.
- If users prefer not being told about correctly identified mistakes in their code, go against the majority and report mistakes by default.
- Never enable anything by default that can modify files on someone's computer, within reason.
- Never introduce any breaking changes ever, unless users have been previously warned about them.
- Appreciate that a "breaking change" is hard to define.
- If a function isn't documented, it isn't public.
- If a function isn't public, it can be changed at any time.
- Very few functions should be public.
- Do not define any functions in the global scope, except functions that are
autoload
functions. - Do not introduce any keybinds other than
<Plug>
mappings and keybinds for windows controlled by ALE. - Typically if code isn't needed, it shouldn't be loaded. Manage
autoload
files carefully. - Never introduce a new feature without a good reason, but add important features many people do need.