Somethings holding us back (random thoughts)…
-
Last Thursday, after an email conversation with 3 people I respect from this board, i decided to take a look at the old bbProgress code. With a bit of dusting off, the weekend has seemed quite fruitful. there are though, still a few things that bother me greatly, and the more I delve into bbPress and the ability to theme it differently or extract data in a different manner, the more questions it raises.
Specifically, bbPress is effectively set up to meet singular criteria, and really struggles to be adaptable. I’d go as far as to say it’s far to blog like in data structure. I’m confident that if i had a few days off work (and with no kids) that i could easily make a wordpress theme that would look and work exactly the same as bbPress. That’s fairly disappointing.
It’s disappointing because forums and blogs are very different in their make up. Forums have genealogy and many to many relationships, while blogs do not. It’s not just a case of a feature wishlist, or replicating features on other forum solutions, it’s rather the mindset that bbPress has evolved with. The “this works for us” mentality. Here are some examples:
Genealogy
bbPress makes no attempt to update parent forums. It’s a major flaw that leads to forum X having no information on forum Y at all, even though they are directly related. Instead, in order to find this out, a plugin that makes numerous SQL calls every time a forum is loaded (and for every forum listed) must be created to fake this basic functionality.
Should your forum have no parent/child relationships (such as this forum and the WordPress support forums), then the issue probably hasn’t arisen.
This somewhat forces bbPress forums into linking via topics/posts rather than forum structure. I’m neither for nor against this, it definitely has its advantages for some forums, but for larger more structure forums where parent/child/child relationships are helpful, this quickly becomes very difficult when it doesn’t need to be.
More importantly, by only storing information in this blog-esque flat-file scenario, we’re keeping theme development very tied into plugins for even the most basic of information such as:
Forum – > Last Post
I’ve raised this one for a year and a bit now, but its a great example (imo).
Lets say, i run a review forum for restaurants in Pennsylvania (i don’t):
Forum
Topics — Posts — Last Post=======================================
USA
0 topics – 0 posts – No posts– Pennsylvania
0 topics – 0 posts – No posts– – Philadelphia
0 topics – 0 posts – No posts– – Pittsburg
0 topics – 0 posts – No posts– – Allentown
0 topics – 0 posts – No posts– – Scranton
0 topics – 0 posts – No posts– – – chinese restaurants– 1 topics – 1 posts – nom nom nom by fat albert
– – – french restaurants— 3 topics – 42 posts – i hate snails by Jody
– – – italian restaurants— 9 topics – 99 posts – i love pasta by Bob
Ok, so i hope this will illustrate the problem. According to bbPress USA, Pennsylvania, Scranton all have 0 posts in them, but that’s not true. They are parents in a forum sense, and have 13 topics and 142 posts under them.
The issue as a theme developer is that if you attempt to emulate the look/feel of any other forum software out there, then you have to make crazy complex SQL calls just to display the data that your users are used to. Or worse, (as i’ve shown in some real world examples) display “No Posts” on a forum that actually has loads of posts, just divided into their children.
I’m not saying that one way is better than another, but right now we’re stuck with only having data that fits one type of forum, and that’s one that has no need for parentage (such as this forum and the WordPress support forums).
Definition of Forums, Categories etc.
bbPress, in an attempt to roll in some backward compatibility of a plugin, included the “forum_is_category” meta. The issue here is that it’s a 1 to 1 relationship, a boolean, a yes/no; and yet we’re holding this data in the meta table, rather than the forum table.
What this means is that anyone pulling a list of the forums in a plugin, then has to compare each one to a different SQL against the meta table. Why isn’t their just a column in the forums table “is_a_category”? or even better, “forum_is_category”, and then no code would need to be changed in the existing “bb_forums()” loop. Why? well because if a forum doesn’t use categories because it has no need for parentage (such as this forum and the WordPress support forums) its not something they’re going to run into.
But of course, there is a bigger issue. A forum can only be a category or not a category. A Category is described (and categorised as) being Read Only and having Sub-Forums. The thing is, what if I want to make a forum read-only, but it already has child forums (for example, i want to make Philadelphia read only because i’ve divided the city into North/South as sub forums), would that mean that i want Philadelphia as a category? no. But that’s the bbPress definition.
bbPress has no way to add any form of settings or meta data to a forum. Forum A is treated the exact same way as forum B and forum Z, when in reality for forums rather than blogs, that’s not always the case.
There is no way to set any forum as read only, or hidden, or anything else. Forums don’t have settings, and why is that? because they’re exactly the same as categories in wordpress. Which suits the current need of one type of forum, and that’s one that has no need for parentage (such as this forum and the WordPress support forums).
A forum (n to n) not a blog (1 to n)
This is where the problem starts to expand. bbPress’s 1 to 1 reliance does not play well when attempting to assign other meta data. This really starts to throw issues as soon as your board becomes a certain size. Moderation is a nightmare because the whole n-to-n abilities of every other forum is non existent. Users to groups, groups to permissions on a forum per forum basic, rules on a forum per forum basis and per user and/or group.
Outside of WordPress integration the most common questions on this board are “how do i do X basic forum feature (read only, hidden forums, assign moderators etc)” and the answer is never good.
These are not issues for bbPress’s major role (the WordPress support forums), a forum with 5 sections, no parentage, and everyone is a WPuser already. But if you look around any of the “powered by bbPress” forums, and then look around any of the not-powered by bbPress forums, there are amazing differences. Those differences suit Automattic, and they may suit you (awesome if they do), but why do we continue to code/design/develop in a static flat-file based way that only meets the needs of one system, instead of assigning data in an N-to-N structure so that people can theme/develop/forum their own way?
My name is Kevinjohn Gallagher, and this is the 3rd February in a row i’ve written this (or v similar) post. I fully expect to be called an Angry Celt, “concern trolling” or whatever else is popular these days. In honesty, i’m holding my hands up to not being a great IA or Developer, and hoping that if i can raise these issues maybe we as a community can solve them.
Have a great day!
- You must be logged in to reply to this topic.