Southclaws / storyden

With a fresh new take on traditional bulletin board forum software, Storyden is a modern, secure and extensible platform for building communities.
https://www.storyden.org/
Mozilla Public License 2.0
93 stars 11 forks source link

Why GoLang #168

Closed rajesh99 closed 3 months ago

rajesh99 commented 3 months ago

Hi, What is the reason behind choosing Go for the tech stack for this project. Why was nodejs not choosen?

Southclaws commented 3 months ago

Hey! Great question, I primarily chose Go because it's strongly typed, very fast and compiles down to a single binary with no need for consumers to worry about setting up external dependencies or things like Node/npm versions. Now, Docker does mostly solve this but not everyone may wish to use Docker. Other reasons include: great standard library (testing is built in as well as all of the standard HTTP tools and other things.)

I've worked professionally with Node-based backends and I often find the code can get very unwieldy over time, it's easier in my experience to fall into bad patterns. It's also single-threaded by nature so scaling on a single machine requires some form of process management and a web server gateway of some sort to manage that. Go eliminates the need for this by just providing multi-threaded concurrency primitives out of the box and removes the need for spinning up worker processes for things like background job queues etc.

I've written more about the architecture on the Storyden blog, there's a section about the backend choices here: https://www.storyden.org/blog/the-architecture-of-modern-forum-software#the-backend