This project intends to specify, develop and promote an information system with a web interface to manage a community of collaborative questions and answers for programmers.
Programmers worldwide scavenge the internet to indulge their learning needs. SegFault emerges as the solution, enabling easy knowledge exchange between developers.
The main goal of SegFault is to establish a platform for programmers to learn, discuss different approaches, present ideas and share knowledge in a Q&A style. It's also possible to associate brief comments to questions and answers. As your questions are answered, contributors and yourself can earn reputation points and badges (symbolizing your contributions to the community).
All users can search and read questions, answers and comments. Visitors are able to register and/or login in order to become an authenticated user. In addition, authenticated users can submit questions, answers and comments (which will henceforth be referred to as messages). An authenticated user is considered owner of every message he publishes. After posting a question, an owner can mark an answer as correct, granting it higher visibility over the others. In addition, owners can edit or delete their messages, although an edited message is signaled as such. When a message is deleted all their respective responses/comments are also deleted, in a cascade-on-delete manner. An authenticated user can also star/favorite a question to get easier access to it.
The platform will be based on a honor system, granting authenticated users the ability to up-vote or down-vote a question, answer or comment based on its usefulness to the discussion. Each user has an associated reputation that is influenced by the votes on its questions, answers and comments. Moreover, authenticated users are able to report inappropriate messages, and when a message reaches a certain threshold number of reports it gets automatically deleted (see figure 1 for the formula).
$5 + score^{\frac{1}{3}}$
Figure 1: Formula for the number of reports needed for a message to be deleted, according to its score.
A user's reputation is calculated by adding its questions' points, its answers' points, and half its comments' points. The user's reputation is further influenced by subtracting the number of the user's messages that were deleted due to reports, multiplied by 10 (figure 2).
$\RS = Q + A + \frac{C}{2} - R * 10,\ RS \rightarrow Reputation Score\ Q \rightarrow Questions Score\ A \rightarrow Answers Score\ C \rightarrow Comments Score\ R \rightarrow Messages Deleted by Reports$
Figure 2: Reputation Formula.
There are two available badges: the trustworthy badge is awarded after you correctly answered 10 questions; and the moderator badge is awarded when your reputation points surpass 500, and were previously awarded the trustworthy badge. After being awarded the moderator badge you gain moderator privileges, which grant you owner-style permissions over all the messages. These owner-style permissions comprise editing or deleting messages, as well as changing a question's category and marking answers as correct.
Additionally, each user has a profile page, featuring a short biography, a picture, his rating, as well as their most recent messages. Users will also be notified as soon as a reply is made to their messages, by push-notifications on their browsers.
SegFault will have a responsive interface, organized by categories, and featuring a search-bar, enabling users to easily search for previously answered questions. The platform must have low loading times and high reliability and availability. Additionally, the platform must protect the privacy and integrity of the client's data.
- 15/02/2018: Added moderator, discriminated reputation points formula, and specified how to acquire badges.
- 19/02/2018: Added Figure illustrating reputation points formula.
GROUP1763, 08/02/2018
André Cruz, up201503776@fe.up.pt
Daniel Marques, up201503822@fe.up.pt
Edgar Carneiro, up201503784@fe.up.pt
João Carvalho, up201504875@fe.up.pt