🔗 Writing release announcement emails
Mailing lists are not exactly fashionable nowadays, but some of them remain relevant for some communities. The Lua community is one such example. As of 2017, a lot of what goes on in the Lua module development world still resonates in lua-l. With over 2500 subscribers, it’s a good way to kickstart interest in your new project.
Mailing list users tend to be somewhat pedantic about etiquette guidelines for posting, especially for announcements and the like. So, I usually follow this little formula for writing release announcement emails, which has been effective for me:
- Email subject - this is important; I use a format like “[ANN] MyProject x.y”
- Summary - The first paragraph explains what is the project
- Links and installation - Then a link to the project website, and a one-liner instruction of how to install it (that is, the incantation for the appropriate package manager — in the case of Lua,
luarocks install myproject
). More detailed instructions and documentation should be available from the project website. - Description - Finally, a more detailed description:
- If the announcement is for a new version of an existing project that was previously announced on the list, I include a summarized changelog, essentially “What’s new in version x.y:”
- If this is the first announcement of the project, then a longer description of how the project works. For Lua modules, for example, this may include a really short “hello-world”-type example for the library. This is information that should be in the README.md file for your repository, which in future announcements will be reachable via the link for the project website (often a Github repo URL) mentioned above.
- License - Users should be able to figure out the license of your project easily, so especially in new projects mentioning can be a good idea — but watch out if you’re using a license that’s not the majority option in a given community. You may be unnecessarily flamed for your choice by people who don’t even want to use your project in the first place. If you’re not going with the “majority license” (and remember, license choice is your call as an author, not the community’s) it might be a better idea to avoid mailing list noise and mention the license only in the project website and sources. The goal is not to hide it (interested people should find it easily; do mention it in your project’s README.md and include a LICENSE file) but just to avoid licensing flamewars. Of course, using the majority license has major pros, so if it’s all the same to you go with it, but if you’d prefer another one, don’t let yourself be bullied by a community into picking one free software license over another. It’s your freedom too!
- Be nice! - Finally, remember to sandwich all this technical info with greetings at the top, kudos to contributors, requests for help and feedback, etc. A mailing list is a social medium, after all. :)
An example of an upgrade announcement is here:
[ANN] LuaRocks 2.4.2
Hello, list! I'm happy to announce LuaRocks 2.4.2. LuaRocks is the Lua package manager. (For more information, please visit http://luarocks.org ) http://luarocks.org/releases/luarocks-2.4.2.tar.gz http://luarocks.org/releases/luarocks-2.4.2-win32.zip Those of you on Unix who are running LuaRocks as a rock (i.e. those who previously installed using `make bootstrap`) can install it using: luarocks install luarocks What's new since 2.4.1: * Fixed conflict resolution on deploy/delete * Improved dependency check messages * Performance improvements when removing packages * Support user-defined `platforms` array in config file * Improvements in Lua interpreter version detection in Unix configure script * Relaxed Lua version detection to improve support for alternative implementations (e.g. Ravi) * Plus assorted bugfixes and improvements This release contains commits by Peter Melnichenko, Robert Karasek and myself. As always, all kinds of feedback is greatly appreciated. Thank you, enjoy! -- Hisham
An example of a new project announcement is here:
[ANN] safer - Paranoid Lua programming
Hi, Announcing yet another "strict-mode" style module: "safer". * http://github.com/hishamhm/safer Install with luarocks install safer # Safer - Paranoid Lua programming Taking defensive programming to the next level. Use this module to avoid unexpected globals creeping up in your code, and stopping sub-modules from fiddling with fields of tables as you pass them around. ## API #### `safer.globals([exception_globals], [exception_nils])` No new globals after this point. `exception_globals` is an optional set (keys are strings, values are `true`) specifying names to be exceptionally accepted as new globals. Use this in case you have to declare a legacy module that declares a global, for example. A few legacy modules are already handled by default. `exception_nils` is an optional set (keys are strings, values are `true`) specifying names to be exceptionally accepted to be accessed as nonexisting globals. Use this in case code does feature-testing based on checking the presence of globals. A few common feature-test nils such as `jit` and `unpack` are already handled by default. #### `t = safer.table(t)` Block creation of new fields in this table. #### `t = safer.readonly(t)` Make table read-only: block creation of new fields in this table and setting new values to existing fields. Note that both `safer.table` and `safer.readonly` are implemented creating a proxy table, so: * Equality tests will fail: `safer.readonly(t) ~= t` * If anyone still has a reference to this table prior to creating the safer version, they can still mess with the unsafe table and affect the safe one. About ----- Licensed under the terms of the MIT License, the same as Lua. During its genesis, this module was called "safe", but I renamed it to "safer" to remind us that we are never fully safe. ;) -- Hisham http://hisham.hm/ - @hisham_hm
Hope this helps!
Follow
🐘 Mastodon ▪ RSS (English), RSS (português), RSS (todos / all)
Last 10 entries
- A Special Hand
- How to change the nmtui background color
- Receita de Best Pancakes
- That time I almost added Tetris to htop
- Receita de Orange Chicken
- Receita de frango empanado no panko
- Receita de cebola caramelizada
- Receita rápida de crepe
- Finally upgraded FlatPress
- Sobre o boom das commodities