370 lines
20 KiB
Plaintext
370 lines
20 KiB
Plaintext
<% render partial: 'about/subnav' %>
|
|
|
|
<div class="box wide">
|
|
<%- raise "Site owner: You need to delete app/views/home/about.html.erb and write your own about page" if Rails.env.production? and Rails.application.name != 'Lobsters' -%>
|
|
|
|
<div class="story_text">
|
|
<p>
|
|
Lobsters is a computing-focused community centered around link aggregation
|
|
and discussion, launched on July 3rd, 2012.
|
|
The administrator is <a href="/~pushcx">Peter Bhat Harkins</a> ("pushcx"), contact him with any support issues.
|
|
Lobsters was created by <a href="/~jcs">joshua stein</a>
|
|
with careful design touches to encourage a healthy community:
|
|
</p>
|
|
|
|
<ul>
|
|
<li>a <a href="#tagging">tagging</a> system to categorize and filter submissions,</li>
|
|
<li>a user <a href="#invitations">invitation tree</a> to combat spam,</li>
|
|
<li><a href="#flags">flag explanations</a> to curb punishing disagreement,</li>
|
|
<li>a strong commitment to <a href="#transparency">transparency</a>,</li>
|
|
<li>and <a href="#features">many more features</a> that have been added over the years.</li>
|
|
</ul>
|
|
|
|
<h2 id="tagging">Tags and Topicality</h2>
|
|
<p>
|
|
When links or stories are submitted, they must be tagged by the submitter from a list of predefined <a href="/tags">tags</a>.
|
|
Users can choose to <a href="/filters">filter</a> out or
|
|
subscribe to all submissions with particular tags (example: <a href="https://lobste.rs/t/programming.rss">programming.rss</a>)
|
|
or combinations of tags (example: <a href="https://lobste.rs/t/programming,audio.rss">programming,audio.rss</a>).
|
|
All users see all stories by default.
|
|
The tagging system works this way for three reasons:
|
|
</p>
|
|
|
|
<ul>
|
|
<li><p>
|
|
It keeps the site on-topic by only allowing a predefined list of tags.
|
|
These tags represent what most of the users of the site want to read, so
|
|
content that does not fit into any of those categories should not be
|
|
submitted. It also keeps stories organized and more easily searchable.
|
|
</p></li>
|
|
|
|
<li><p>
|
|
It promotes discussion. On a site with separate forums, a Ruby programmer
|
|
would probably subscribe to a Ruby forum, but not a Python one. When a link
|
|
is posted to the Python forum, that Ruby programmer would probably never see
|
|
it, even though they may have something useful to say about it (perhaps the
|
|
link is about a Python library which does the same thing as a Ruby library
|
|
which that Ruby programmer created). On this site, the link would get posted
|
|
with a <a href="/t/python" class="tag">python</a> tag and shown to everyone,
|
|
encouraging the Ruby programmer to read and comment on it (unless that Ruby
|
|
programmer disliked Python enough to <a href="/filters">filter</a> it out).
|
|
</p></li>
|
|
|
|
<li><p>
|
|
It keeps the community coherent. Often stories contain discussion
|
|
about more than one topic, yet on other sites they are confined to a single
|
|
category/forum, limiting the exposure. The link could be submitted to more
|
|
than one forum, but then each conversation would remain separate and users
|
|
would rarely interact with users from other forums. On this site, the story
|
|
would simply be tagged with multiple tags and all users would see all
|
|
discussion about the story in a single location.
|
|
</p></li>
|
|
</ul>
|
|
|
|
<p>
|
|
Creating new tags and retiring old tags is done by the community by submitting, discussing, and voting on <a href="/t/meta" class="tag tag_meta">meta</a>-tagged requests about them,
|
|
and these events are <a href="https://lobste.rs/moderations?utf8=✓&moderator=(All)&what[tags]=tags">logged</a> (since 2018-04).
|
|
To propose a tag, post a <a href="/t/meta">meta</a> thread with the name and description.
|
|
Explain the scope, list existing stories that should have been tagged, make a case for why people would want to specifically filter it out, and justify the increased complexity for submitters and mods.
|
|
</p>
|
|
|
|
<div id="topicality">
|
|
<p>
|
|
Lobsters is focused pretty narrowly on computing; tags like <a href="/t/art">art</a> don't imply every piece of art is on-topic.
|
|
Some rules of thumb for great stories to submit: Will this improve the reader's next program? Will it deepen their understanding of their last program? Will it be more interesting in five or ten years?
|
|
</p>
|
|
|
|
<p>
|
|
Some things that are off-topic here but popular on larger, similar sites:
|
|
entrepreneurship, management, news about companies that employ a lot of programmers,
|
|
investing, world events, anthropology, self-help, personal productivity systems,
|
|
last-resort customer service requests via public shaming,
|
|
"I wanted to see what this site's amazing users think about this off-topic thing",
|
|
and
|
|
defining the single morally correct economic and political system for the entire world when we can't even settle tabs vs. spaces.
|
|
</p>
|
|
</div>
|
|
|
|
<h2 id="invitations">Invitation Tree</h2>
|
|
<p>
|
|
The full <%= link_to 'user tree', users_tree_path %> is public and each user's profile
|
|
shows who invited them. This provides some degree of accountability and
|
|
helps identify voting rings.
|
|
</p>
|
|
|
|
<p>
|
|
Invitations are used as a mechanism for spam-control,
|
|
to slow registrations to a <a href="https://en.wikipedia.org/wiki/Eternal_September">pace we can acculturate</a> (more below)
|
|
and to encourage users to be nice, not to make the Lobsters userbase an elite club.
|
|
Users are considered "new" for their first <%= User::NEW_USER_DAYS %> days,
|
|
and their usernames appear <span class="new_user">in green</span>.
|
|
New users can't
|
|
send invites,
|
|
submit links to domains we haven't seen submitted before,
|
|
flag stories and comments,
|
|
suggest edits to story titles and tags,
|
|
resubmit links that have been seen before,
|
|
or
|
|
<span id="new-user-tags">use tags for meta discussions or that are prone to off-topic stories
|
|
(<% Tag.not_permitted_for_new_users.pluck(:tag).map { |t| %><%= link_to t, tag_path(t) %> <%- } %>).
|
|
</span>
|
|
</p>
|
|
|
|
<p>
|
|
The quickest way to receive an invitation is to talk to someone you <%= link_to 'recognize from the site', users_tree_path %>.
|
|
If you wrote a link that was posted, please reach out in <a href="/chat">chat</a>, we'd love to have you join the discussion.
|
|
Finally, if you can't find anyone you know in the invitation tree and didn't author something posted to the site,
|
|
<% if Rails.application.allow_invitation_requests? %>
|
|
you can <a href="/invitations/request">request an invite</a>.
|
|
<% else %>
|
|
consider getting to know the community <a href="/chat">in the chat room</a>.
|
|
<% end %>
|
|
</p>
|
|
|
|
<p>
|
|
There's no limit on how many invitations a user can send (though we might at some point, to manage <a href="https://lobste.rs/stats">growth</a>).
|
|
There's also no official vetting process for new users, each user is responsible for inviting people they believe will contribute positively to Lobsters.
|
|
When accounts are banned for spam, <a href="https://en.wikipedia.org/wiki/Sockpuppet_(Internet)">sockpuppeting</a>, or other abuse,
|
|
moderators will consider disabling their inviter's ability to send invitations or, rarely, also ban them.
|
|
</p>
|
|
|
|
<h2 id="ranking">Ranking</h2>
|
|
<p>
|
|
All story and comment ranking on this site comes from user activity.
|
|
All users have equal votes, with no special priorities or penalties for specific users or domains.
|
|
Moderators have no ability to raise or <a href="http://www.righto.com/2013/11/how-hacker-news-ranking-really-works.html">lower</a> the rankings of stories or comments (besides voting like any user).
|
|
Per-tag <a href="/filters">hotness modifiers</a> affect all stories with
|
|
those tags, but these modifiers (and <a href="https://lobste.rs/moderations?utf8=%E2%9C%93&moderator=(All)&what[tags]=tags">changes</a> to them) are public.
|
|
Domains used for marketing analytics are banned and tracking parameters are removed from links
|
|
(look for <tt>TRACKING_DOMAINS</tt> and <tt>utm_</tt> in <a href="https://github.com/lobsters/lobsters/blob/master/app/models/story.rb">story.rb</a>).
|
|
</p>
|
|
|
|
<div id="flags">
|
|
<p>
|
|
Users can flag stories and comments when there's a serious problem that needs moderator attention; two flags are needed to add the story or comment to the moderation queue.
|
|
Users must reach <%= User::MIN_KARMA_TO_FLAG %> karma to flag.
|
|
To guide usage and head off distracting meta conversations ("Why was this flagged!?", etc), flagging requires selecting from a preset list of reasons.
|
|
</p>
|
|
|
|
<p>
|
|
For stories, these are:
|
|
"Off-topic" for stories that are not about computing;
|
|
"Already Posted" for duplicate submissions and links that elaborate on or responses to a thread that's less than a week old (see <a href="#merging">merging</a>); and
|
|
"Broken Link" for links that 404, 500, or present a paywall;
|
|
"Spam" for links that promote a commercial service.
|
|
</p>
|
|
|
|
<p>
|
|
For comments, these are:
|
|
"Off-topic" for drifting into meta or topics that aren't related to the story;
|
|
"Me-too" when a comment doesn't add new information, typically a single sentence of appreciation, agreement, or humor;
|
|
"Troll" for derailing conversations into classic arguments, well-intentioned or not;
|
|
"Unkind" when uncharitable, insulting, or dismissive;
|
|
and
|
|
"Spam" for promoting commercial services.
|
|
</p>
|
|
</div>
|
|
|
|
<p>
|
|
Less than 1% of stories or comments get flagged, and users are not automatically punished by flags.
|
|
Users whose stories or comments are getting flagged significantly more often are strongly encouraged to talk to mods about what's not working.
|
|
(Please don't use flagging to try to push down topics or people you don't like; click "hide" on the story and <a href="https://xkcd.com/386">move on</a> rather than clutter up the mod dashboard with false alarms.)
|
|
</p>
|
|
|
|
<h2 id="transparency">Transparency Policy</h2>
|
|
<p>
|
|
All <a href="/moderations">moderator actions</a> on this site are visible to
|
|
everyone and the identities of those moderators are <%= link_to 'public', moderators_path %>.
|
|
While the individual actions of a moderator may cause debate, there should be no question about if an action happened or who is responsible.
|
|
</p>
|
|
|
|
<p>
|
|
If users are disruptive enough to warrant banning, they will be banned
|
|
absolutely, given notice of their banning, and their disabled user profile
|
|
will indicate which moderator banned them and why.
|
|
There will be no <a href="https://en.wikipedia.org/wiki/Shadow_banning">shadow banning</a> or other secret moderation actions.
|
|
</p>
|
|
|
|
<p>
|
|
The <a href="https://github.com/lobsters/lobsters">source code to this site</a> and
|
|
its <a href="https://github.com/lobsters/lobsters-ansible">provisioning and deployment</a> are
|
|
made available under a 3-clause BSD license for viewing, auditing, forking, or contributing to.
|
|
The codebase is used to run a dozen or so sister sites (that we know of) and we <a href="https://github.com/lobsters/lobsters/wiki">keep a list</a>;
|
|
please get in touch if you've launched one.
|
|
</p>
|
|
|
|
<p id="queries">
|
|
The Lobsters community is in a sweet spot that it's large enough to be worth asking questions about and small enough the answers make sense.
|
|
We have <a href="/stats">some basic stats</a> available,
|
|
and Peter is happy to run queries against the <a href="https://github.com/lobsters/lobsters/blob/master/db/schema.rb">database</a> and Rails/MySQL/nginx logs (but not write them for you),
|
|
as long as they don't reveal personal info like IPs, browsing, and voting or create “worst-of” leaderboards celebrating most-flagged users/comments/stories.
|
|
</p>
|
|
|
|
<p>
|
|
If you dislike the content or moderation policies here, you may prefer
|
|
<a href="https://news.ycombinator.com">Y Combinator News</a>,
|
|
<a href="https://reddit.com/r/programming">r/programming</a>,
|
|
<a href="https://slashdot.org">Slashdot</a>,
|
|
<a href="https://tilde.news">Tilde News</a>, or
|
|
<a href="https://en.wikipedia.org/wiki/Comp.*_hierarchy">comp.*</a>.
|
|
Or you could use <a href="https://github.com/lobsters/lobsters/">our codebase</a> to start your own site.
|
|
</p>
|
|
|
|
<h2 id="features">Other Technical Features</h2>
|
|
|
|
<ul>
|
|
<li><p>
|
|
<strong><a href="/s/jg3eet">Mailing list mode</a></strong> can be enabled
|
|
per-user to receive all new stories (including their plain-text content as
|
|
fetched and extracted by <a href="http://diffbot.com/">Diffbot</a>) and user
|
|
comments as e-mails, mirroring discussion threads offline. This makes it
|
|
easy and efficient to read new stories as well as keep track of new comments
|
|
on old threads or stories, just like technical mailing lists or Usenet of
|
|
yore. Each user is assigned a private mailing list address at this domain
|
|
which allows them to reply to stories or comments directly in their e-mail
|
|
client. These e-mails are then converted and submitted to the website as
|
|
comments, just as if the comment was posted through a web browser.
|
|
<%- raise "Don't just delete that error message. You didn't set up mailing list mode, right? This really isn't your about page, write one from scratch." if Rails.env.production? and Rails.application.name != 'Lobsters' -%>
|
|
</p>
|
|
|
|
<li><p>
|
|
<strong>Private messaging</strong> enables users to communicate privately
|
|
without having to publicly disclose an e-mail address, and users can receive
|
|
e-mail and <a href="https://pushover.net/">Pushover</a> notifications of new
|
|
private messages.
|
|
</p></li>
|
|
|
|
<li><p>
|
|
<strong>Responsive design</strong> enhances functionality on smaller screens
|
|
such as phones and tablets without having to use a separate URL, 3rd party
|
|
(often read-only) websites, or mobile apps.
|
|
</p></li>
|
|
|
|
<li><p>
|
|
<strong><a href="/search">Integrated search engine</a></strong> covers all
|
|
submitted stories and comments, including full-text caches of all submitted
|
|
story contents. Searching for a keyword will often bring up relevant stories
|
|
that don't even mention that keyword in the URL or title.
|
|
</p></li>
|
|
|
|
<li id="merging"><p>
|
|
<strong><a href="/s/cqq0kg/story_merging">Story merging</a></strong> collects comments on a topic that would otherwise fragment across multiple stories.
|
|
This keeps the front page from being overwhelmed by a single topic and the discussion together for those interested (or so disinterested they'd prefer to hide it).
|
|
Moderators merge stories on the same topic submitted within a week.
|
|
Here's a <a href="/s/klkmey">small</a> and <a href="/s/zknzmj">large</a> example.
|
|
</p></li>
|
|
|
|
<li><p>
|
|
<strong>Fuzzy-matching of submitted story URLs</strong> to avoid duplicate
|
|
submissions of similar URLs that differ only in <tt>http</tt> vs.
|
|
<tt>https</tt>, trailing slashes, useless analytics parameters, etc. When
|
|
using the story submission bookmarklet, story URLs are automatically
|
|
converted to use the page's canonical URL (if available) to present the best
|
|
URL to represent the story, as defined by the story's author or publisher.
|
|
</p></li>
|
|
|
|
<li><p>
|
|
<strong><a href="/s/z2dczs">User-suggested titles and tags</a></strong> can
|
|
be automatically applied to a story when a quorum of users agrees on a new
|
|
title (such as removing a site's name, or appending the story's year of
|
|
publication) or set of tags, without any moderator action required.
|
|
(<a href="https://lobste.rs/moderations?utf8=%E2%9C%93&moderator=(Users)">Log</a>)
|
|
</p></li>
|
|
|
|
<li><p>
|
|
<strong><a href="/hats">Hats</a></strong> are a more formal process of
|
|
allowing users to post comments while "wearing <em>such and such</em> hat" to
|
|
give their words more authority (such as an employee speaking for the
|
|
company, or an open source developer speaking for the project).
|
|
</p></li>
|
|
|
|
<li><p>
|
|
<strong><a href="/rss">Per-tag, multi-tag and site-wide RSS feeds</a></strong> are
|
|
available to the public and logged-in users have private RSS feeds that
|
|
filter out each user's <a href="/filters">filtered tags</a>.
|
|
</p></li>
|
|
|
|
<li><p>
|
|
<strong><a href="https://botsin.space/@lobsters">Official Fediverse mirror</a></strong>
|
|
posts all stories that have reached the front page for easy following, retooting/sharing, or archiving.
|
|
</p></li>
|
|
|
|
<% if false %>
|
|
<li><p>
|
|
<strong><a href="http://lobsters3ik6yqwj.onion/">Tor onion/hidden
|
|
service</a></strong> for anonymous access to the site.
|
|
</p></li>
|
|
<% end %>
|
|
|
|
<li><p>
|
|
<strong>Stickers</strong> will be available again when someone finds a service that will print and ship 2" square vinyl stickers
|
|
with a bleed <= 1/16" (preferably full-bleed) directly to people who want them.
|
|
</p></li>
|
|
</ul>
|
|
|
|
<h2 id="trivia">Trivia</h2>
|
|
|
|
<ul>
|
|
<li><p>
|
|
Lobsters is hosted on three <a href="https://slugs.do-api.dev/">VPSs</a> at DigitalOcean:
|
|
a <tt>s-4vcpu-8gb</tt> for the web server,
|
|
a <tt>s-2vcpu-4gb</tt> for the mariadb server, and
|
|
a <tt>s-1vcpu-1gb</tt> for the <a href="/chat">IRC bot</a>.
|
|
Our domain name is registered with <a href="https://cridomains.rs/en">CRI Domains</a>, who donated our first year of registration.
|
|
DNS is provided by <a href="https://dnsimple.com/">DNSimple</a> and
|
|
we use <a href="https://restic.net/">restic</a> for backups to <a href="https://www.backblaze.com/b2">b2</a>, both of which pushcx pays for.
|
|
Lobsters is cheap to run, so we <a href="https://lobste.rs/s/95uler/would_there_be_interest_patreon_for#c_9l58ia">don't</a> <a href="https://lobste.rs/s/udj6qf/hosting_update#c_jgro9y">take</a> donations.
|
|
</p></li>
|
|
|
|
<li id="emoji" style="list-style: none; position: relative; left: -1em;">
|
|
<span style="float: left; line-height: 1.5em;">🦞</span>
|
|
<p style="padding-left: 1em;">
|
|
<a href="https://unicode.org/consortium/adopted-characters.html#s1f99E">Sponsor of the lobster emoji</a>:
|
|
In February 2018, Lobsters <a href="https://lobste.rs/s/pnysdr/lobsters_emoji_adoption">held a fundraiser</a>
|
|
to officially adopt the new lobster emoji in support of the Unicode Foundation.
|
|
</p></li>
|
|
|
|
<li id="michaelbolton"><p>
|
|
The name "Lobste.rs" is a cute <a href="https://en.wikipedia.org/wiki/Domain_hack">domain hack</a>
|
|
without any deeper meaning.
|
|
<%- require 'digest/md5'; instance_variable_set("@#{controller_name}#{action_name}", Digest::MD5.hexdigest(Rails.env) == 'fd89784e59c72499525556f80289b2c7' && Digest::MD5.hexdigest(Rails.application.name) != '4e7c4ddc593da2e7a1cc8c6dc2d38eba') -%>
|
|
It <a href="https://www.youtube.com/watch?v=ADgS_vMGgzY">has nothing to do</a>
|
|
with
|
|
<a href="https://www.nytimes.com/2018/05/18/style/jordan-peterson-12-rules-for-life.html">self-help guru</a>
|
|
Jordan Peterson, whose fans started to <a href="https://www.youtube.com/watch?v=hSNWkRw53Jo&t=2408s">call themselves "lobsters"</a>
|
|
about six years after we started.
|
|
</p></li>
|
|
|
|
<li>
|
|
<p>
|
|
As a Rails app that's big enough to have real-world complexity but small enough to be easily read,
|
|
our <a href="https://github.com/lobsters/lobsters">codebase</a> has seen a few interesting uses:
|
|
</p>
|
|
<ul>
|
|
<li>MIT researchers used <a href="https://lobste.rs/s/cqnzl5/lobste_rs_access_pattern_statistics_for">access patterns</a>
|
|
in development of a <a href="https://lobste.rs/s/uxgjha/noria_dynamic_partially_stateful_data">new database</a>.</li>
|
|
<li>University of Chicago researchers unethically <a href="https://github.com/lobsters/lobsters/issues/518">experimented</a>
|
|
on <a href="https://github.com/lobsters/lobsters/issues/517">maintainers</a>
|
|
with <a href="https://lobste.rs/s/3qgyzp/they_introduce_kernel_bugs_on_purpose#c_bxb4rk">institutional complicity</a>.</li>
|
|
<li>
|
|
Shopify's Ruby performance team <a href="https://lobste.rs/s/m9ivcf/we_turned_lobste_rs_into_rails_benchmark">performance tested</a>
|
|
the YJIT compiler they contributed to MRI Ruby.
|
|
</li>
|
|
</ul>
|
|
<p>Please do <a href="https://lobste.rs/~pushcx">reach out</a> if you find a use for our code!</p>
|
|
</li>
|
|
|
|
<li><p>
|
|
We have a backup domain <tt>lobsters.dev</tt> in case of issues with our primary domain.
|
|
</p></li>
|
|
|
|
<li><p>
|
|
If you prefer the article links or comment links to open a new tab instead of navigating in your current tab you can add
|
|
<a href="https://greasyfork.org/en/scripts/392307-lobste-rs-open-in-new-tab">a client-side script</a> to do so.
|
|
(<a href="https://lobste.rs/s/0g48hl/open_links_articles_new_tab">Discussion</a>)
|
|
</p></li>
|
|
|
|
</ul>
|
|
</div>
|
|
</div>
|