by Alex Beregszaszi

What do cryptic Github comments mean?

Are you new to Github and/or contributing to open source projects? Have you seen short messages like LGTM, ACK, NACK, etc. and wondered what they mean?

Here you go:

  • LGTM — looks good to me
  • ACK — acknowledgement, i.e. agreed/accepted change
  • NACK/NAK —negative acknowledgement, i.e. disagree with change and/or concept
  • RFC — request for comments, i.e. I think this is a good idea, lets discuss
  • WIP — work in progress, do not merge yet
  • AFAIK/AFAICT — as far as I know / can tell
  • IIRC — if I recall correctly
  • IANAL — “I am not a lawyer”, but I smell licensing issues

Many projects in the crypto space also use the following (popularised by Bitcoin’s hacker lingo):

  • Concept ACK — agree with the concept, but haven’t reviewed the changes
  • utACK (aka. Untested ACK) — agree with the changes and reviewed them, but didn’t test
  • Tested ACK — agree with the changes, reviewed and tested

These answers are usually part of the code review process and you would find them in issues or pull requests in Github.

Honorary mention: +1 as the short form of ACK (and in many cases, Concept ACK). After the famous “Dear Github” letter, the platform has introduced proper reactions to declutter comments. No, this is not about making Github your next Facebook :)

You would also see the ACKs be included in commit messages, like how the Linux kernel does it since Git is being used:

Add get_random_long().Signed-off-by: Daniel Cashman <[email protected]>Acked-by: Kees Cook <[email protected]>Cc: "Theodore Ts'o" <[email protected]>Cc: Arnd Bergmann <[email protected]>Cc: Greg Kroah-Hartman <[email protected]>Cc: Catalin Marinas <[email protected]>Cc: Will Deacon <[email protected]>Cc: Ralf Baechle <[email protected]>Cc: Benjamin Herrenschmidt <[email protected]>Cc: Paul Mackerras <[email protected]>Cc: Michael Ellerman <[email protected]>Cc: David S. Miller <[email protected]>Cc: Thomas Gleixner <[email protected]>Cc: Ingo Molnar <[email protected]>Cc: H. Peter Anvin <[email protected]>Cc: Al Viro <[email protected]>Cc: Nick Kralevich <[email protected]>Cc: Jeff Vander Stoep <[email protected]>Cc: Mark Salyzyn <[email protected]>Signed-off-by: Andrew Morton <[email protected]>Signed-off-by: Linus Torvalds <[email protected]>

Check out the “How to Get Your Change Into the Linux Kernel” guide for a thorough explanation.

Similar short answers are used widely in software engineering and the open source community as they make communication more efficient.

You have surely seen the following in source code — TODO, FIXME, XXX and NOTE — and only wondered what XXX means?

Interested to see a lot more acronyms with explanation and perhaps a bit of history? Check out The Jargon File. It is the definitive source since 1975.

Bonus trivia: where does ACK/NACK comes from?

I would say it came from networking/interface protocols, perhaps the popularity of TCP caused widespread usage.

SYN, SYN/ACK, ACK, FIN, ACK, FIN, ACK.