From: dbucklin@sdf.org Date: 2018-09-03 Subject: On Using a News Server to Host Discussions I share a BSD VPS with some local hackers. I would like some kind of bulletin board to facilitate asynchronous conversations among users of the system. One solution to this, a solution that cur- rently exists and suits my needs, is an network news (NNTP[1]) server. NNTP is the protocol that underpins USENET[2]. What is USENET? USENET is a discussion system that emerged in the 1980s. Early on, it was primarily used by academics who had access to the UUCP- NET[3], a precursor to the internet. The decline and fall of USENET, beginning in 1993, has been well-documented[4]. My under- standing is that USENET users migrated to web forums at first and, later, to social media networks such as Digg, Reddit, and Facebook. It is possible to run a news server that does not interact with the greater USENET. There are a number of news servers available, but INN2[5] is one of the most popular. News servers organize conver- sations within "news groups". Users connect to the news server with a news reader, either locally or remotely, to read and post messages. Example newsreaders include slrn and tin. Recent email clients, such as Thunderbird, also included NNTP clients. What are the Alternatives? We also plan to have an email list. Mailing lists can effectively host discussions and have a long history of doing so. But high- volume conversations can choke the inbox of someone who is not used to organizing email from mailing lists. Mailing lists also have poor discoverability for newcomers. NNTP uses a pull-type interac- tion so that users are not inundated with messages they are not in- terested in. Instant messaging services such as IRC, XMPP, Slack, GNU Social, Mastodon, and others are great for relatively synchronous communi- cations. For more involved conversations, these platforms present some challenges. In the case of IRC and XMPP, messages are not centrally archived (not without some doing, anyway), so newcomers and those without persistent connections will miss parts of the conversation. Instant messaging clients also encourage short, in- formal messages of one or two sentences. Platforms like email and news carry an expectation of longer messages appropriate for in- depth discussion. Web forums are analogous to news servers from a user's perspective. Conversations can be organized into topics and conversations threaded for easy reading. However, each web forum provides it's own user interface. Web forums require significantly more re- sources than news servers and present a number of security chal- lenges. On the client side, web browsers are becoming increasingly heavy and have their own problems in terms of security and usabili- ty. Legacy news server and client software should play well with the target BSD environment. A service like Reddit could host a private subreddit. This is sim- ilar to a web forum, but removes the need to host the application. It would also provide an interface and interaction model that most people are familiar with. This would provide many of the benefits I'm looking for. My only complaint is that the content would not be under my control, and users would be tied to client software that works with Reddit (along with Reddit's terms and conditions). There's also the potential for a mismatch between the users on the VPS and the users who have access to the subreddit. What are the Risks? NNTP is a relatively archaic protocol. For a single-node setup, wrapping connections in SSH tunnels should solve the bulk of poten- tial security issues. Requiring local accounts and valid public keys should also reduce the attack surface. Other problems come into play if groups are going to be shared among servers. Again, public key authentication can help matters, but content and conduct are mostly a matter of policy. In this aspect, federated models like Mastodon have an advantage. What's Next? I need to install an NNTPd. The industrial-strength solution is INN 2.0. There is a lightweight server, WendzelNNTPd[6], that's made for a single-node setup. At first, I plan to have a small number of local groups that are only available to users that have an account on the VPS. Topics of conversations will likely include user projects, general conversation, specific languages, specific tools, requests of the system administrator, and announcements of meetings and other administrativa. News readers can be connected to a news server through an SSH tunnel. If this takes off, it might be interesting to find other groups that in the area that are doing something similar and share select newsgroups across systems. Each system could have a set of private groups (e.g. local.*) that are not sent to other systems, and a set of networked groups (e.g. net.*) that are shared. This brings with it, in a limited way, the problems that plagued USENET at the be- ginning of the end. An attempt to remedy this through policy was proposed as USENET 2[7]. I think there would be a significant benefit in putting geographic bounds on these networks. This mirrors the reality of how we live, and I think we could all use a healthy dose of reality. This is also an important aspect of the 1990s BBS culture that, I believe, contributed to the civility of those discussions. There's incen- tive to be nice when you might have to look someone in the eye at the next meetup. Good solutions already exist for global-scale discussions and file-sharing. A news server is a reasonable choice for hosting discussions within a shared Unix-style environment. Servers, clients, and protocols already exist and are in use daily. For groups that want to share discussions across systems, the USENET 2 proposal provides a set of rules that aim to create and maintain an environment that is (rea- sonably) free from abuse (e.g. spam, file-sharing). References [1]: https://en.wikipedia.org/wiki/Network_News_Transfer_Protocol [2]: https://en.wikipedia.org/wiki/Usenet [3]: https://en.wikipedia.org/wiki/UUCP#UUCPNET_and_mapping [4]: https://www.reddit.com/r/dredmorbius/comments/3c3xyu/why_usenet_died/ [5]: https://www.eyrie.org/~eagle/software/inn/ [6]: https://github.com/cdpxe/WendzelNNTPd [7]: https://web.archive.org/web/20050829181349/http://usenet2.org/