POP Forums: What now?

posted by Jeff | Wednesday, September 2, 2020, 7:00 PM | comments: 0

Every time I ship a new version of POP Forums, I inevitably reach the point where I think, "Now what?" Mind you, "version" is relative when it comes to my own use, because I have enough automation to get each commit into the hosted product and CoasterBuzz basically within a few minutes. But of course I want to keep improving it, and I generally enjoy messing with it. In fact, I really need to work on drumming up some business for the hosted version, because I basically never did that with the timing of my new job. I'm also not super interested in doing that, but if you know someone who could do some inside sales, I'd pay a nice finders fee for that.

The obvious thing that I've talked about for several versions is to modernize all of the front-end bits, and get off of jQuery. As I've said before, I'm not interested in building a single-page app (SPA), because it doesn't make sense, and it's not worth risking the generally robust Google juice in the forums that I run. CoasterBuzz has 45,000 pages indexed, PointBuzz has 38,000. The long tail of search traffic we land is insane, and the result of 20 years of consistency. Also as I've said, the text heavy nature of forums and relatively limited functionality is what makes them solid.

So I experimented with Vue.js when I rebuilt the admin side of the forum, which is not app-tastic and doesn't require a huge build process or anything. It just gets transpiled to the lowest common denominator and minified on the script side, and the markup is in a single file. No webpack or any of that nonsense. The result is 76k coming down the pipe, and 600k total on first hit if you count all of the libraries and CSS. I like it precisely because it's so flexible in how you use it.

This stuff isn't my strength though. I remember almost needing to get into Angular years ago when working for a consulting company, then wanting to explore React more for my own amusement but didn't like it (the node package house of cards really messes with me). I like Vue, but I haven't been particularly thoughtful about how I would use it for the forums. At the very least, I think there are at least four "pages" that exist: the forum index, the topic lists, the actual text of each topic, then everything else. Those first three are the hard-rendered things you want to be perfectly and simply indexed by Google. From there, each one would share components around being logged in, notifications and search bar and stuff. Probably the biggest "how would I" is with the text of a thread itself. It doesn't seem like you can "reverse bind" the individual posts to a data structure, which you then augment with new posts as they're made, or things are voted up, or whatever. Again, I'd like to start with what's rendered in the page.

I've looked at some of the other forums out there, and none of them even offer inspiration. The PHP-based forums haven't really changed in years, and they just keep tacking on more ugly to the UI. I took a look at Discourse, the only "new" thing in recent memory, but they've taken the UI too far from convention, and a thread with 7 replies takes 80+ requests and weighs in over a megabyte! (For reference, mine would be under 30 requests and about 700k.) I don't have a lot of ideas.

It would be easy for me to slip into more back-end optimization and reorganization, but honestly that's nuts. It's so stupid fast right now that it would be like squeezing water out of a stone. I have tried over the years to be very deliberate about keeping the UI as simple as possible, with as few dependencies as possible. This is why it was easy to get it looking decent in mobile. It's not refined, but reading posts and understanding who made each one works really well. I don't want to get away from that. What I do want is a real notification system, login/out state without a page refresh, some better way to do quoting. I really wish there was something other than TinyMCE that worked as well for the text editor, too.

I need to just branch the code and start experimenting. Like I said, I think it starts with that first page.


Comments


Post your comment: