Huge progress made today: Voat.Tests is now creating/dropping/seeding against a PostgreSQL server.
We have constantly been given a hard time based on our choice of tech stack. I will keep this as short as possible.
There are two steps I see to migrate (efficiently as possible) to an open platform capable of running on Linux and using open backends.
- Database provider and access (migrating SQLServer to PostgreSQL).
- Runtime environment (migrating ASP.NET MVC 5 to ASP.NET Core, EF6 to EF Core)
Before anyone argues about this, a platform rewrite is completely out of the question do to timing. Having been involved in Java to .NET ports and ASP.NET MVC to Angular, a complete language and runtime port is not even in the realm of possibility.
I’ve migrated ASP.NET MVC to ASP.NET Core and this is painful but possible and thus will be the one Voat will use. Nearly 95% of UI Views are compatible with ASP.NET Core MVC and many libraries have .NET Core ports which will allow a majority of code to be reused with minimal changes.
Voat has complete sets of unit tests (NUnit) covering much of the backend database and cache functionality, thus a port should be as efficient as possible.
I see this taking place in two ways but I need to get your guys opinions:
- I’d like to see the database port to PostgreSQL first, meaning the site would be running in full .NET Framework / ASP.NET MVC6 but work against PostgreSQL (while still remaining SQLServer compatible). We have put in a ton of work lately to port incompatible areas to be database neutral SQL, and the unit tests have been modified to allow PostgreSQL setup and tear down.
- After the PostgreSQL port is performed I’d like to get Voat building against .NET Core. This will take a while but I’d consider the first step literally just commenting out areas of code that have build issues and once compiling, we would go back in and work on porting and getting all unit tests to pass.
I will be getting the repo updated and will provide an edit to this post once complete (hopefully in an hour or so).
I've updated the DEV branch and this is what voat.co is currently running live. In addition I've created a PostgreSQL branch to work on just the port of database code as well as a Core branch for the .NET Core port.
P.S. I've joined the slack group you guys have started. Same user name.
Update: I'm not using Slack any longer. I will use this sub as the hub of all porting conversation.