lobste.rs icon and views
This commit is contained in:
commit
66c48c26e6
|
@ -0,0 +1,46 @@
|
|||
li .byline a.story_has_suggestions {
|
||||
color: #bd6060;
|
||||
}
|
||||
|
||||
a.tag_announce, a.tag_ask, a.tag_show, a.tag_interview {
|
||||
background-color: #f9ddde;
|
||||
border-color: #f0b2b8;
|
||||
}
|
||||
|
||||
span.hat_openbsd_developer span.crown {
|
||||
font-family: comic sans ms, comic sans, comic neue, sans-serif;
|
||||
font-size: 7pt;
|
||||
}
|
||||
|
||||
span.hat_sysop {
|
||||
border-color: #bbb2b2;
|
||||
}
|
||||
span.hat_sysop span.crown {
|
||||
background-color: #ddc7c7;
|
||||
}
|
||||
|
||||
#l_holder {
|
||||
background: #ee0000 url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAAZiS0dEAL0ALQAtZF7+HAAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9wCCBAuLt2rqugAAACMSURBVDjL1ZMxCsJQEERfRPEk9im9mGfxBpaCnaXmBraeQEidKsKz2eIb/peEIOLAwu4Ws7PMbsUAKlOwYCaWmd4aWCV1B4yXpR59R61SitwKDdBHfgPaSTsF8zOmHz5NLykAeCRqvuvCfxGcgP0YF3ZqHy7c1Yt6jfo8dCF3idvkQjcRRVQ/f6bZBC+RBoeZnlCyqwAAAABJRU5ErkJggg==) no-repeat;
|
||||
background-position: center;
|
||||
}
|
||||
|
||||
@media
|
||||
only screen and (min-resolution: 2dppx),
|
||||
only screen and (-webkit-min-device-pixel-ratio: 2) {
|
||||
#l_holder {
|
||||
background: #ee0000 url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJLR0QAAAAAAAD5Q7t/AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH4AsLFB03Jr/FjQAAAVZJREFUWMPtlr1KQ0EQhc+ZdZMQEkQlNopKENu8gLWVvkQa8QHs8wQ+h4UPYG+fTpsQEATJhYtFrkKy2btrFYuwV/Kv6D2w1QzLNzPLngFy/XcxK9DpdAr1er05zSXOuUet9cM8ABtZgVKpVAZwDeCAZDDPe58CeCV5B2C5AFprQzICsE9mNsoBiAF0VzajOI4raZre+wk55977/f72Wh7KaDS6CgA8L+NumZYh9ATWCbAy5QA5wN8GMMY0jDGNHwEYDofHSqm2Uqrd6/XKawdQSt2QFJJSrVZPZjajBb/uUxG5GJuYiFRW0YGgRSZJsiMitxPjeFm0A6EKdq215wA+ABRIbgI4AnBJco8kvPcgiSRJopnLa7VaHAwGh9baszRNnwJumHkmctxcK1kURVu1Wu3tKzGwlHifbYjjfO+9FRE98wiKxaL/ZhPKhAqoi1y5cv1mfQLQB8QlNdQ0/wAAAABJRU5ErkJggg==) no-repeat;
|
||||
background-size: 16px;
|
||||
background-position: 1px 1px;
|
||||
}
|
||||
}
|
||||
|
||||
div#hat_holder {
|
||||
float: left;
|
||||
width: 33px;
|
||||
height: 16px;
|
||||
}
|
||||
img#party_hat {
|
||||
position: relative;
|
||||
top: -36px;
|
||||
left: 2px;
|
||||
}
|
|
@ -0,0 +1,11 @@
|
|||
<div class="box wide">
|
||||
<div class="legend">
|
||||
404
|
||||
</div>
|
||||
|
||||
<div class="story_text">
|
||||
<p>
|
||||
The resource you requested was not found, or the story has been deleted.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
|
@ -0,0 +1,248 @@
|
|||
<div class="box wide">
|
||||
<div class="legend">
|
||||
About
|
||||
</div>
|
||||
|
||||
<div class="story_text">
|
||||
<p>
|
||||
Lobsters is a technology-focused community centered around link aggregation
|
||||
and discussion.
|
||||
Launched on July 3rd, 2012, it was created by <a href="/u/jcs">joshua
|
||||
stein</a> with some specific design goals in mind to avoid problems faced by
|
||||
other link aggregation sites:
|
||||
</p>
|
||||
|
||||
<ul>
|
||||
<li>a <a href="#tagging">tagging</a> system to categorize and filter
|
||||
submissions,
|
||||
<li>a user <a href="#invitations">invitation tree</a> to combat spam,
|
||||
<li><a href="#downvotes">downvote explanations</a> to curb reflexive
|
||||
downvoting,
|
||||
<li>a strong commitment to <a href="#transparency">transparency</a>,
|
||||
<li>and <a href="#features">many other features</a> that have been added over
|
||||
the years.
|
||||
</ul>
|
||||
|
||||
<p id="tagging">
|
||||
<strong>Tagging</strong>
|
||||
<br>
|
||||
When links/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 all submissions with particular tags, but
|
||||
rather than use rigidly segmented sub-forums that users must each subscribe
|
||||
to, all users see all stories by default. The reason for this is threefold:
|
||||
</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 conversation centralized. 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">meta</a>-tagged requests about them.
|
||||
</p>
|
||||
|
||||
<p id="invitations">
|
||||
<strong>Invitation Tree</strong><br />
|
||||
Invitations are used as a mechanism for spam-control and to encourage users
|
||||
to "be nice". New users must be invited by a current user, though there is
|
||||
no vetting process and invitations are not intended to promote exclusivity.
|
||||
The most efficient way to receive an invitation is to talk to someone you
|
||||
recognize from the site or
|
||||
<% if Rails.application.allow_invitation_requests? %>
|
||||
<a href="/invitations/request">request one publicly</a>.
|
||||
<% else %>
|
||||
request one in <a href="/chat">chat</a>.
|
||||
<% end %>
|
||||
Invitations are unlimited unless scaling problems temporarily prevent new
|
||||
accounts. If spammers are invited to the site and banned, the user that
|
||||
invited them may also be banned, going up the chain of invitations as needed.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
The full <a href="/u">user tree</a> is made public and each user's profile
|
||||
shows who invited them. This provides some degree of accountability and can
|
||||
act as a tool to help identify voting rings.
|
||||
</p>
|
||||
|
||||
<p id="downvotes">
|
||||
<strong>Downvote Explanations</strong><br />
|
||||
Often on other sites, a user would have his or her comment downvoted without
|
||||
explanation and then edit their comment to ask why they were downvoted. On
|
||||
this site, voters must choose a reason before downvoting comments and those
|
||||
votes are tallied and shown to the original commenter.
|
||||
</p>
|
||||
<p>
|
||||
For submitted stories, downvoting is done through flagging (also requiring a
|
||||
valid reason) and these flag summaries are shown to all users.
|
||||
</p>
|
||||
|
||||
<p id="transparency">
|
||||
<strong>Transparency Policy</strong><br>
|
||||
All <a href="/moderations">moderator actions</a> on this site are visible to
|
||||
everyone and the identities of those moderators are <a
|
||||
href="/u?moderators=1">made public</a>. While the individual actions of a
|
||||
moderator may cause debate, there should be no question about which moderator
|
||||
it was or whether they had an ulterior motive for those actions.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
All user voting and story ranking on this site uses a universal algorithm and
|
||||
does not <a
|
||||
href="http://www.righto.com/2013/11/how-hacker-news-ranking-really-works.html"
|
||||
rel="nofollow">artificially penalize</a> or prioritize users or domains.
|
||||
Per-tag <a href="/filters">hotness modifiers</a> do affect all stories with
|
||||
those tags, but these modifiers are made public and usually used to shorten
|
||||
the life of meta-discussions. If certain domains have to be banned from
|
||||
being submitted due to spam, the list will be made publicly available.
|
||||
</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 hidden,
|
||||
antisocial "shadow banning" or "hellbanning" of users.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
The <a href="https://github.com/jcs/lobsters">source code to this site</a> is
|
||||
made available under a 3-clause BSD license for viewing, auditing, forking,
|
||||
or contributing to.
|
||||
Public stats are available for
|
||||
<a href="http://countinual.com/jcs/counters/lobsters.requests">site
|
||||
requests</a>,
|
||||
<a href="http://countinual.com/jcs/counters/lobsters.comments.submitted">comments
|
||||
submitted</a>,
|
||||
<a href="http://countinual.com/jcs/counters/lobsters.stories.submitted">stories
|
||||
submitted</a>,
|
||||
<a href="http://countinual.com/jcs/counters/lobsters.users.total">total
|
||||
users</a>, and
|
||||
<a href="http://countinual.com/jcs/counters/lobsters.users.created">users
|
||||
created per day</a>.
|
||||
</p>
|
||||
|
||||
<p id="features">
|
||||
<strong>Other Technical Features</strong>
|
||||
</p>
|
||||
<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.
|
||||
</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 proprietary mobile applications.
|
||||
</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><p>
|
||||
<strong><a href="/s/cqq0kg/story_merging">Story merging</a></strong> combats
|
||||
the problem of multiple stories at different URLs being submitted in a short
|
||||
timeframe about the same news subject. Rather than have multiple stories on
|
||||
the front page with fragmented discussions, all similar stories can be merged
|
||||
into one. An <a href="/s/klkmey">example</a> of a story having been merged
|
||||
into a previous one, combining all comments on one page.
|
||||
</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.
|
||||
</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 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://twitter.com/lobsters">Official Twitter
|
||||
mirror</a></strong> posts all stories that have reached the front page to
|
||||
the <a href="https://twitter.com/lobsters">@lobsters</a> account on Twitter
|
||||
for easy following, retweeting/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><a href="/s/zykwh8/lobsters_stickers">Stickers</a></strong> are
|
||||
available to show your support for the site.
|
||||
</p></li>
|
||||
</ul>
|
||||
|
||||
</div>
|
||||
</div>
|
|
@ -0,0 +1,55 @@
|
|||
<div class="box wide">
|
||||
<div class="legend">
|
||||
Lobsters Chat
|
||||
</div>
|
||||
|
||||
<div class="story_text">
|
||||
<p>
|
||||
An official real-time discussion channel is available to members and guests
|
||||
of the site, hosted on the
|
||||
<a href="http://www.freenode.net" rel="nofollow">Freenode IRC network</a>
|
||||
in <tt>#lobsters</tt>. This channel was originally
|
||||
<a href="/s/2hdoop">created</a>
|
||||
by
|
||||
<a href="/u/kristof">@kristof</a>.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
The policies and ideals of the discussion channel are the same as the
|
||||
website; quality content and conversing, respect for other users, and no
|
||||
spamming. Slightly off-topic discussion is generally acceptable. The
|
||||
channel isn't busy enough that there's always someone talking, so don't be
|
||||
surprised if you try to start a conversation and no one responds. Leave it
|
||||
open and you'll see activity, though we're most active during US work hours.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
New contributors are always welcome on Lobsters, but pestering other members
|
||||
in the channel for invites is not acceptable. If you are the author or
|
||||
otherwise involved with a story that was submitted to the site, ask and
|
||||
someone will invite you. Alternately, offer some good links or thoughts on a
|
||||
story and someone will likely invite you so can post them.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
Lurking in the channel is a bot called "<tt>mockturtle</tt>" created and
|
||||
maintained by <a href="/u/alynpost">@alynpost</a>.
|
||||
It announces new stories submitted to the site and provides other useful
|
||||
features like showing the page title of other URLs mentioned in the channel.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
To participate in the discussion, join the
|
||||
<a href="irc://irc.freenode.net/lobsters"><tt>#lobsters</tt></a> channel on
|
||||
<tt>irc.freenode.net</tt> with an IRC client.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
For a feed of stories without discussion, <tt>mockturtle</tt> also posts new
|
||||
stories in <a
|
||||
href="irc://irc.freenode.net/lobsters-feed"><tt>#lobsters-feed</tt></a>
|
||||
on the same network.
|
||||
</p>
|
||||
|
||||
</div>
|
||||
</div>
|
|
@ -0,0 +1,9 @@
|
|||
<div class="box wide">
|
||||
<div class="legend">
|
||||
Privacy Policy
|
||||
</div>
|
||||
|
||||
<p>
|
||||
This is the Internet, you have no privacy.
|
||||
</p>
|
||||
</div>
|
|
@ -0,0 +1,16 @@
|
|||
<a href="/moderations">Moderation Log</a>
|
||||
<% if @user && @user.can_see_invitation_requests? && (iqc = InvitationRequest.verified_count) > 0 %>
|
||||
<a href="/invitations">Invitation Queue (<%= iqc %>)</a>
|
||||
<% end %>
|
||||
<% if @user && @user.is_moderator? && (hrc = HatRequest.count) > 0 %>
|
||||
<a href="/hats/requests">Hat Requests (<%= hrc %>)</a>
|
||||
<% else %>
|
||||
<a href="/hats">Hats</a>
|
||||
<% end %>
|
||||
<% if false %>
|
||||
<% bbs_count = Keystore.get("bbs:nodes_in_use").try(:value).to_i %>
|
||||
<a href="/bbs">BBS<%= bbs_count == 0 ? "" : " (#{bbs_count})" %></a>
|
||||
<% end %>
|
||||
<a href="https://github.com/lobsters/lobsters/wiki">Wiki</a>
|
||||
<a href="/privacy">Privacy</a>
|
||||
<a href="/about">About</a>
|
Binary file not shown.
After Width: | Height: | Size: 4.4 KiB |
Binary file not shown.
After Width: | Height: | Size: 1.7 KiB |
Binary file not shown.
After Width: | Height: | Size: 11 KiB |
Loading…
Reference in New Issue