Bitcoin Forum
December 09, 2016, 11:42:52 PM *
News: To be able to use the next phase of the beta forum software, please ensure that your email address is correct/functional.
 
   Home   Help Search Donate Login Register  
Pages: [1] 2 3 4 5 6 »  All
  Print  
Author Topic: RFC: new forum software specifications  (Read 15264 times)
theymos
Administrator
Legendary
*
Offline Offline

Activity: 2506


View Profile
September 23, 2011, 09:19:39 AM
 #1

Updated Oct. 19

I've been trying to think of all of the features the perfect forum software would have, and this is what I've come up with so far. I'll eventually use the donated forum funds to pay someone to implement this. Please post your thoughts. I focused mainly on moderation, since that's the main area that I see SMF lacking in.

(This will be the text of a future thread aimed at bidders.)

[The future bidding thread] is only for bids, questions from bidders about the specifications, and questions that I have for bidders. Other discussion about this process should go in a separate topic.

Bids should include at least this info:
- A description of the general architecture you plan
- A list of any of the optional features I mentioned that your software will have
- Additional features your software will have that I didn't mention
- Samples of your past code
- A price. If you want links or other "perks", include these as part of the price.

The forum has about 500 BTC on hand, but you can bid more than that. If your bid is the best, I'll just wait until the forum has collected the required amount of money.

SMF features

All of the popular SMF features should be supported by your software. For example:
- Ignore user
- Ignore board
- Email notifications
- Print pages
- Profile pages
- BBCode
- Polls
- Multi-level subsections
- PMs
- Context search, simple search, and advanced search
- "Unread posts since last visit" and "new replies to your post"
- Forum and user stats
- Avatars
- Various user settings
- Good Unicode support
- JavaScript quick edit

The extensive admin interface is not required, however.

Code

The software must be written in PHP or C++, as these are the only two languages I am very familiar with. The code must be extremely easy to modify. I want to be able to make even complex changes in behavior without much trouble.

I now have some experience with SMF, so I will consider software built on SMF to be more readable/modifiable than I would otherwise.

License

The software can be under any license as long as I have complete access to the code forever, I can modify the code, and I will not be required to publish private modifications I make to the code (no AGPL). It can be based on paid software if the cost of the license is reflected in your price.

Database

PostgreSQL must be used. Queries should be well-optimized. Do not use a database abstraction layer.

Database queries should wherever possible be done using prepared statements, something like pg_query_params, or some other method that doesn't require the programmer to manually escape things inline.

Security

Security is very important.

Use salted multi-iteration hashing for passwords using one of the SHA-2 algorithms. Passwords in the existing SHA-1 format need to be automatically upgraded once the user logs in again.

No user group should be able to run arbitrary PHP code.

All actions must be done by POSTing the server. GET requests must not have side-effects.

UI

The default theme should be minimalistic like the current theme. Nothing that looks "web 2.0": no speech bubbles, no significant space between posts, no significant hover effects, and few rounded corners. Use even fewer images than the current theme: no image buttons.

The default theme must work well with all functionality and a reasonable page layout on text browsers without JavaScript. It should also work perfectly on browsers with unusually small browser dimensions. It should be at least somewhat usable (though maybe not pretty) on ancient and broken browsers like IE6.

Same color scheme as we have now: light with some blue.

There should be functionality for allowing users to choose from among several UIs. You only need to provide the default one, though.

Admin settings that are not changed very often can be made changeable from files instead of from a web interface, though changing the settings from the files should be easy. The web interface must not allow admins to add/edit UIs, execute arbitrary code/SQL, or tamper with logging.

User classes

So that you know the sort of membergroup system that is needed, here are the currently-planned membergroups. All of these must be possible with your software. People can belong to more than one membergroup. These will certainly be tweaked a lot in the future, so don't hard-code the membergroup features/permissions.

- Admins, with all powers. Only group capable of seeing IP addresses. It must be possible for admins to make certain groups, certain posts, and certain topics immune to certain types of moderation.
- Global mods, capable of doing everything with posts and posters.
- Local mods, capable of doing everything with posts and posters in their sections. Posters banned by a local mod are only banned in the sections that the local mod has jurisdiction over.
- Jr. mods, who can only moderate posters that are not established.
- Established posters: all posters who have met some easily-configurable criteria. To start with, the criteria will be 8 weighted hours online (see below for info on weighted stats).
- Categorizers: Can move all topics
- Whitelisted: immune from proxy bans, and maybe other restrictions later
- VIP donator: capable of accessing the donator section, able to change his name, and able to assign himself a custom title
- Donator+: capable of accessing the donator section and able to change his name
- Donator: capable of accessing the donator section
- Scammer: Unable to delete or modify his own profile or messages. Has his posts and PMs marked specially.

There should also be "poster ranking" groups based on weighted stats.

These user groups will be hidden and not listed in a user's profile or next to his posts:
- Local mods (when outside of their sections)
- Jr. Mods
- Established posters
- Categorizers
- Whitelisted
- Donator

In addition to the pips ("stars") that most forums have, small image and text "badges" associated with some membergroups should be possible.

Certain groups (including some poster ranks) imply "whitelisted".

Weighted stats

There needs to be "weighted time online" and "weighted post count" in addition to the raw values. It should not be possible for a user to increase one of the weighted values by too much without increasing the other value. If you post 200 posts in 1 hour, your weighted post count should be 1. If you post 1 post in 200 hours, your weighted time online should 6 hours. These numbers should be configurable and should apply retroactively when changed (where possible).

Time online should not increase if you're simply refreshing a page, and it should increase more slowly if you seem to be a bot.

Limits

All actions that write to the database should have at least one associated configurable limit. Like "can post x topics per y seconds". There should also be a limit that prevents users from posting too soon after being stopped by another limit. It should also be easily possible for admins to ban certain regex expressions in posts, titles, and usernames (separate ban lists) from the web interface.

The limits may be modified based on membergroup. The actual limits may be relaxed, and the result of exceeding the limit may also change. Exceeding limits can do nothing, reject the action ("you may not post this topic because you just posted one 5 minutes ago!"), or automatically ban the user.

Registration

When a guest tries to post a reply, he will be asked for the necessary account creation info (username and password) on the same page where he can enter his reply.

Email addresses will not be required on registration. However, the board will not send email to the user until an email address is provided and verified.

A user's very first post must not be a new topic.

OpenID

It should be possible to use OpenID authentication instead of a password. The main login method should not be OpenID, though. Maybe entering an OpenID URL into the username or password field will trigger OpenID authentication.

OpenID URLs should not be used as real usernames.

Mod profile view

Mods will see this stuff on the front page of every user's profile:
- A log of everything the user has done in the last few weeks. Entries like "Reported post x", "Posted reply x", "Posted topic x", "Got post x deleted by mod y", "Got banned", etc.
- The user's recent deleted posts.
- Their last few topics and posts (in different lists)
- Links that will immediately carry out mod actions after a JavaScript prompt: ban, IP ban, whitelist, elevate

Mod actions

Post actions:
- Delete topics/replies
- Split topics
- Merge topics (admin only)
- Clone reply/topic (admin only -- maybe other groups later)
- Create redirect topic
- Move topic
- Edit post
- Lock topic
- Sticky topic
- Announce topic -- put it at the top of every topic index page (admin only)

Automatic poster actions:
- Ban -- automatically permaban poster
- IP ban -- permaban poster and ban for an admin-configurable number of days all IPs the poster has used. Stats should be available to admins about how many times certain IPs and IP ranges are banned in this way.
- Whitelist/unwhitelist -- put the poster in the whitelisted group
- Elevate/unelevate -- Put the poster at the top of the report queue and make all mods do an extra confirm step for any action against this poster. Intended for things that need admin review. This feature is optional.
- Comment -- private mod comments about posters. This feature is optional.
- Nuke -- Deletes all posts.
- Remove reports on the poster

Admins should also be able to create user/IP bans that expire after different amounts of time.

No bans will prevent people from reading posts.

There needs to be something like SMF's "quick moderation" interface on topic pages and user post histories.

All of a poster's deleted posts should be available to them for at least a month.

It should be very easy for admins to undo any damage caused by mods. In particular, it should be very easy to undelete topics/posts and restore them to their original states.

Optional: make it possible to perfectly undo every action of a particular mod since a specified point in time.

Reports

People can send reports by clicking "report" links next to posts and optionally filling in a report reason. This increases the report score on the post and the poster by the reporter's "reliability score". The reliability score starts at 1. For each correct report, it increases by 0.1. For each incorrect report, it decreases by 0.02. The reliability score maxes at 5, and it can't go below 0.

Mods who view the report queue will only see users they can deal with. It should be arranged like this:
Poster 1 -- score: 5 -- details/handled/incorrect links
  post a -- score: 3 -- details/handled/incorrect links
  post b -- score: 2 -- details/handled/incorrect links
Poster 2 -- score: 1 -- details/handled/incorrect links
  post c -- score: 1 -- details/handled/incorrect links
 
The links work like this:
- Details: Lists the actual reports along with the reasons and sender of the reports
- Handled: Removes the reports and increases the reliability scores of all those who sent the reports
- Incorrect: Removes the reports and decreases the reliability scores of all those who sent the reports

Removed reports remain available to admins from a link on the sender and recipient profile pages forever.

Stock PMs

Whenever a mod action is taken against a user, they should receive a stock PM informing them of this. It should be easy for me to customize the text for each PM.

Ban appeals

People who have their user account banned (but not their IP) can use a special ban appeal feature. Each user can appeal once, and then they need to wait for the response.

The appeal queue will be available to admins. It will show the appeal and a link to the user's profile page. It'll have these action links: unban, reply, soft-deny (allow another ban appeal in 14 days), hard-deny (never allow future appeals for this user).

After any action is taken, the appeal is removed from the queue.

The banned user can reply once to each reply that an admin sends.

Proxy banning

There will exist a large list of proxies that are banned from posting except for whitelisted posters. The list should support IPs/hostnames with wildcards and ranges. Checking users against this list should be efficient. I will write code for automatically adding Tor exit nodes to this list, so it should be especially easy to add to this list.

When someone is prevented from posting something due to a proxy ban, the thing they tried to post should be added to a list visible to mods. Mods can then look through the list and whitelist people who tried to post something good.

Proxy-banned people should also be able to manually request whitelisting. The whitelist request queue should be visible to global mods, jr. mods, and admins.

Watchlist

There should be a feature like the current "Show new replies to your posts", but it should only apply to topics that the user has explicitly added to his watchlist by clicking an "add to watchlist" link in topics.

No embedded images

Due to problems with "cookie stuffing" and other attacks, let's just disallow embedded images all together. Transform old embedded images into links. Avatars will still be allowed, but they will always be hosted by the server.

Keep allowing img tags (transforming them into links), as they might be used later.

Optional: Web of trust

A trust system exactly like that of Freenet's FMS would be excellent. Bids including this will be greatly preferred.

Other required features

- Good SEO
- Combined mod action log
- Ability of admins to send PM/Email newsletters to different membergroups.
- A page listing all posts by non-established posters
- Post edit revisions visible to all users who can edit the post
- A way to view all of a user's topics
- For admins, creating boards and moving them around should be easy.
- The bidder needs to provide code or detailed instructions on how to move current database data to the new database.
- The software needs to be at least as fast and resource-light as SMF.
- I like how the SMF post composition page allows you to highlight text and then click a button to apply certain BBCode. This needs to be replicated.
- Post counts should not be shown on topic pages, but should be shown on profile pages.

Other optional features

- Optional CAPTCHA-protected email addresses listed on profiles
- Nofollow on links in posts and profiles of non-established users while they are non-established
- In addition to normal BBCode, allow Wiki-syntax for bold/italic: ''=italic, '''=bold
- In "Replies to your posts", highlight posts where you're quoted and include posts where you're quoted even if you haven't posted in those topics.
- The ability to completely ignore a thread.
- A "thanks" feature on posts. All people who have thanked a post (up to a limit) are listed in small text near the post. Readers can hide this list in their options.
- An option that expands [img] tags into embedded images. This must not be the default.
- In addition to the default way of viewing topics, allow people to view topics: by purely chronological ordering, unaffected by bumps; by number of recent replies; and by some "hotness" criteria affected by views and replies.
- Allow people to maintain a list of users who are "friends". Highlight topics/posts by friends, topics posted in by friends, and topics/posts thanked by friends.

1NXYoJ5xU91Jp83XfVMHwwTUyZFK64BoAD
1481326972
Hero Member
*
Offline Offline

Posts: 1481326972

View Profile Personal Message (Offline)

Ignore
1481326972
Reply with quote  #2

1481326972
Report to moderator
1481326972
Hero Member
*
Offline Offline

Posts: 1481326972

View Profile Personal Message (Offline)

Ignore
1481326972
Reply with quote  #2

1481326972
Report to moderator
1481326972
Hero Member
*
Offline Offline

Posts: 1481326972

View Profile Personal Message (Offline)

Ignore
1481326972
Reply with quote  #2

1481326972
Report to moderator
Advertised sites are not endorsed by the Bitcoin Forum. They may be unsafe, untrustworthy, or illegal in your jurisdiction. Advertise here.
error
Hero Member
*****
Offline Offline

Activity: 574



View Profile
September 23, 2011, 10:12:41 AM
 #2

Some questions for clarification, or perhaps refinement:

Would a trust system almost exactly like eBay (before they removed negative feedback) work?


15UFyv6kfWgq83Pp3yhXPr8rknv9m6581W
wumpus
Hero Member
*****
Offline Offline

Activity: 798

No Maps for These Territories


View Profile
September 23, 2011, 02:51:09 PM
 #3

When someone is prevented from posting something due to a proxy ban, the thing they tried to post should be added to a list visible to mods. Mods can then look through list list and whitelist people who tried to post something good.
+1

Bitcoin Core developer [PGP] Warning: For most, coin loss is a larger risk than coin theft. A disk can die any time. Regularly back up your wallet through FileBackup Wallet to an external storage or the (encrypted!) cloud. Use a separate offline wallet for storing larger amounts.
Maged
Legendary
*
Offline Offline

Activity: 1260


View Profile
September 23, 2011, 04:16:23 PM
 #4

Past versions of an edited post being available to mod/admins (or maybe even just admins) with the ability to revert a post to a previous version would be extremely helpful. Also, the ability for a mod or admin to prevent someone with lower rank (including the original poster) from editing a specific post. This would mostly be used after a mod has to edit a post for some reason, and would likely be a checkbox on the edit page.
No embedded images

Due to problems with "cookie stuffing" and other attacks, let's just disallow embedded images all together. Transform old embedded images into links. Avatars will still be allowed, but they will be hosted by the server.
One thing I've started seeing custom forums do is have the server cache external images. We can charge for this image mirroring if we want or just give it to donators. This can even be outsourced to a different company.

Real-world example:
Code:
[img]http://cdn101.iofferphoto.com/img2/item/131/025/265/5EQT.jpg[/img]
becomes:
Code:
<img src="http://imagecache.w00t.com?url=http://cdn101.iofferphoto.com/img2/item/131/025/265/5EQT.jpg" border="0">
which redirects to:
Code:
http://image.w00t.com/8EpApz69bXWXyvoZYgJZdnl7pd8_?Expires=1316794098&Signature=Vh0Rnvsy07zjvt8yDN45TDBWM5LCrXLeH6smkJh6-NlCObKpLrtesjtnht8~GD4QLU5jTmxRZBweXpDtO0hNuMSZub1AJwDLC8PViBJvHLq8MWCa6IuFVRdm2ZR5nK0tlA3SbHyRlNDMzyFVIcxq8bpEAsnpJMtW8oA7saHmVjI_&Key-Pair-Id=APKAIHX2P6GWWRFXYETQ

theymos
Administrator
Legendary
*
Offline Offline

Activity: 2506


View Profile
September 23, 2011, 05:18:17 PM
 #5

Would a trust system almost exactly like eBay (before they removed negative feedback) work?

I don't like any trust system that has a global trust rating. It disincentives people from posting controversial ideas.

Past versions of an edited post being available to mod/admins (or maybe even just admins) with the ability to revert a post to a previous version would be extremely helpful. Also, the ability for a mod or admin to prevent someone with lower rank (including the original poster) from editing a specific post. This would mostly be used after a mod has to edit a post for some reason, and would likely be a checkbox on the edit page.

Good ideas. I'll add that to the final version of the specification.

One thing I've started seeing custom forums do is have the server cache external images. We can charge for this image mirroring if we want or just give it to donators. This can even be outsourced to a different company.

I thought about that, but I don't really like embedded images, anyway. I can only think of a few cases where embedded images are actually useful.

1NXYoJ5xU91Jp83XfVMHwwTUyZFK64BoAD
theymos
Administrator
Legendary
*
Offline Offline

Activity: 2506


View Profile
September 23, 2011, 05:29:51 PM
 #6

Another feature that should exist in the forum software: OpenID as an alternative to normal username/password authentication.

1NXYoJ5xU91Jp83XfVMHwwTUyZFK64BoAD
phelix
Legendary
*
Offline Offline

Activity: 1680


nmc:id/phelix


View Profile
September 23, 2011, 09:45:26 PM
 #7

Some questions for clarification, or perhaps refinement:

Would a trust system almost exactly like eBay (before they removed negative feedback) work?



+1 to a trust system

though I think positive only would be sufficient or even better

blockchained.com ■ bitcointalk top posts
deslok
Sr. Member
****
Offline Offline

Activity: 448


It's all about the game, and how you play it


View Profile
September 23, 2011, 11:42:36 PM
 #8

Modularity is good being able to update something like the security portion easily would be to it's benifit
If the forum is upgrading "seamless" although impossible should be strived for
User groups for someone such as vendors (cablesarus bitcoinwebhost jermeywest come to mind) would benifit from increased privelages such as more pm's an hour than the 10 currently allowed, Or some form of chat system (forum wide + invitable groups)
Autolocking of old threads should be considered a thread that's been inactive for a period (no new posts and less than x views in x days) that gets bumped for no real reason is irritating at best

"If we don't hang together, by Heavens we shall hang separately." - Benjamin Franklin

If you found that funny or something i said useful i always appreciate spare change
1PczDQHfEj3dJgp6wN3CXPft1bGB23TzTM
Maged
Legendary
*
Offline Offline

Activity: 1260


View Profile
September 24, 2011, 12:35:49 AM
 #9

Autolocking of old threads should be considered a thread that's been inactive for a period (no new posts and less than x views in x days) that gets bumped for no real reason is irritating at best
This forum is in the unique position where a great deal of old threads are still relevant today. Although, maybe this can bet done for every board other than dev. I don't know.

deslok
Sr. Member
****
Offline Offline

Activity: 448


It's all about the game, and how you play it


View Profile
September 24, 2011, 01:18:31 AM
 #10

Autolocking of old threads should be considered a thread that's been inactive for a period (no new posts and less than x views in x days) that gets bumped for no real reason is irritating at best
This forum is in the unique position where a great deal of old threads are still relevant today. Although, maybe this can bet done for every board other than dev. I don't know.

Threads like this one : https://bitcointalk.org/index.php?topic=41058.0
are why i asked about that it was ignored for 20 days to be bumped without adding anything useful i don't mean threads should always be locked by age but if it gets 0 views for 2 weeks i can't see how relevant it would still be

"If we don't hang together, by Heavens we shall hang separately." - Benjamin Franklin

If you found that funny or something i said useful i always appreciate spare change
1PczDQHfEj3dJgp6wN3CXPft1bGB23TzTM
error
Hero Member
*****
Offline Offline

Activity: 574



View Profile
September 24, 2011, 12:27:01 PM
 #11

Would a trust system almost exactly like eBay (before they removed negative feedback) work?

I don't like any trust system that has a global trust rating. It disincentives people from posting controversial ideas.

Ah, there's a misunderstanding here. I was referring specifically to buying and selling, not to forum reputation in general.

15UFyv6kfWgq83Pp3yhXPr8rknv9m6581W
theymos
Administrator
Legendary
*
Offline Offline

Activity: 2506


View Profile
September 25, 2011, 02:47:17 AM
 #12

Ah, there's a misunderstanding here. I was referring specifically to buying and selling, not to forum reputation in general.

Maybe the forum could integrate with #bitcoin-otc for trade ratings.

1NXYoJ5xU91Jp83XfVMHwwTUyZFK64BoAD
BkkCoins
Hero Member
*****
Offline Offline

Activity: 784


firstbits:1MinerQ


View Profile WWW
September 26, 2011, 01:46:39 AM
 #13

Feature request that some forums have:

Subscribe to thread - without having to make a post.
Unsubscribe - remove it from new posts/unread list so you can leave the thread behind when it's degenerated into bickering.

Both are very useful and missing from SMF.

TiagoTiago
Hero Member
*****
Offline Offline

Activity: 616


Firstbits.com/1fg4i                :Ƀ


View Profile
September 26, 2011, 01:56:08 AM
 #14

The subscribe thing is already present, though it doesn't work exactly the same as posting in the thread (doesn't get added to the "Show new replies to your posts" list, but you still get emails)

Unsubscribe is also present; i've seen people complain it somtimes doesn't work though.

(I dont always get new reply notifications, pls send a pm when you think it has happened)

Wanna gimme some BTC for any or no reason? 1FmvtS66LFh6ycrXDwKRQTexGJw4UWiqDX Smiley

The more you believe in Bitcoin, and the more you show you do to other people, the faster the real value will soar!

Do you like mmmBananas?!
theymos
Administrator
Legendary
*
Offline Offline

Activity: 2506


View Profile
September 26, 2011, 01:56:30 AM
 #15

Feature request that some forums have:

Subscribe to thread - without having to make a post.
Unsubscribe - remove it from new posts/unread list so you can leave the thread behind when it's degenerated into bickering.

Both are very useful and missing from SMF.

This is already in the feature list. See "watchlist".

1NXYoJ5xU91Jp83XfVMHwwTUyZFK64BoAD
nefanon
Member
**
Offline Offline

Activity: 112



View Profile
September 26, 2011, 03:45:19 PM
 #16

Ah, there's a misunderstanding here. I was referring specifically to buying and selling, not to forum reputation in general.

Maybe the forum could integrate with #bitcoin-otc for trade ratings.

+1

Also please add a way to view all the threads a user started. This will make it a lot easier to find an old thread I started rather then having to search through all my posts.
c_k
Donator
Sr. Member
*
Offline Offline

Activity: 242



View Profile
September 26, 2011, 06:38:51 PM
 #17

With the extensive list of requirements in mind, does anything at all come close to satisfying them?

theymos
Administrator
Legendary
*
Offline Offline

Activity: 2506


View Profile
September 26, 2011, 08:37:15 PM
 #18

With the extensive list of requirements in mind, does anything at all come close to satisfying them?

Not any existing software, probably. The forum will be paying for someone to either modify existing software to support all of this or write new forum software from scratch.

1NXYoJ5xU91Jp83XfVMHwwTUyZFK64BoAD
da2ce7
Legendary
*
Offline Offline

Activity: 1218


Live and Let Live


View Profile
September 27, 2011, 08:04:06 AM
 #19

One feature that I would love to see is a 'pgp fingerprint’ and 'pgp key' fields within the user profile.
If the user has supplied a pgp key, on submission of a new post or editing an old post, the forum provides well-formatted version of the raw post data for singing.  The user then can upload a .sig file as an attachment to the post.

This would be extremely useful for announcements; the forum software could even automatically verify that the submitted signature is valid.

One off NP-Hard.
phelix
Legendary
*
Offline Offline

Activity: 1680


nmc:id/phelix


View Profile
September 28, 2011, 01:28:12 PM
 #20

With the extensive list of requirements in mind, does anything at all come close to satisfying them?

Not any existing software, probably. The forum will be paying for someone to either modify existing software to support all of this or write new forum software from scratch.

start from scratch? that really should not be necessary.

blockchained.com ■ bitcointalk top posts
Pages: [1] 2 3 4 5 6 »  All
  Print  
 
Jump to:  

Sponsored by , a Bitcoin-accepting VPN.
Powered by MySQL Powered by PHP Powered by SMF 1.1.19 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!