I recently open sourced a very large project of mine, called CIDLib, on GitHub. I just wanted to make it known to this community. I've posted a bit about it elsewhere, but I thought it might be of interest to some folks here.
I have a pretty large (1.1M lines) personal code base. The top half is an automation system called CQC (still proprietary.) The bottom half (~450K lines) is a large, full featured development environment, which I've open sourced.
https://github.com/DeanRoddey/CIDLib
It's a full soup to nuts system, from build tools, to loadable resources, to virtual kernel platform abstraction layer, to a full set of standard type libraries, implementations of various standards like XML, JSON, PNG, ZLib, Blowfish, AES, Websockets, etc.... support for sockets, serial ports, speech recognition, HTTP, SMTP, ODBC, UPnP, UI framework, secure sockets, text transcoding, threads and processes, embeddable OO macro language engine with IDE, a really powerful Object Request Broker, test framework, and a bunch of other stuff.
* In light of some confusion below 'build tools' doesn't mean a compiler/linker, it means project definition system and bespoke build tool (make type program.)
For now, it's mostly just there for evaluation. I'm just starting to dig in hard to the external documentation (never needed any before because I was the only user.) The docs are in XML and built via a little utility that's part of the code base, but I'm keeping a running copy of it on my company web site. So far it's mostly high level topic stuff (the Big Picture section) that will be linked to from other places to provide background. But you can learn a lot about it from going those that stuff.
https://www.charmedquark.com/Web2/CIDDocs/CIDDocs.html?topic=/&page=/Overview
There's also a good bit of stuff on my personal Youtube channel. A couple are slightly out of date. The one on smart enums was prior to as massive rework to the new 'enum class' style.
https://www.youtube.com/channel/UCAxCoATHgFBvqZhxFRnZsfw
And some written articles on CodeProject as well, which typically cover the same topics as the videos but some folks prefer written info. There were more but they deleted a couple because I was so gauche as to mention my proprietary software.
https://www.codeproject.com/script/Articles/MemberArticles.aspx?amid=2285461
An interesting thing about CIDLib (or loathsome slash ludicrous slash whatever, depending on your particular point of view) is that it does not use the C++ STL/standard libraries. It has its own.
Some people will immediately scream 'not invented here' or claim there's no valid reason for not using that stuff these days. But there are exceptionally good reasons for not doing so. CIDLib is a highly integrated system. It includes some very powerful capabilities that only work if everything can participate in them.
If I used the standard libraries, I could never impose these things on them. At best it would end up being an enormously inconsistent hack. Without them, it's a very clean, very consistent system that is the opposite of the pieces and parts approach that is typical of the C++ world (and that has been a part so long now that many people get incensed if you imply it's not the only or best way to go about it.)
Just a couple examples... My IDL compiler (which supports the Object Request Broker but also can generate types and constants) allows me to have very powerful enumerations. C++ enums are weak at best. Mine have all sorts of capabilities. I could never make the standard libraries use them, so it would just be a mess.
Another example is the ORB itself. The standard libraries' story on streams is also weak at best. Mine are very nice, supporting binary data portability. And everything that implements the MStreamable interface can be passed across remote calls via the ORB with no extra work. It makes client/server systems so clean and easy.
There are lots more such examples. Obviously I know that many people will not use a non-standard system no matter what. But for those who aren't necessarily enamored of the way C++ is going, it might be interesting, for personal projects if nothing else.
CIDLib is very portable. Currently it's only deployed on Windows. But it strictly limits the use of language and system APIs to a virtual kernel layer, and everything else is written purely in terms of CIDLib interfaces. The virtual kernel layer provides a split implementation scheme, with common interface headers and per-platform implementations. The build tool understands this setup.
There used to be, long ago, a Linux platform driver, but it's long out of date. I've recently been spinning myself back up on Linux to start working on that. If anyone would be interested in helping with that effort, let me know.
CIDLib's version of multi-platform isn't the 'conditional code all over the place' type. It will be able to cleanly support Windows and Linux.
There is also an extensive UI framework. It is fully encapsulated as well, but I don't foresee that ever being portable. So we'd be looking at the backend for portability. But that would still be a powerful cross platform tool.
If you want to see what CIDLib is capable of, check out CQC, which is an enormously complex and powerful product built purely on CIDLib.
Anyhoo, don't get me started or I'll be showing you pictures of CIDLib's first birthday party and potty. Feedback is welcome, though experience has shown it will primarily be negative, this being the internet and all :-)