An RSS-based, passive, load-balanceable distributed Twitter clone (server-side).
Switch branches/tags
Nothing to show
Clone or download
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
avatars Another li'l avatar for testing. Sep 9, 2012
.htaccess Rudimentarily protect the .git folder in case a password gets stashed. Sep 22, 2012
README.md Clarify why I say simple but then mention a rather complicated instal… May 21, 2016
action_404.inc.php Don't pollute URL space as much, implement 404 page Sep 9, 2012
action_deletestatus.inc.php We can now delete statuses. Sep 25, 2012
action_finish_follow.inc.php Expect and vend microblog.rss in the /well-known subfolder Sep 9, 2012
action_finish_install.inc.php Also remember what user retweeted something. Sep 22, 2012
action_finish_profile.inc.php Chirp now operates from a subfolder Sep 22, 2012
action_finish_unfollow.inc.php We now keep track of followers per user. Sep 9, 2012
action_follow.inc.php You can now follow arbitrary other Chirp instances Sep 9, 2012
action_home.inc.php We can now delete statuses. Sep 25, 2012
action_importrss.inc.php We now update all external feeds in one go Sep 9, 2012
action_install.inc.php We now ask for the Database login at install time, too. Sep 22, 2012
action_microblog.inc.php WIP on making it possible to run one script for several users/domains Sep 9, 2012
action_newstatus.inc.php Whoops. We were accidentally storing the reposted status ID instead o… Sep 23, 2012
action_profile.inc.php Remove wrong message and make avatar selection work Sep 9, 2012
action_reply.inc.php When replying, don't reply @ our name, reply @ the status's sender. Sep 22, 2012
action_repost.inc.php We no longer keep around the "RP @foo" portion of reposts. Sep 23, 2012
action_timeline.inc.php We now keep track of followers per user. Sep 9, 2012
action_unfollow.inc.php We now keep track of followers per user. Sep 9, 2012
begininstall.inc.php Chirp now operates from a subfolder Sep 22, 2012
chirp_install.php Stash changes before pulling for new changes. Updates work now. Sep 22, 2012
chronjob.php We now update all external feeds in one go Sep 9, 2012
database.inc.php More work making us correctly look up the database when updating. Sep 22, 2012
format_html.inc.php Make deleting statuses work in the UI. Sep 25, 2012
format_rss.inc.php Merge branch 'master' of github.com:uliwitness/chirp Sep 23, 2012
importrss.inc.php We no longer keep around the "RP @foo" portion of reposts. Sep 23, 2012
index.php We now ask for the Database login at install time, too. Sep 22, 2012
settings.ini Make SQL database name configurable Sep 9, 2012
styles.css Smaller text for controls on a status. Sep 23, 2012
upgrade.inc.php Shut up the error message Sep 23, 2012
usermanagement.inc.php We can now delete statuses. Sep 25, 2012

README.md

Chirp

A reference-implementation of a web interface for an RSS-based, distributed Twitter clone.

Installation

Create a MySQL database and make note of its server domain name, username, password and database name. Upload the chirp_install.php file to your server, so it resides at the root of a domain or sub-domain. Run it, and it will download Chirp into a "chirp" subfolder and create a .htaccess file for you, then let you move on to setting up your database and a username & password for using Chirp. Run the chirp_install.php file again whenever you wish to update to the newest version of Chirp.

Usage

You MUST install this on one domain or sub-domain at root level (the domain name will be your user name). This is then equivalent to one "Twitter account" for one person, and will import statuses from other people whose RSS feeds you subscribe to ("follow").

To follow someone, use the Follow link on your server and type in their domain name (without the "http://"!) (It will then know to look for an RSS feed on that domain, at /.well-known/microblog.rss). After that, be sure to immediately click "Refresh Timeline" so you see new statuses from any accounts you follow.

To set up your own avatar icon, copy a square image into the "avatars" folder on your server, then you can select it in your profile. Currently there's no interface for uploading images.

What's this good for?

The idea is to lay down a simple, open exchange format for microblogs like App.net and Twitter, RSS, that can easily be load-balanced via Akamai or similar services. Everyone who can put an RSS file on a server can have a microblog. Everyone can follow them, whether they host it themselves or have one at Twitter.

For most users, their ISP or web hoster or one of the big services would host the feed, but it won't matter, because they're all interoperable. If Warner Bros. want to host Robert Downey Jr.'s statuses on their server, they can. If a user wants to use an iPhone client application to post, they can.

Since the user names are domain names, existing services can easily be integrated by using subdomains. E.g. @uliwitness could map to uliwitness.twitter.com.

To make this more likely, this code is under a very permissive license. Everyone can grab this code and just use it. Go ahead.

License

Copyright (c) 2012 by Uli Kusterer

This software is provided 'as-is', without any express or implied
warranty. In no event will the authors be held liable for any damages
arising from the use of this software.

Permission is granted to anyone to use this software for any purpose,
including commercial applications, and to alter it and redistribute it
freely, subject to the following restrictions:

	1. The origin of this software must not be misrepresented; you must not
	claim that you wrote the original software. If you use this software
	in a product, an acknowledgment in the product documentation would be
	appreciated but is not required.
	
	2. Altered source versions must be plainly marked as such, and must not be
	misrepresented as being the original software.
	
	3. This notice may not be removed or altered from any source
	distribution.