Threadbare is a frugal PHP + SQLite based forum.
Threadbare is:
- Free software (AGPL-3.0-or-later)
- A single PHP (i.e. easy to host) file about a thousand lines long with zero boilerplate or design patterns.
- Uses SQLite. Unless you have a thousand new posts a day, you're not going to notice.
- 100% works without JavaScript. Conservatively optionally enhanced with up to 70KB (before gzip) on the heaviest page.
- Very semantic HTML. Best viewed in elinks.
- Heaviest page load in 25 milliseconds. 2ms if cached. Basically like a static website.
- Opinionated. There are no settings.
- Relies on SendGrid for email and hCaptcha / Akismet for bots.
- Secure. I think. I hope. Let me know if it isn't.
Threadbare is not:
- It isn't a fully featured forum. If you're looking for plugins, themes, and a hundred dials, this isn't it.
- No logging and community metrics.
- Non-hierarchical. It's just threads and posts. No categories or subcategories.
- No private messages, profiles, or gamification. Take a deep breath. Enjoy the open-air prose.
- Not tested. Let me know if you find any issues.
Features
- Threads! Posts! Add, edit, delete.
- Kudos +1 or -1 on posts.
- Coloured automatic avatar without images (unless you really want 25 extra HTTP requests to Gravatar on the homepage with leaked email hashes, eh?).
- Decoupled UI with mustache. Have whatever theme you want I guess?
- File uploads.
- Live post preview.
- Auto embed video links. Lazy load images.
- Markdown formatting in posts.
- Email notifications on new replies.
- User mentions with tab autocomplete and email notifications.
- Login, sign up, reset password, validation emails.
- Captcha and Akismet.
- Admins can edit / delete all posts and bypass rate limits. Admins can also move posts to other threads or split into a new thread. Trusted users bypass spam filters.
- Aggressive caching for guests (using APCu cache).
- Pagination.
- Last read stats, views, last reply.
Brutalism is a design ideology that focuses on the honesty of materiality. If raw concrete, ugly buildings, and harsh environments come to mind, let me assure you that original meaning of Brutalism is separate to minimalism, or lack of elegance and beauty.
Honesty of materiality implies that mediums are used appropriately based on its function. For web design, this means that HTML is used for document semantics, CSS is used for styling, and JS is used for interactivity enhancements. This is not new. We have well established concepts like progressive enhancement and semantic HTML. But there is another medium that is slowly being forgotten in the app-ification of the internet: text. Text should be used for content.
Readability-first design.
I help host the Open Source Architecture Community forums, and this used to be using software known as Vanilla Forums. Vanilla is open source by legality, but corporate managed. This isn't a particularly sustainable combination, and the day came when open source Vanilla forums stopped being maintained. This begs for further reflection on how free software is more than a license, but that isn't today's topic.
I like progressively enhanced websites that work on text-only command line browsers. This is a rather niche requirement but I find that there is a strong correlation between websites that focus on content and their usability in text-only environments. When websites keep on adding more knobs and dials it stops becoming content and tips towards the "app" end of the scale, and it shows -- when you browse it on elinks you see all sorts of garbage in the way to the point that the website completely breaks.
Let's see what this looks like. Here's what Vanilla forums looks like if you haven't logged in yet:
There's a concept in design known as "above the fold" (think back to a folded newspaper) where key content should be displayed and presented first. Notice how 50% of my page is just boilerplate before I get to the first header (in green). Then it's more fluff until I finally see the first thread link about 80% down. I see 2.5 headers before I run out of screen space. And if you log in, it's even worse:
When logged in, the entire first page is skippable boilerplate. Notice how content is also duplicated (you see notifications and edit links twice!). The page has clearly been designed by someone writing HTML to serve the JavaScript, as opposed to vice versa. When you finally scroll down to see the discussions as a logged in user, this is what you see:
Doesn't look great, does it? Here's what a post looks like:
It's a bit better, but the formatting is still overall poor and pretty unreadable due to bad HTML. The reply form is a complete mess due to lack of progressive enhancement and file uploads are completely broken.
Here's what Threadbare looks like, designed from first principles with only semantic content, no more, no less. There isn't a single wrapper or container div or flow control element.
The first thing you see is the header. The navigation and search is concise. You can see a whopping 20 thread titles with 2 lines per thread. Threads are just an ordered list of links. Here's what it looks like to read posts:
What about PHPBB? The grandfather of forums still going strong? Well... it "depends". Here's what PHPBB looks like on the Gentoo Forums. Look at that 1990's tabular layout! It's not semantic, but tables do the job in visual layout. The content is ... well, highly relevant and well designed. It's fantastic!
Modern PHPBB has taken one step forward, two steps back. They've foregone tables for more semantic content ... but is it really semantic? Here's the FreeCAD Forum who has kept up with the times of PHPBB. It's a list of threads, sure, but upon closer inspection has