This is a document written using ReMarkable, a shorthand syntax for generating HTML.

{	"date"		:	201105091315,
	"updated"	:	201212241355,
	"licence"	:	"cc-by",
	"tags"		:	["code-is-art", "web-dev"]


# NoNonsense Forum #


	*Update:* v23 released: title lines in posts now self-link

*NoNonsense Forum is a free, open source, PHP-based simple discussion forum.*
It favours removing barriers to conversation rather than massaging egos.

It is ideal if you want a discussion platform you can throw up in seconds, is quick and easy to administer, simple to use and works great as a private forum for a team working together.

•	<See it in action (//>
•	<Download (>
•	<Change log (>
•	<Source code (> (GitHub)
•	<Early history & design goals (/code/forums)>
•	<Watch a video about the design philosophy behind NoNonsense Forum (/worthing-digital)>

Features (#features)
:: No Database
	All data is just RSS. Starting a new thread creates a new RSS feed. Replying adds an item to the feed.

:: No hoops to jump through
	I just want to talk, I don’t want to go through registration and e-mail confirmation and logging in each time.
	NoNonsense Forum asks you for a name and password when you post. This name and password forms a unique token,
	protecting the name from other people using it. Every time you want to post, just use the same name and password
	to keep the same name.
	fig.	<"Add new thread input form in NoNonsense Forum" /&__HREF__;/add.jpg = /&__HREF__;/add.png>
		: Add new thread input form — user name and password act as a unique token
	This is not the same as registration because you can have as many different names as you want, you don’t have to
	pre-register a name and password, and you don’t have to go through e-mail confirmation and a login screen before
	you can do anything.
	If your web browser remembers your name and password and fills it in for you, then all you do is type your message
	and submit. Nothing gets in your way.

:: Minimal Markup
	I wouldn’t have written NoNonsense Forum if I believed that other forum software was doing it right, so likewise I
	did not opt for normal <bbcode (//>. There is no preview function, and I believe that
	having one just adds hurdles to people posting. What comes out should be exactly what you expect. There should be
	no black-box that you fear will screw up your text in ways you don’t understand.
	Want to insert a blockquote? There’s no quote button, just copy and paste and wrap in speech marks.
	"How now brown cow?"
	Who knew pink moo?
	fig.	<"Screenshot of styled blockquote" /&__HREF__;/quote.jpg = &__HREF__;/quote.png>
	What’s more, the output blockquote includes quotes so that if you copy and paste this, the quote is maintained.
	Even when nested.
	Pre-formatted text / monospace / source-code is also supported in simple fashion:
	% CSS
	pre		{overflow: auto; margin: 20px 0 0;}
	pre, code	{font: 12.5px/20px Monaco, Consolas, monospace, monospace;}
	You can write anything after the first percent sign, it’s useful as a title or specifying the programming language.
	fig.	<"Screenshot of styled code block" /&__HREF__;/code.jpg = &__HREF__;/code.png>
	Again, this just copy + pastes back into the text area and will output the same thing.

:: Mods and Rockers
	There is no "edit" ability. Instead users can append to their existing posts. This allows them to note any
	corrections without the potential of changing facts, post-facto.
	fig.	<"Append" /&__HREF__;/append.jpg = /&__HREF__;/append.png>
	Appending and deleting is done by clicking the relevant button on the post and providing the same name and password
	as was used to create that post.
	<"Delete button" /&__HREF__;/delete.png>
	Despite no database, the forum does have the capability for moderators. Add names to a 'mods.txt' and they will be
	given the ability to append / delete any post or thread. Moderators can be set a global level, or only within
	sub-forums by creating a 'mods.txt' in sub-forums. (A sub-forum is just a folder)
	<"List of moderators" /&__HREF__;/mods.png>
	A sign-in is provided for moderators (via HTTP auth), they will have to suffer the woes of logging-in `:)`

:: Access control
	You can set a forum or its sub-forums to be locked according to two different policies:
	:: Threads:
		Only moderators or members can start new threads, but anybody can reply. This could be used as, for example,
		a kind of blog / news system where by only site staff can post the news, but the public can comment on it.
	:: Posts:
		A read-only forum. Only moderators or members can start threads and replies, the public can read only.
		This would be typical of an archive or announcements sub-forum.
	fig.	<"Screenshot of different types of sub-forums" /&__HREF__;/locks.jpg = /&__HREF__;/locks.png>
	Just create a 'locked.txt' in the forum / sub-forum with the desired mode “`threads`”, “`posts`” or “`private`”
	written within.
	Create a “members.txt” file with the names of users you want to be able to post / access the locked forum.
	Moderators (“mods.txt”) will always be able to post in any locked forum as well as use usual moderator capabilities.

:: Wide Browser Support
	There shouldn’t be unnecessary hurdles added by browsers. NoNonsense Forum works out of the box on:
	•	IE6, 7, 8, 9+
	•	Firefox 3+
	•	Chrome, Safari
	•	Opera 9+
	•	Text-based browsers
	And is mobile-optimised too!
	<"Screenshot of NoNonsense Forum on an iPhone" /&__HREF__;/iphone_thumb.png>
	Now with Opera Speed Dial support:
	<"Screenshot of Opera Speed Dial page showing off NoNonsense Forum integration" /&__HREF__;/opera_thumb.png>
	How many forums do you know do this?—Instantly see if there's new posts / replies each time you open your browser!

:: Customisable, Hackable
	NoNonsense Forum provides many routes for customisation, like a basic config file for preferences, an 'about.html'
	file to add a description / extra HTML to each forum (without having to modify the template), a custom CSS file
	and <templates that are 100% HTML (/dom_templating)> so that you don’t have to know PHP or learn a
	`{{special syntax}}` to modify the look of your forum.
	The <PHP source code (> is heavily commented and explained and free for you
	to learn from, modify and share.

Limitations (#limits)
:: Scale
	NoNonsense Forum does not scale well. It is not trying to solve that problem. It is designed so that you can throw
	up a forum in seconds and have something working with no configuration and nothing to manage. If your forum grows
	beyond practical limits, switch to a more complete forum package like <phpBB (//>.
	You might want to run a NoNonsense Forum on a private server or intranet, where scale won’t matter and NNF will be
	far less hassle than other softwares.

:: Abuse
	I don’t believe that regular users should be treated the same as spammers, trolls and trouble-makers. This is why
	there is no {CAPTCHA}. No other forum software seems to have learnt that spam bots and regular users are not on the
	same level and don’t need the same "solutions". Forums have registration, e-mail confirmation, {CAPTCHA}s and all
	sorts of hurdles and *still* get spammed.
	My forum has none of these hurdles and doesn’t get bot-spammed <!-- ;) --> (not one for over a year).
	For the moment it is safe simply because it is unique and different and I’ve used some fresh tricks to confuse
	spam-bots. In the future they might catch up and I’ll have to adapt, but I won’t add more hurdles for users.
	However, regardless of spam bots, because there is no ‘username = e-mail’ login, there’s nothing preventing one
	person using a different name every time and spamming the forum with posts. That is not a software problem, it’s an
	administration problem and you should ban the user’s IP using your server software / config panel / htaccess.
	You could always use the access controls to protect the forum, or disable new users once you have the users you
	want. NoNonsense Forum is ideal in situations where you need a quick to throw-up, easy to administer private forum,
	rather than a large scale public forum with thousands of users (though I think it could technically handle it)
	Again, should NNF no longer solve your problems it’s time to upgrade to a big software package with all the bells
	and whistles.

Help Out (#help)
Please try it out.

You should read the <goals of the project (/forums#goals)> to get an idea of what sort of features suits the flavour of NoNonsense Forum and what will simply be impossible given the design!

The most effective way to "get things done" is to <add an issue on GitHub (>, you can also discuss NoNonsense Forum on—obviously—<the forum (//>.