Here’s one that I haven’t yet mentioned (mostly because I completely forgot about it): a few years back, I built an SE clone. It was based on the idea of being a like-for-like clone of SE, so it’s pretty much the same, albeit very much simpler.
The source code is available here, and there is a temporary live instance of it running too, for anyone who wants to test/poke it.
If we were to build on this software rather than building something new, these are the pros and cons as I see them:
Cons
- It’s not the tech stack we voted for; it’s Ruby/Rails. That said, Ruby isn’t too difficult to pick up, if we wanted to.
- It’s old. The version of Rails it was built on is at least four years out of date; there have been two major version updates since. I had to upgrade it one major version just to get it to work at all. We’d need to do significant work here to bring it up to date.
- It might be too similar to SE. If we wanted to use it, we’d most likely want to change how various things work to suit what we want out of it (I’m thinking particularly around comments, but other things likely apply too - the other that comes to mind is a meta/discussion/community area, which it doesn’t currently have).
Pros
- It’s already started. This should not be underestimated; the cost of starting a new software project is always high compared to building on top of something existing.
- It solves a number of architectural questions for us already.
- It already has the basic functionality: questions, answers, comments (all with markdown), reputation, privileges, notifications, some moderation tools (including flagging).
- We can still do what we want with it, and take it in the direction we want to; I personally have no particular attachment to the software, and I’m happy for it to be reworked into what is effectively a different product. This likewise applies to the design - I’m well aware it’s outdated and in need of mobile support, so we can create our own new design for it.
- It has decent test coverage already, so we won’t need to spend as much time writing tests for it; we can mostly test new functionality and bring existing up to date later.