<!DOCTYPE html>
<!-- ========================================== kroc camen of camen design ============================================= -->
<title>code · The Next Web</title>
<link rel="stylesheet" type="text/css" href="/design/design.css" />
<meta name="viewport" content="width=device-width, maximum-scale=1.0, user-scalable=no" />
<link rel="alternate" type="application/rss+xml" href="/code/rss" title="Just code" />
<link rel="canonical" href="/code/the_next_web" />
<!-- =================================================================================================================== -->
<header>
	<h1><a href="/" rel="index">
		Camen Design
	</a></h1>
	<nav><ul>
		<li><a href="/">all</a></li>
		<li><a href="/projects">projects</a></li>
		<li><a href="http://forum.camendesign.com">forum</a></li>
	</ul><ul>
		<li><a href="/quote/">quote</a></li>
		<li><a href="/writing/">writing</a></li>
		<li><a href="/blog/">blog</a></li>
		<li><a href="/photo/">photo</a></li>
		<li><a href="/code/" rel="tag">code</a></li>
		<li><a href="/art/">art</a></li>
		<li><a href="/link/">link</a></li>
		<li><a href="/poem/">poem</a></li>
		<li><a href="/audio/">audio</a></li>
	</ul><ul>
		<li><a href="/web-dev/">web-dev</a></li>
		<li><a href="/annoyances/">annoyances</a></li>
		<li><a href="/eve/">eve</a></li>
		<li><a href="/code-is-art/">code-is-art</a></li>
		<li><a href="/inspiration/">inspiration</a></li>
		<li><a href="/windows/">windows</a></li>
		<li><a href="/gift/">gift</a></li>
		<li><a href="/gaming/">gaming</a></li>
		<li><a href="/mac/">mac</a></li>
		<li><a href="/osnews/">osnews</a></li>
		<li><a href="/c64/">c64</a></li>
		<li><a href="/linux/">linux</a></li>
	</ul>
	<a rel="previous" href="/code/linear_recursion">
		older article →
	</a><a rel="next" href="/code/text-adventure">
		← newer article
	</a></nav>
</header>
<!-- =================================================================================================================== -->
<article><header>
	<!-- date published or updated -->
	<time pubdate datetime="2011-04-15T12:53:00+01:00">
		<sup>12:53<abbr>pm</abbr> • 2011</sup>
		<abbr title="April">Apr</abbr> 15
	</time>
	<!-- categories -->
	<ul>
		<li><a href="/code/the_next_web" rel="bookmark tag">code</a></li>
		<li><a href="/web-dev/the_next_web">web-dev</a></li>
	</ul>
	<!-- licence -->
	<small>
		<a rel="license" href="http://creativecommons.org/licenses/by/3.0/deed.en_GB">c</a>
		share + remix
	</small>
</header>
<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
<p>
	<small>This is an <a href="/passion_process">abandoned project</a>, now made publicly available and free for
	anybody to use, adapt and share.</small>
</p>
<section>
<h1>The Next Web</h1>
<ol>
	<li><a href="#whatis">What Is the Next Web?</a></li>
	<li><a href="#getthere">How Do We Get There?</a></li>
	<li>
		<a href="#thinktank">Announcing ThinkTank</a>
		<ol>
			<li><a href="#principles">Principles</a></li>
			<li><a href="#looklike">What Does ThinkTank Look Like?</a></li>
		</ol>
	</li>
	<li><a href="#getstarted">Getting Started</a></li>
</ol>
<p>
	<strong>Could you tell me who made the first commercial e-mail client, and what it was called?</strong> Any idea?
	No, me neither. It’s a footnote of history.
</p><p>
	So when Twitter says to its API users that they don’t want any more clients to be made and that all clients and
	software displaying tweets must do so in a way defined by them, it should strike you as obvious that Twitter fears
	becoming a footnote in history as a new form of communication becomes commonplace.
</p><p>
	Imagine if e-mail was a brand owned by one company, who kept changing their mind on the API, who had to approve
	e-mail clients and could turn them down and disconnect them if they were not displaying e-mail “consistently”.
</p><p>
	This is not the future of the web no more than closed app stores and sand-boxed apps that can’t even talk to each
	other are the future of the software market.
</p>
<blockquote>
	<p>
		Let’s be clear: APIs and API keys mean that you are at the mercy of the provider. They can shut you off
		whenever they want. They will shut you off if you take their name in vain. They will shut you off when they
		decide that only certain types of innovation are welcome.
	</p><p>
		On the other hand open protocols are basically a gentleman’s agreement of how things should work and the
		language that machines use to communicate with one another.
	</p>
	<cite><a href="http://buddycloud.com/cms/content/api-dead-long-live-protocol-aka-avoid-being-screwed-closed-social-networks" rel="external">The API is Dead. Long Live the Protocol.</a></cite>
</blockquote>


<h2 id="whatis">What Is the Next Web?</h2>
<p>
	We have e-mail, which is designed around the assumption of being offline most of the time and picking up the e-mail
	when you are online. Given that the world is moving toward an ever more permanent state of being online, there’s
	no future in that. We have instant messaging, which is designed around the assumption that both parties are online
	at the same time, but given that we don’t sit exclusively in front of desk-Internet anymore and are becoming more
	and more in a constant flux of <dfn title="Away From Keyboard">AFK</dfn>, that’s no good either. Twitter has been
	successful because the model is right. It has the real-time feeling of IM, but the time-shifted reliability of
	e-mail.
</p><p>
	This new model will, inescapably, need to diverge and spread to succeed just as e-mail and IM before it. It won’t
	survive if it is owned by one company who can pick and choose who can participate—or who can’t.
</p><p>
	The next web is simply where this new form of communication is diverse and widespread, just like the website web.
</p><p>
	Imagine this. Advocates and early adopters begin running on their personal websites a simple web application that
	allows them to publish their thoughts in Twitter fashion. This is accessible to other websites and users as an RSS
	feed that they can follow in their own web app / client of choice. Using an
	<a href="http://ostatus.org/" rel="external">open protocol</a>, these users on different websites—potentially
	running different software—can follow / reply and “retweet” each other just as if it were a centralised
	system.
</p><p>
	This gains traction with developers as a nice way to micro-blog on their own website, and follow other luminaries.
	Twitter clones start to pop up that function in the same manner, but act as a place where web users who do not have
	their own domain or the necessary skills to run their own web application can sign up for an account and start
	publishing their thoughts, but also interact with those who publish on their personal websites. These Twitter clones
	are therefore not inward-facing silos that only allow its users to interact with other users on the same domain, but
	to interact with any user on any other website.
</p><p>
	From this, native applications start to appear (just like IM clients, Twitter clients and e-mail clients), so that
	users do not have to always visit a website to post / read. These clients will be much like current Twitter clients,
	but interoperate with thousands of different sources. Since Twitter have stated that they want no more innovation in
	Twitter clients, these clients will be free to innovate and compete, creating experiences that far surpass what
	Twitter alone can provide within its walls.
</p><p>
	When the ability to cross message from one website / client to another becomes common on the Internet, new forms of
	web site / app design start to appear.
</p>
<blockquote>
	<p>
		I can imagine a day when blog comments are just people hitting “reply” in their RSS reader.
	</p>
</blockquote>
<p>
	You don’t beat Twitter by copying it. You beat it by allowing anybody to participate anywhere on the web. You do
	your little bit and leave everybody else to do their bit rather than creating yet another brand trying to catch all
	the users in one place.
</p>


<h2 id="getthere">How Do We Get There?</h2>
<p>
	We start by publishing our thoughts to our own websites using software that interoperates through open protocols.
</p><p>
	Sadly, this software doesn’t exist yet. <a href="http://rstat.us" rel="external">rstat.us</a> is a Twitter clone
	that is working on the interoperability problem by implementing the <a href="ostatus.org">oStatus protocol</a>.
	The problem with rstatus is that it’s copying Twitter too much. rstatus is an open piece software for running a
	website for lots of people to all share. I don’t want to run my own Twitter for multiple people, I want my website
	to be my profile and not anybody else’s. My personal thoughts, my personal space. But it’s more than just that;
	Twitter is a very narrow-minded (and increasingly narrowing) view of the web. The web is far more than the model
	that Twitter is trying to keep a tight hold on.
</p><p>
	The only solution is to adapt rstatus, or write your own.
</p>


<h2 id="thinktank">Announcing ThinkTank</h2>
<p>
	ThinkTank is a self-hosted PHP web-application for the collection of thoughts and interactions with others across
	the web.
</p><p>
	Think of ThinkTank as a two-way, glorified RSS-reader. Its simplest function is to allow you to type a thought and
	to publish that to an RSS feed. Other people may then follow that feed, either in their usual aggregator, or in an
	oStatus client, of which ThinkTank is one. Thus, ThinkTank allows you to read other people’s published thoughts
	whilst publishing your own.
</p><p>
	This differs from Twitter in that Twitter is a single web-site where there are many users in close-knit. ThinkTank
	is the opposite in that each running instance of ThinkTank is just one person, who may be running the software on
	their personal website. The web is made up of millions of inter-connected websites and ThinkTank aims to be just one
	small part of a similar inter-connected mesh of thoughts. Instead of one central website that everybody goes to,
	everybody posts their thoughts on their own website, and follow other people’s thoughts on their websites.
</p>


<h3 id="principles">Principles</h3>
<p>
	Purity comes from principle. ThinkTank’s purpose is not to be the one solution to the problem. It is a small
	bit-player getting the ball rolling. ThinkTank’s development is guided by a set of principles that limit its
	nature from growing beyond its purpose.
</p>
<dl>
	<dt id="standard">i. ThinkTank shapes standards rather than shaping itself to others</dt>
	<dd>
		<p>
			Twitter have been clear in their message that there is to be no more innovation outside of their
			walls. In no way will ThinkTank bend itself to suit them, ThinkTank will expect Twitter to bend
			themselves to fit the standards. Considering that if oStatus clients really take off, Twitter will
			be likely engage in a pointless war to avoid interoperating with others to trap its user base
			within. ThinkTank will not be party to this and therefore from the outset will never have any kind
			of Twitter or Facebook or other closed provider integration or interaction other than through
			standards such as RSS.
		</p><p>
			If people want to simultaneously post to their Twitter and their ThinkTank (or other oStatus
			client), that should be left up to another piece of software (ideally a native multi-protocol
			client). Remember—not everybody has, or wants, or should need a Twitter account. There will be
			plenty of people who will only have a ThinkTank instance or somesuch client. Is it not wrong when
			an app has “social integration”, but what that really means is "Facebook or Twitter". This is
			forcing business their way, rather than opening choice, and especially opening the ability for
			anybody to write their own ‘twitter’ and see equal treatment in such apps. We should not
			therefore put Twitter at a higher position in our design that Joe McBob’s oStatus client coded
			in BASIC. We should just write an oStatus client, and let the great open ’Web solve the problem
			of Twitter integration, one way or another. If enough people use ThinkTank, then it will happen!
		</p><p>
			ThinkTank is not Twitter. It’s a thought-blog. Whilst Twitter has been the melting pot for many
			conventions now used, and ThinkTank should adopt conventions where beneficial, Twitters
			limitations are based on its centralised model and its early beginnings relying on text-messaging.
			The 140 character limit for example, should not be copied as this only existed because of
			text-messaging. Now, the 140 limit has its uses, I won’t deny that. It forces one to be concise,
			but more so, to articulate yourself in one sentence. But there are times where it becomes a
			hindrance. No, ThinkTank shouldn’t have a character limit, but it should post every time you
			press return. <samp>:)</samp> (unless perhaps pressing shift+enter, or pasting).
		</p><p>
			Your ThinkTank thoughts should be cheap and many, as is with Twitter. Just because you can write
			more, doesn’t mean that people will write great long posts 99% of the time. That’s just
			overreacting to the fear of losing the 140 char limit.
		</p><p>
			To say that all oStatus clients should be limited to 140 chars is to say that the web should be
			limited likewise. Because this is all just RSS, it is a given that any oStatus client may be
			presented with more than 140 chars, and I would expect—or at least hope—that clients like
			rstatus will show the first 140 chars, truncate, and then link to the original post (like deckly).
			This is not my problem to solve in my software, but rather an answer for each client to choose.
			ThinkTank could have a user option to restrict all entries to 140 chars, and truncate longer
			entries, but this should not be default. The input box in ThinkTank should show how many chars are
			entered for those who want to limit themselves, or know that their ThinkTank thoughts will be
			syndicated to Twitter.
		</p><p>
			But, more so, why should there be a difference between a thought and a full blown blog entry?
			It’s just RSS, it’s just a stream. Why should a website have to differentiate if it doesn’t
			want to? Why run a blog <strong>and</strong> a ThinkTank instance? Why have to post a thought to
			link to a blog? Seems redundant. I can imagine a day when blog comments are just people hitting
			“reply” in their RSS reader.
		</p>
	</dd>
	<dt id="brand">ii. ThinkTank is not a brand</dt>
	<dd>
		<p>
			ThinkTank is a piece of software. The website / company you run is your brand. ThinkTank is not
			looking to float on the stock market with a record-busting IPO. ThinkTank has no business model,
			does not need to raise venture capital and does not have an “exit strategy”; ThinkTank is a
			piece of open-source software, owned by everybody.
		</p><p>
			The thoughts you publish to ThinkTank are not called “tweets”, they can be called thoughts,
			because that’s what they are. You do not “retweet”, you echo. ThinkTank does not want to
			crowd the landscape with stupid technobabble. Since each person runs their own oStatus client,
			they are free to call these things anything they want, including tweets, and ThinkTank has no
			problem with that; it’s just not going to add more silly words to the mix.
		</p><p>
			Words like “oStatus” should <em>never</em> be mentioned to the end-user.
		</p><p>
			ThinkTank should be like a keyboard. An interface that is as much as is required, as little as is
			needed and expressly for the purpose of transliterating human thought. Everything that happens
			underneath is simply magic that is not to be the consideration of the writer. ThinkTank does not
			wear its implementation on the outside.
		</p><p>
			I hope one day that ThinkTank is gone and forgotten because we’ve all moved on to better things.
			Mission accomplished.
		</p>
	</dd>
	<dt id="solution">iii. ThinkTank only needs to solve its problem, not everybody else’s</dt>
	<dd>
		<p>
			ThinkTank will solve my problem. I want my own personal Twitter running on my website that lets me
			follow and reply to other people’s thoughts on their websites. ThinkTank is not trying to be
			everything for everybody or solve a generic problem, generically.
		</p><p>
			ThinkTank will not solve the problem of how difficult it is for “regular” users to run their
			own self-hosted web apps. When there is demand, somebody else will solve that. ThinkTank is aimed
			at any web user interested and capable of copy, pasting and running some code on a web server.
			Software for “regular” users will come at a late date.
		</p><p>
			ThinkTank will not solve the problem of Twitter or Facebook integration / migration / domination.
			ThinkTank alone cannot do that. It will take many different clients to do that.
		</p><p>
			If ThinkTank doesn’t suit your needs, modify it or write your own client. That’s how this the
			next web succeeds. People using what works for them. I won’t change ThinkTank to suit everybody.
		</p>
	</dd>
</dl>


<h3 id="looklike">What Does ThinkTank Look Like?</h3>
<p>
	Here be dragons.
</p><p>
	Considering I haven’t written it yet, it doesn’t look like anything, but essentially this is how it will be
	designed; ThinkTank would be split into two parts:
</p>
<ol>
	<li>
		<p>
			A private interface, just for the website owner, which would be a consistent, well-design client
			interface much the same as when you are logged in as yourself in Twitter or rstatus. It would list
			all the thoughts from the people you follow and allow you to publish to your feed.
		</p>
	</li><li>
		<p>
			A public interface, of essentially infinite possibility, that the owner includes in their website,
			that lists that owner’s thoughts only (their public profile). This interface can either be a
			standard template on its own page, or a custom interface made to integrate to that person’s
			particular website. It could even be nothing but a JSON file to be honest. Here there is infinite
			flexibility since it must work with an infinitely variable web.
		</p><p>
			ThinkTank itself would not need to be something infinitely configurable, but rather just provide
			templates that people can modify to suit their desired style. For example, a single separate page,
			a side-column module, a ticker feed, and so on. People take these and then insert them into their
			websites either verbatim, or modify the HTML/CSS to their liking. It’s just an RSS feed at the
			end of the day. No rules on how you want to choose to display it.
		</p><p>
			In the case of somebody who wants to run multiple identities, this is easy. In their private
			interface they can have more than one identity configured so that they can post to either from the
			same interface. This goes to two separate RSS feeds (one for each identity) and then they can use
			whatever public interface is appropriate, in whatever location, for each of the identities. It
			could be two entirely different websites displaying each of the feeds. It’s just RSS.
		</p>
	</li>
</ol>


<h2 id="getstarted">Getting Started</h2>
<p>
	You can help in a number of ways:
</p>
<ul>
	<li>
		<p>
			If you’re thinking about writing your own oStatus client, refer to
			<a href="http://oStatus.org" rel="external">oStatus.org</a> for specifications, and
			<a href="http://rstat.us/open_source" rel="external">rstat.us</a> as an example implementation
			under development
		</p>
	</li><li>
		<p>
			<a href="http://forum.camendesign.com" rel="external">Discuss ThinkTank</a> in my website’s
			forum
		</p>
	</li><li>
		<p>E-mail me at <a href="mailto:kroc@camendesign.com">kroc@camendesign.com</a></p>
	</li><li>
		<p>Do your own thing</p>
	</li>
</ul>
</section>
<p>
	<small>This is an <a href="/passion_process">abandoned project</a>, now made publicly available and free for
	anybody to use, adapt and share.</small>
</p>
<!-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -->
</article>
<footer>
	<nav><a href="http://forum.camendesign.com">‹ Discuss this in the Forum ›</a></nav>
		
	<a href="mailto:kroc@camendesign.com">kroc@camendesign.com</a>
	<nav>view-source:
		<a href="/code/the_next_web.rem">Rem</a> •
		<a href="/code/the_next_web.html">HTML</a> •
		<a href="/design/">CSS</a> •
		<a href="/.system/">PHP</a> •
		<a href="/.htaccess">.htaccess</a>
	</nav>
	<form method="get" action="https://duckduckgo.com">
		<input type="hidden" name="sites" value="camendesign.com" />
		<input type="search" name="q" placeholder="search…" />
		<input type="submit" value="Go" />
	</form>
</footer>
<!-- =================================================================================================== code is art === -->