So it's a month and a half later than I had hoped (or several years, depending how I choose to look at it), but I finally got POP Forums to the first milestone in the ground-up rewrite.
My goals for M1 were pretty straight forward:
- Let go of the legacy that dates back to 2001 and my lack of skill at the time.
- Be a lot faster.
- Use template controls whenever possible, even if I had to roll my own.
- Log moderation and security actions.
- Include as much of the original functionality as possible.
- Create search that actually works and doesn't rely on SQL's FullText.
I'm happy to say that I'm there. I'm sure there is some lint, but I'll deal with that. I'm getting the list together now for M2, which will also be the first beta, and I'll let that out into the wild. In the mean time, I'm starting to build a new version of CoasterBuzz around this version, so I can begin "dog-fooding" it as soon as possible.
Something happened this year that I didn't expect: I got a day job that I liked. For all of the contracting and indie work I was doing, I'm surprised at how satisfying it is. For that reason, I didn't act on the forum as quickly as I would've liked.
Still, there were some lessons. The first of which was to ditch the whole Membership/Profile thing. It was too restrictive and slowed me down. It's certainly possible to write a thin wrapper around the forum for these API's, but making the forum itself adhere to it was an exercise pain-in-the-ass-ed-ness. I also learned that unit testing and TDD is a good thing, but making it religion also slows you down and reduces value in the process. Most importantly, I realized that starting at the UI is a really good idea for a Web app. Building this grand class library and making the UI consume it is really stupid because you build code you don't need, or miss the code you do need.
So in a few weeks, when CB is up and running, I'll revisit to finish out the feature list. At that point, I'm not sure what I'll do, but I think I'm going to go back to selling it for some reasonable price. Of course I'll include the code, and use the honor system in terms of downloading it.
There's an instance of a recent build here, complete with data from CB: