... snip ...
I would have thought a forum software that had been in development from January 2014, with a budget of over one million dollars would have been done by now. Shows what I know, huh?
... snip ...
Being that you're still a student, I'll give you the benefit of doubt. Most software projects, especially of this scale, can easily go over 1MM. And to take a project to completion (although really there's never an end to any real software project), usually go over a year. Were we a bit naive with the initial estimate? Yes, we had the same thought you have. "It's just a forum, it can't be too hard, and it definitely shouldn't take a few seasoned devs more than a year to make."
Boy were we wrong. And I'll be the first to admit that. But rather than just call it quits and move on. We decided to stick with the project and see that it gets done. Here's a quick list of things you need to consider while making a forum and problems we've run into. Not all of this information can be found online and so we had to experiment until we found a good solution. Hopefully you can use this list to see what it's like to build a larger scale software project.
- What Programming Language do you use? This is going to be an open source project so you want to choose a language that's widely used and avoid esoteric languages like Haskell.
- What DB do you use? PostGRES? MySQL? Oracle? SQL Server? NoSQL? Remember to balance costs vs. performance vs. ACID compatibility. Atomicity and Transactions are key here. There are very nasty bugs to be found if you don't do your homework.
- What should the interface look like? Should it look exactly the same? Should you improve upon the old interface?
- Write your own BBCode Parser? Alternatively, how do you handle other parsers at the same time?
- Plugins. Make sure you balance extensibility with security. Also, how do you handle extensibility while making custom plugins a breeze
- Security! Are you making sure you're follow the latest OWASP?
- SPA vs static page rendering? Balance client performance vs server performance
- How do you handle large DB table sizes (over 10 millions rows)? How do you handle querying that data? Which indexes do you build
- To add on to the point above, what is a reasonable fetch time? Sub millisecond? 10 milliseconds? 100 milliseconds?
- Banning users. IP level bans? Username Bans? Temporary bans? Then do iterations of all those combined
- Notifications. You need to let the user know if they have a PM or else that page is just a wasteland. But what about other interesting items? Like letting the user know when a thread they posted in has more posts? Or if they were mentioned in another thread they haven't viewed yet.
- Additional Requirements. Theymos doesn't want a clone of SMF, if he did, he wouldn't have asked us to build new software. So how do you use your codebase to solve some of this problems? Better Mod Reports, highlighting admins and mods, etc. Do you take requests of the user base as well, things like spoiler tags and nearly every other suggestion in this board (They have insight on what works and what doesn't for them.)
By no means is this list exhaustive. There are many more topics to cover but I think this gives you the basis to form an idea of what it takes to build forum software. It's not as easy as a collection of posts under a collection of threads under a collection of boards. There are users, messages, custom pages, reports, moderation, administration, and many more things that need to be built along the way.
Also, being that you're a CS student, you should really take a look at Github. That's pretty much where all the open source code you'll be using the in future is going to be held. Oh and EpochTalk is on there too. You can keep track of all the work we do on a daily basis.
https://github.com/epochtalk/epochtalk