I'm back here after I dunno four years, I can't remember, my perception of time is too awful. See my introduction thread for more details on who I am. I've been experimenting with Go, big thanks to Euan for pointing that language out and I threw together a bug tracker which morphed into a custom forum software. https://gosora-project.com/ https://github.com/Azareal/Gosora/blob/master/README.md I was inspired to create it by the RR scaling incident, a lack of good systems which met my needs, a lack of systems which could keep pace with the ever changing world and, most importantly: To learn a new programming language and to experiment with more low level technologies in a web context (I'm slowly digesting the knowledge I got from reading the HTTP stack implementation Google wrote for Go). It has a bunch of features which are essential to me, but probably more boring for others. * Live dashboard showing me how much CPU, RAM, etc. is being used on the system. I love this feature. * Live Notifications when someone does something, because that's kind of important to me. Also, some things like the topic list are live, but I never quite got around to rolling that everywhere. * I try to keep the stack simple in true Go style. There is no requirement to have Node installed or Redis or Imagick or any manner of things which complicates operations. Cron jobs or other task schedulers aren't required, as the main process handles tasks and what-not itself. * Zero cost analytics (I cheat by holding the data in memory and batching them to the database every now and then). * Zero queries on hotpaths (pull random things out of memory). * Asynchronous programming without any of the pain (except for data races, I hate those x.x). * C / Rust level performance from Go absent GC woes and the standard library over-allocating (Go 2 is the magic word usually used for problems like that). * Experimental transpilation to client JS and server-side Go. This one was partly for fun, but it works well too. * I avoid C and Assembly for security reasons where possible. I might not be able to sleep from the ensuing paranoia, I'll see if I can introduce some more when I add support for Docker and am able to safely isolate those elements away. Maybe process level isolation might be enough? * I leave out a fair bit of fluff which I think distracts from the core experience. * Can probably be run off a toaster. My laptop with constantly maxed out memory usage from Firefox, Opera and Chrome waging war on each other is probably a good example, but there are also smart toasters out there these days. * Four default themes. You can switch between them via the theme selector in the footer. Nox is the defaultest default and Cosora is the most advanced light one. * More in https://gosora-project.com/topic/features-introduction.72 The analytics includes route counters, UA agent counters, referrer counters, memory usage tracker (coming soon), etc. and has graphs plotting out this data over time. I take care to anonymise all of the data which I collect by aggreggating all of the data together to make sure that the privacy of my users is adequately preserved, not just because "GDPR", but because privacy is a fundamental human right. I plan to expand on that by periodically purging request logs (standalone), IPs associated to posts / users, etc. But that'll probably be a setting of some sort. Very crude benchmarks show throughput over a thousand times faster than MyBB which on it's site claims to be "one of the fastest forum software", although it wasn't anything particularly scientific and will likely vary depending on the environment. MyBB was picked as my guinea pig as it was always my favourite software (even if I've outgrown it now) and it wasn't as difficult to setup for tests as phpBB. I also tried NodeBB, but it short-circuited on a too many requests error page, so I couldn't get it's true throughput, but the error page wasn't too performant. It can be run as a standalone server or proxied behind Nginx or whatever fits one's needs. I do have to note that I might be adding support for HTTP/3 soon which may not be compatible with Nginx and the like, but which does improve client performance by a fair bit, so things might get complicated there (or just turn that off). Future stuff: * Finish adding ElasticSearch, or find an equivalent library for Go, to reduce the amount of ops work I have to do. * Finish hardening it. I am paranoid about security, so this is a task which basically never ends. * Implement "social" stuff like friending and maybe customising profiles? * Support databases other than MySQL and the partly broken MSSQL. * Add a more sophisticated updater than the one I have now. * Figure out how we can beat AsmBB, if we don't already lol * Move gosora-project.com to a better host. And before you ask. It does not run on shared hosts. Well... Someone managed to get it to work on one, but I don't advise it.