Guiding principles for ick¶
Pithily,
First, corrupt no source code.
Second, don’t reinvent what works.
Explicit goals¶
Always give the user an “undo” (default to an informative dry run)
Be something that one person on a team can adopt, if they’re the only one that cares
Be something that you can run infrequently (say, before a release or in a tech debt week), while resepcting the amount of time you have available
Don’t be tied to any one {language,os,etc}: Be agnostic to what tools people want to use
Give you a heads-up about recommendations that you don’t need to apply yet (but can if you have spare time or want to be an early adopter)
By accomodating a wide range of levels of effort, we can apply automation where
it makes sense, especially on the low end of complexity. If you haven’t wanted
to write a custom linter plugin because it’s hard, and resorted to a grep
somewhere, this framework is for you.
Ease of adoption¶
Using ick (generally) doesn’t require any in-repo configuration, doesn’t
require all committers to use it, and doesn’t require using any third-party
services. You can try it, and if it’s not useful for you, just don’t run it again.