Chris's coding blog

Roadkill update, 2018 Q4

November 01, 2018

Roadkill version 3 has been a long time coming, over 2 years in fact. The main reason for this has been the volatile nature of the .NET ecosystem of the past few years, and uncertainty of the .NET Standard/.NET Core roadmap, up until project.json was ditched recently.

The project has a lot of stars (almost 250) and watchers on Github, so this post has an update on the status of the project and its various parts.

Converting to .NET Core beta, 1.1, 2.1

The conversion started with a standard .NET Framework to .NET Core upgrade. This took about 6 months of my free time, and eventually got nowhere as the number of changes between the framework was so great.

I changed direction at the start of the year, and have now moved to a direct re-write of Roadkill, moving to an API-first approach.

Roadkill v3 is an API project, and a website project.

The status so far

  • Users and roles - more details below. Roadkill will now be using AspNetIdentity and get the extra features it supports. (25% done).
  • File uploads and management. Roadkill will support multi-cloud by default (S3, Azure). More details below (25% done).
  • It’s Postgres only using Marten, as having so many databases to support was a major headache, even with an ORM. (100% done)
  • It’s cross platform and Dockerized (100% done)
  • It now uses Elasticsearch for search. (50% done)
  • It’s markdown only, and has been rewritten to use Markdig for Markdown parsing. Subsequently extensions will not be supported for the v3 initial release. (100% done)
  • HTML Sanitization is done using the HtmlSanitization library, which itself is derived from Roadkill v2! Go team. (100% done)
  • Localization is now a separate project. (100% done)
  • The API is fairly complete now, minus search and users (80% done)
  • The admin UI hasn’t been started. I’m looking at SPA framework like ReactJS for this. (0% done)
  • The front end UI hasn’t been started. Also SPA. (0% done)
  • Mailing templates are to-do. Mailkit is now being used by Roadkill to send mails. (50% done)
  • Conversion from v2->v3 tool is to-do (0% done)

Users

The main bulk of work that is currently being done on Roadkill is around users. It’s being completely re-written using AspNet Identity. I’ve spent a fair amount of time writing this library that enables Marten support for the AspNetIdentity framework.

I am now exploring IdentityServer4.AspNetIdentity and IdentityServer4 to enable OAuth2 support (login via Twitter, Facebook, Google etc.). Also I’m exploring user interfaces for managing users and roles, with a long term goal of making a re-usable admin interface that can be used to manage AspNetIdentity users.

Files

Another library I’ve created that Roadkill will use is CloudFileStore, which reads and writes files to various cloud providers - for now Google, AWS/S3 and Azure.

Summary

So in short, there’s a lot happening around Roadkill, assembling components that v3 will use. Version 3 will be a complete re-write, but re-using a large chunk of the source code. I’ve wasted around 18 months on bumbling around with .NET Core betas an .NET 1.1, but now it’s on track.

I should also mention I have commitments for Packt right now, for a new video, so my time is quite limited.

And any help with the front send SPA frameworks would be welcome.


I'm Chris Small, a software engineer working in London. This is my tech blog. Find out more about me via GithubStackoverflowResume