RetroChallenge - 2018/09

2018/09 RetroChallenge...

Back several years ago I won the Retro Challenge with my ViewData BBS.
I want to fully re-write it using .Net Core to provide a more streamlined version with the ability to run on other platforms other than Windows. 

My goals for this are as follows...

Cross Platform / Containerisation

I want to be able to run the new system on multiple platforms including cloud based services such as Azure.
I want to be able to possibly containerise the system so that I can easily deploy multiple copies via containers such as Docker.

Pipeline With Modular Framework Components

Create a modular framework that allows pipelining of components together.
Currently the system has a fixed coded pipeline, I want the new system to have no requirement on any component that plugs into the pipeline.
This should allow me to create a generic BBS alongside the ViewData version by switching out components.
I also allows me to insert new functionality into the pipeline just by adding in new components.
The configuration of the pipeline will not be fixed and will be set in the configuration files.


The system needs to be able to handle both direct Telnet and dial up connections.
I intend to create the same sort of gateway for Dial up as before.
I also want to ideally have a web based terminal that can connect to the system. I have seen an example of a Minitel system doing this with Web sockets and may look at creating a gateway to allow this.


The system will respond to the standard * and # commands that the original Prestel system did. It will also allow for the use of keywords to quickly navigate to pages.
Basic command and navigation will be provided by a module that will allow the user to navigate between pages on the system.

Input Forms

I previously started on a prototype input mechanism that allows for input fields to be defined.
I want to expand on this and provide a framework for creating entry forms and applications.


A library of utilities for mapping graphics to areas of the screen would be useful. I would like to be able to load in images / sprites and have the system map them to the correct graphical output. Colour changes and mapping of colours would need to be optimised by the system to get the best output available.

Screen Optimisation

When updating the screen the system creates a buffer on the server side and remembers the state of the screen.
I want to be able to do clever things such as scroll / change areas of the screen without re-drawing the entire screen.
There are commands for moving the client cursor so I want the system to be able to calculate the commands to send to change just the parts of the screen that are necessary to minimise the amount of traffic required and to speed up client rendering. 

Telnet Gateway

The previous system had a telnet gateway that can connect to other online system and pass through the data.
This allows for connecting to other online only ViewData BBSs such as CCL4 and the new Telstar system. 

Telesoftware Implementation

The original Prestel system had a mechanism for downloading software via multiple pages.
A client could run special software that would move through the pages reading various embedded headers and encoded body data to retrieve data.
I would like to have the system be able to index various retro files and allow the client to download them.

Mail System

A mail system that allows users to send (internal) or maybe later full email needs to be implemented. I may try and make it reasonably authentic to the original Prestel by using the built in user ids to send message between users.

Search Engine

An implementation of a simple search engine that allows users to search Google and return results in a paginated way would be nice.

Twitter Feed

I'd like to have various twitter integration points. Ideally the system will tweet events that happen in the system such as users logging in and out and possibly display twitter feeds as pages in the system (these may be built offline and served as static pages).

Background Jobs

To update certain pages I will require a backend agent that updates static pages with content. 
The system may contain template pages that can be used by these agents to create content.
Automatic content such as Weather, news and other content that can be refreshed periodically will be created by background jobs.


The system will need static pages defined to add interesting content to the system.
There are a lot of original pages that I'd like to use as a base for certain parts of the system to give the users an experience as near to the original as possible.


Lots of other stuff I've either missed or will think of later...

The chance of me actually getting a large amount of this done is not very likely but I am away at the ABUG (Acorn BBC User Group) meeting for the weekend of the 8th so that would give me a reasonable time period to actually start something.