Sequiturs improved enormously this past summer! We shipped a ton of code and got valuable feedback on the product. Here are the highlights:
The biggest feature we shipped this summer was Prompts. Prompts are submitted by users and consist of (1) a title and (2) a url or bit of text. They serve as an inspiration or starting point for discussion.
The idea of user-submitted topics for discussion will be familiar to users of, say, Reddit or Hacker News, but what makes prompts on Sequiturs unique is that users respond to prompts with arguments in the Sequiturs format. This makes for a better discussion of the topic in question, because that discussion can only be initiated by developing a coherent argument about the topic. Because half-baked thoughts and mood affiliation don’t fit well in the Sequiturs format, they’ll tend to be filtered out. What remains is a richer conversation for those who really want to explore the essence of the topic and engage in an open-minded, good-faith attempt to learn from each other.
The Prompts feature was driven by observing that new visitors to Sequiturs were unlikely to have an argument ready to write up off the top of their heads. Prompts address this problem by giving users something to talk about.
Users can create prompts that are public, or private to a group. Public prompts are listed on the Explore page, ranked by an algorithm that discounts how many responses they have for how old they are. This ensures that new prompts will be shown alongside the most popular prompts. Private prompts are listed on their group’s homepage.
Prompts with a url display a preview of the url’s content, similarly to how content is previewed on Twitter or Facebook–here’s an example.
Sequiturs is proud to contribute to free and open-source software. In August we open-sourced a library for node.js called bookshelf-advanced-serialization, which is a plugin for the Bookshelf.js object-relational mapper used on the Sequiturs backend.
bookshelf-advanced-serialization is essential for powering Sequiturs’ REST API in a concise, flexible manner. It supports serializing database objects into JSON according to application context, the access permissions of the client, and the objects’ relations to other objects.
Also, bookshelf-advanced-serialization seems like a natural fit for powering a GraphQL backend, which is a possibility we might explore in the future.
Refactoring might lack the glamour of launching a new feature, but it is no less impactful. This summer saw some crucial improvements to the Sequiturs codebase that will keep it lean and maintainable for the long term.
We significantly simplified permissions logic throughout the frontend and backend.
- We removed the ability to contribute anonymously–that is, for arguments, comments, prompts, etc. to lack an associated user id. We made this change on the grounds that this was a no-lose for the end-user, since someone who wishes to remain anonymous can easily create a throwaway account (as is common on other platforms), and a clear win for Sequiturs, because it enabled stronger enforcement of data integrity at the database layer, allowed us to delete lots of client- and server-side logic around anonymous authors, and makes spamming more difficult.
- We implemented enforcement of a rule that private content (arguments, prompts, etc.) always be associated with exactly one group. This again presented clear wins for ensuring data integrity and simplifying permission logic through the application. Previously, we had allowed content to be private to the authoring user but no particular group. This functionality is still supported under the new implementation: users can create groups of which they are the sole member. We also previously allowed content to be private to multiple groups. That functionality was born out of a desire to support private side conversations inside a larger discussion, but it came to seem clearly premature and not worth the cost of continued support at present.
We also simplified how the data model stores url slugs for arguments. Originally, all slugs were kept in their own table, to accommodate changing slugs over time while still supporting redirecting from old slugs. This required a SQL
JOINonto the argument slugs table every time someone wanted to read an argument model. Our refactor involved moving the most recent (or what we refer to as the ‘primary’) slug into a column on the arguments table, leaving the separate slugs table to exist solely for the purpose of supporting redirects from old slugs. This eliminates the need for a
JOINevery time an argument is queried.
In late July, I attended the biennial conference of the American Association of Philosophy Teachers in Saginaw, Michigan. Sequiturs was inspired by my experience studying philosophy as an undergraduate and briefly exploring graduate study, so I was very interested to present it to people who are passionate about teaching philosophy. My goal was to explore the use case of Sequiturs as a tool for teaching critical thinking, and on this count I got some very valuable feedback and helpful feature requests. I am very grateful to all those who shared their time in speaking with me.
- We implemented HTTP Strict Transport Security (HSTS) and submitted sequiturs.com to the HSTS preload list. We are proud to have an A+ grade on the SSL report from Qualys SSL Labs.
- We take security and privacy extremely seriously at Sequiturs. We believe firmly in doing right by our users, being the change we want to see in the world when it comes to information security and privacy, and doing so even if it comes at the expense of product velocity.
- We implemented an ability to browse arguments on Sequiturs by tag, on the Explore page. Tags are ranked using an algorithm similar to what we use for ranking prompts, and are displayed in a size corresponding to their relative popularity.
- We deployed an internal ‘success’ application for efficiently tracking important metrics and guiding product development.
We’ve started the Fall off strong, by shipping code this past week that makes comments editable. This was a user-requested feature and we were happy to oblige!
The three major product goals for the coming quarter are:
- Implement the ability to use sub-arguments.
- This means allowing the conclusion of argument A to be used as a premise in argument B; A is therefore a sub-argument of B. Arguments being able to depend on each other in this way will make the Sequiturs argument format much more powerful.
- Implement a karma score attached to users (a basic form of so-called gamification), determined by user contributions.
- Implement voting on the truth / falsity of propositions in an argument.
Thanks for reading, and thanks for using Sequiturs! As always, I welcome you to contact me at firstname.lastname@example.org.