I’m currently working on a free software microblog bot licenced under the AGPL, which raises two questions. Firstly, who is a user of it? The AGPL only applies to users. And secondly, how can it provide its source code? The AGPL requries that source code be provided to users.
Reading a microblog post (a dent or tweet) does not make you a user of the software that generated it any more than reading a document produced using a word processor makes you a user of that word processor. But sending a message to the bot and it responding probably does count as a user interacting with software over a network.
Microblog users have user pages that could be used to provide details of how to get the source code for a bot. But that wouldn’t be a way of providing those details specifically to users who are interacting with the software.
The solution is to allow people to send a message to the bot that contains a command which will cause the bot to respond to that message with details of how to get its source code. This both makes sure that the bot has a clear user relationship with the person requesting the code and provides a mechanism for that user to request the code. It’s a minimal use relationship, as the use and the provision of source are the same. But it is use, it does trigger the AGPL, and it does satisfy the requirement that source be made available.
The message is a simple one - !source
The response is also simple, a short URL pointing to the source repository for the version of the code the bot is running (modified versions have to supply their own URL).
Send !source to a microblog bot and it will tell you where you can get its source code. I’ll be implementing this in the microblog bot project that raised this question and I’ll be implementing it in my art microblog bots as well. I recommend it for any microblog software that users can interact with, and as a way of ensuring that users can interact with the software and get its source code even if they otherwise would not.
(With thanks to Matt Lee and David Bausola.)