Either I'm a genius or I'm a fool. Not sure which yet, but I've decided to tackle a glaring hole in the .Net landscape and have started on a really big project that embeds another really big project.
An open source replacement for MS Access. Let's face it, Access has stuck around for a long time because it's really useful. But every day it feels older and older. Under the hood it hasn't evolved very quickly. Programming is still done with Visual Basic for Applications and GUIs still use the basic Win32 controls. Reports still look great, but the rest of the user experience is trapped in 1997.
I've decided to call my new project AppDat. I considered Excess as well, but that might be inviting trouble over for dinner, especially when spreadsheets are added to it.
AppDat is written for .Net 5.0 and up. The runtime will be packaged with the app, so no worries about users having it installed already. This enables us to use C# 9 and all of it's awesomeness. C# 9 introduces immutable Records and more pattern matching awesomeness. These are vital features for an Access replacement.
Access, at it's heart, is just a GUI sitting on tope of the Jet database engine. That leads us to...
.Net is over 20 years old. In that time it has been used with every database system known to mankind thanks to ADO.Net. If want to work with data inside your app, things are a bit more limited. The only major choices here are SQLite and SQL Server Compact Edition (which is all but retired). If a person wanted to customize either of these for their app, they better bring their Hacker PHd because SQLite is written in some pretty gnarly C and SQL CE is not open source.
So I am building an in-process RDBMS with C# 9. It's designed from the ground up to utilize the biggest and best features of C# 9 to accomplish things very easily that previously would have required much more careful consideration, planning and testing. Records are the killer feature that made it possible for me to even consider this project.
AppDat is open source. I haven't definitively picked a license yet, but I'm leaning towards the MIT License. I've got a very rough first prototype of a table row working which heavily leverages immutability. The project is on GitHub. If you want to help with anything then let me know!