In recent years, we've seen a boost in popularity of community-driven projects. Software and hardware development, social activities, crowdsourcing, manufacture, education—thousands of communities are growing and striving to achieve their goals. Creating a new community can be a difficult task, so the tools used in the process are very important.
A community is bound by groupware used by its members. For open source projects, the list of collaboration tools may include wikis, distributed version control systems, bug trackers, IRC, forums, and such. The decision to use a specific tool may play an important role as it will define how strongly community members will be involved in the project. Tools that have no support for collaboration or are too complex to use may seriously limit and impede help provided by the community.
In an article on Opensource.com, new GitHub community manager Jono Bacon shared a list of software tools for managing open source communities. Most of these tools are time-proven and a de facto standard (wikis, IRC, Etherpad, etc.), but some of them are closed source. Jono mentions that some people believe that using proprietary software in open source projects is wrong, and I agree with this. In my opinion, an open source project must not require the use of proprietary services or software. However, this may raise the issue of finding suitable open source counterparts that may or may not exist.
One particular set of tools I'd like to talk about is social network clients. Social media plays an important role in the life of an open source project. Having an account on a social network and posting news pieces can greatly help grow a project's community. However, each social network requires a different approach to get the best results. For example, posting frequently works better in Twitter than Facebook. In a way, each social network account is a standalone product that needs to be maintained. You need to have a publication plan that will provide a constant flow of new information to keep the audience interested. News pieces need to be posted at a right time. You can do this manually via a Web browser or social network apps, but that would take too much time and get boring fast, especially if multiple social networks are involved.
Usually people maintain their accounts by using special services. We at OpenVZ have tried some as well, including Amplifr, Hootsuite, Buffer. However, none met our requirements completely (even though twty, t, rainbowstream, ttyter, and earthquake seemed convenient enough).
Our requirements for a tool that would help us post news in social networks were:
- Ability to make scheduled/delayed posts/retweets
- Support at least for Twitter (as our Twitter accounts gain the most activity)
- Open source
- Free (because what open source project is willing to pay for services or tools?)
After not finding a ready-made solution, we decided to create one ourselves. Since Twitter's API is open, libraries for many programming languages are available. We chose Python and tweepy to create twisource, which is rather lightweight but meets all our requirements nonetheless.
So this is what our tweet publication process is now:
- All scheduled tweets are stored in a custom-format text file.
- A person who wants a tweet published clones the repository with the text file and adds their tweet(s) to it.
- Said person creates a pull request or sends a patch to tweet repo maintainer for approval.
- If the maintainer approves, the tweet(s) get into the repository.
- On a server, a script is run once a minute to publish tweets scheduled for the current time, if any.
Aside from meeting our requirements, the tool also offers these benefits:
- Tweet scheduling with crontab(5) or CI (e.g., Jenkins).
- Tweet moderation.
- Easy searching through tweet history.
- Tweet signatures with links to the project website.
- Easy spellchecker integration.
- Tweet publication process identical to that for programming code which is convenient for developers.
- Works with any text editor.
I'd be glad if other communities tried this publication process and share their thoughts. Your feedback is welcome!