README
------
-StatusNet 0.9.5 "What's The Frequency, Kenneth?"
-10 September 2010
+StatusNet 0.9.6 "Man on the Moon"
+29 October 2010
This is the README file for StatusNet, the Open Source microblogging
platform. It includes installation instructions, descriptions of
http://www.opendefinition.org/ossd
StatusNet, Inc. <http://status.net/> also offers this software as a
-Web service, requiring no installation on your part. The software run
+Web service, requiring no installation on your part. See
+<http://status.net/signup> for details. The software run
on status.net is identical to the software available for download, so
you can move back and forth between a hosted version or a version
installed on your own servers.
New this version
================
-This is a security, bug and feature release since version 0.9.3 released on
-29 June 2010.
+This is a security, bug and feature release since version 0.9.5 released on
+10 September 2010.
For best compatibility with client software and site federation, and a lot of
bug fixes, it is highly recommended that all public sites upgrade to the new
Notable changes this version:
-- OpenID and OAuth libraries patched for potential timing attack
-- OStatus feed i/o updated for Activity Streams
-- Correctness fixes on XRD, other discovery bits
-- Support for contacting SNI-based SSL virtual hosts when SSL
- certificate verification is enabled (requires PHP 5.3.2+ or
- enabling CURL backend with $config['http']['curl'] = true)
-- Experimental SubMirror plugin
-- Multi-site status_network table mode has been tweaked to support
- multiple tags better
-- Many updates to user interface translation from TranslateWiki
-- Many other bugfixes
-
-A full changelog is available at http://status.net/wiki/StatusNet_0.9.4.
+- Site moderators can now delete groups.
+- New themes: clean, shiny, mnml, victorian
+- New YammerImport plugin allows site admins to import non-private profiles and
+ message from an authenticated Yammer site.
+- New experimental plugins: AnonFavorites, SlicedFavorites, GroupFavorited,
+ ForceGroup, ShareNotice
+- OAuth upgraded to 1.0a
+- Localization updates now include plugins, thanks to translatewiki.net!
+- SSL link generation should be more consistent; alternate SSL URLs can be
+ set in the admin UI for more parts of the system.
+- Experimental backupuser.php, restoreuser.php command-line scripts to
+ dump/restore a user's complete activity stream. Can be used to transfer
+ accounts manually between sites, or to save a backup before deleting.
+- Unicode fixes for OStatus notices
+- Header metadata on notice pages to aid in manual reposting on Facebook
+- Lots of little fixes...
+
+Changes from 0.9.6 release candidate 1:
+- fix for broken group pages when logged out
+- fix for stuck ping queue entries when bad profile
+- fix for bogus single-user nickname config entry error
+- i18n updates
+- nofollow updates
+- SSL-only mode secure cookie fix
+- experimental ApiLogger plugin for usage data gathering
+- experimental follow-everyone plugin
+
+A full changelog is available at http://status.net/wiki/StatusNet_0.9.6.
Prerequisites
=============
version may render your StatusNet site unable to send or receive XMPP
messages.
- Facebook library. Used for the Facebook application.
-- PEAR Services_oEmbed. Used for some multimedia integration.
-- PEAR HTTP_Request is an oEmbed dependency.
-- PEAR Validate is an oEmbed dependency.
-- PEAR Net_URL2 is an oEmbed dependency.
+- PEAR Validate is used for URL and email validation.
- Console_GetOpt for parsing command-line options.
- libomb. a library for implementing OpenMicroBlogging 0.1, the
predecessor to OStatus.
- HTTP_Request2, a library for making HTTP requests.
+- PEAR Net_URL2 is an HTTP_Request2 dependency.
A design goal of StatusNet is that the basic Web functionality should
work on even the most restrictive commercial hosting services.
1. Unpack the tarball you downloaded on your Web server. Usually a
command like this will work:
- tar zxf statusnet-0.9.4.tar.gz
+ tar zxf statusnet-0.9.6.tar.gz
- ...which will make a statusnet-0.9.2 subdirectory in your current
+ ...which will make a statusnet-0.9.6 subdirectory in your current
directory. (If you don't have shell access on your Web server, you
may have to unpack the tarball on your local computer and FTP the
files to the server.)
2. Move the tarball to a directory of your choosing in your Web root
directory. Usually something like this will work:
- mv statusnet-0.9.4 /var/www/statusnet
+ mv statusnet-0.9.6 /var/www/statusnet
This will make your StatusNet instance available in the statusnet path of
your server, like "http://example.net/statusnet". "microblog" or
compile the ".po" files into ".mo" files, however.
Contributions of translation information to StatusNet are very easy:
-you can use the Web interface at TranslateWiki.net to add one
+you can use the Web interface at translatewiki.net to add one
or a few or lots of new translations -- or even new languages. You can
also download more up-to-date .po files there, if you so desire.
If you've been using StatusNet 0.7, 0.6, 0.5 or lower, or if you've
been tracking the "git" version of the software, you will probably
want to upgrade and keep your existing data. There is no automated
-upgrade procedure in StatusNet 0.9.2. Try these step-by-step
+upgrade procedure in StatusNet 0.9.6. Try these step-by-step
instructions; read to the end first before trying them.
0. Download StatusNet and set up all the prerequisites as if you were
5. Once all writing processes to your site are turned off, make a
final backup of the Web directory and database.
6. Move your StatusNet directory to a backup spot, like "statusnet.bak".
-7. Unpack your StatusNet 0.9.2 tarball and move it to "statusnet" or
+7. Unpack your StatusNet 0.9.6 tarball and move it to "statusnet" or
wherever your code used to be.
-8. Copy the config.php file and avatar directory from your old
- directory to your new directory.
+8. Copy the config.php file and the contents of the avatar/, background/,
+ file/, and local/ subdirectories from your old directory to your new
+ directory.
9. Copy htaccess.sample to .htaccess in the new directory. Change the
RewriteBase to use the correct path.
10. Rebuild the database. (You can safely skip this step and go to #12
have a line in your config.php pointing to the old name, you'll need
to update it.
+NOTE: the 1.0.0 version of StatusNet changed the URLs for all admin
+panels from /admin/* to /panel/*. This now allows the (popular)
+username 'admin', but blocks the considerably less popular username
+'panel'. If you have an existing user named 'panel', you should rename
+them before upgrading.
+
Notice inboxes
--------------
be escaped.
logo: URL of an image file to use as the logo for the site. Overrides
the logo in the theme, if any.
+ssllogo: URL of an image file to use as the logo on SSL pages. If unset,
+ theme logo is used instead.
ssl: Whether to use SSL and https:// URLs for some or all pages.
Possible values are 'always' (use it for all pages), 'never'
(don't use it for any pages), or 'sometimes' (use it for
parameters correctly so that both the SSL server and the
"normal" server can access the session cookie and
preferably other cookies as well.
-shorturllength: Length of URL at which URLs in a message exceeding 140
- characters will be sent to the user's chosen
- shortening service.
+shorturllength: ignored. See 'url' section below.
dupelimit: minimum time allowed for one person to say the same thing
twice. Default 60s. Anything lower is considered a user
or UI error.
which means to use the site path + '/theme'.
ssl: Whether to use SSL for theme elements. Default is null, which means
guess based on site SSL settings.
+sslserver: SSL server to use when page is HTTPS-encrypted. If
+ unspecified, site ssl server and so on will be used.
+sslpath: If sslserver if defined, path to use when page is HTTPS-encrypted.
javascript
----------
which means to use the site path + '/js/'.
ssl: Whether to use SSL for JavaScript files. Default is null, which means
guess based on site SSL settings.
+sslserver: SSL server to use when page is HTTPS-encrypted. If
+ unspecified, site ssl server and so on will be used.
+sslpath: If sslserver if defined, path to use when page is HTTPS-encrypted.
xmpp
----
biolimit: max character length of bio; 0 means no limit; null means to use
the site text limit default.
+backup: whether users can backup their own profiles. Defaults to true.
+restore: whether users can restore their profiles from backup files. Defaults
+ to true.
+delete: whether users can delete their own accounts. Defaults to false.
+move: whether users can move their accounts to another server. Defaults
+ to true.
newuser
-------
filecommand: command to use for determining the type of a file. May be
skipped if fileinfo extension is installed. Defaults to
'/usr/bin/file'.
+sslserver: if specified, this server will be used when creating HTTPS
+ URLs. Otherwise, the site SSL server will be used, with /file/ path.
+sslpath: if this and the sslserver are specified, this path will be used
+ when creating HTTPS URLs. Otherwise, the attachments|path value
+ will be used.
group
-----
null (default) means to use the site-wide text limits. 0
means no limit.
-oohembed
+oembed
--------
-oEmbed endpoint for multimedia attachments (links in posts).
+oEmbed endpoint for multimedia attachments (links in posts). Will also
+work as 'oohembed' for backwards compatibility.
-endpoint: oohembed endpoint using http://oohembed.com/ software.
+endpoint: oohembed endpoint using http://oohembed.com/ software. Defaults to
+ 'http://oohembed.com/oohembed/'.
+order: Array of methods to check for OEmbed data. Methods include 'built-in'
+ (use a built-in function to simulate oEmbed for some sites),
+ 'well-known' (use well-known public oEmbed endpoints),
+ 'discovery' (discover using <link> headers in HTML), 'service' (use
+ a third-party service, like oohembed or embed.ly. Default is
+ array('built-in', 'well-known', 'service', 'discovery'). Note that very
+ few sites implement oEmbed; 'discovery' is going to fail 99% of the
+ time.
search
------
subdir of install dir.
path: path to backgrounds. Default is sub-path of install path; note
that you may need to change this if you change site-path too.
-ssl: Whether or not to use HTTPS for background files. Defaults to
- null, meaning to guess from site-wide SSL settings.
+sslserver: SSL server to use when page is HTTPS-encrypted. If
+ unspecified, site ssl server and so on will be used.
+sslpath: If sslserver if defined, path to use when page is HTTPS-encrypted.
ping
----
contentlimit: max length of the plain-text content of a notice.
Default is null, meaning to use the site-wide text limit.
0 means no limit.
+defaultscope: default scope for notices. Defaults to 0; set to
+ 1 to keep notices private to this site by default.
message
-------
interface. It also makes the user's profile the root URL.
enabled: Whether to run in "single user mode". Default false.
-nickname: nickname of the single user.
+nickname: nickname of the single user. If no nickname is specified,
+ the site owner account will be used (if present).
robotstxt
---------
'search', 'message', 'settings', 'admin'. Ignored when site
is private, in which case the entire site ('/') is disallowed.
+api
+---
+
+Options for the Twitter-like API.
+
+realm: HTTP Basic Auth realm (see http://tools.ietf.org/html/rfc2617
+ for details). Some third-party tools like ping.fm want this to be
+ 'Identi.ca API', so set it to that if you want to. default = null,
+ meaning 'something based on the site name'.
+
+nofollow
+--------
+
+We optionally put 'rel="nofollow"' on some links in some pages. The
+following configuration settings let you fine-tune how or when things
+are nofollowed. See http://en.wikipedia.org/wiki/Nofollow for more
+information on what 'nofollow' means.
+
+subscribers: whether to nofollow links to subscribers on the profile
+ and personal pages. Default is true.
+members: links to members on the group page. Default true.
+peopletag: links to people listed in the peopletag page. Default true.
+external: external links in notices. One of three values: 'sometimes',
+ 'always', 'never'. If 'sometimes', then external links are not
+ nofollowed on profile, notice, and favorites page. Default is
+ 'sometimes'.
+
+url
+---
+
+Everybody loves URL shorteners. These are some options for fine-tuning
+how and when the server shortens URLs.
+
+shortener: URL shortening service to use by default. Users can override
+ individually. 'ur1.ca' by default.
+maxlength: If an URL is strictly longer than this limit, it will be
+ shortened. Note that the URL shortener service may return an
+ URL longer than this limit. Defaults to 25. Users can
+ override. If set to 0, all URLs will be shortened.
+maxnoticelength: If a notice is strictly longer than this limit, all
+ URLs in the notice will be shortened. Users can override.
+ -1 means the text limit for notices.
+
+router
+------
+
+We use a router class for mapping URLs to code. This section controls
+how that router works.
+
+cache: whether to cache the router in memcache (or another caching
+ mechanism). Defaults to true, but may be set to false for
+ developers (who might be actively adding pages, so won't want the
+ router cached) or others who see strange behavior. You're unlikely
+ to need this unless you're a developer.
+
+http
+----
+
+Settings for the HTTP client.
+
+ssl_cafile: location of the CA file for SSL. If not set, won't verify
+ SSL peers. Default unset.
+curl: Use cURL <http://curl.haxx.se/> for doing HTTP calls. You must
+ have the PHP curl extension installed for this to work.
+proxy_host: Host to use for proxying HTTP requests. If unset, doesn't
+ do any HTTP proxy stuff. Default unset.
+proxy_port: Port to use to connect to HTTP proxy host. Default null.
+proxy_user: Username to use for authenticating to the HTTP proxy. Default null.
+proxy_password: Password to use for authenticating to the HTTP proxy. Default null.
+proxy_auth_scheme: Scheme to use for authenticating to the HTTP proxy. Default null.
+
+plugins
+-------
+
+default: associative array mapping plugin name to array of arguments. To disable
+ a default plugin, unset its value in this array.
+locale_path: path for finding plugin locale files. In the plugin's directory
+ by default.
+server: Server to find static files for a plugin when the page is plain old HTTP.
+ Defaults to site/server (same as pages). Use this to move plugin CSS and
+ JS files to a CDN.
+sslserver: Server to find static files for a plugin when the page is HTTPS. Defaults
+ to site/server (same as pages). Use this to move plugin CSS and JS files
+ to a CDN.
+path: Path to the plugin files. defaults to site/path + '/plugins/'. Expects that
+ each plugin will have a subdirectory at plugins/NameOfPlugin. Change this
+ if you're using a CDN.
+sslpath: Path to use on the SSL server. Same as plugins/path.
+
Plugins
=======
T_STRING") in the browser, check to see that you don't have any
conflicts in your code.
-If you upgraded to StatusNet 0.9.2 without reading the "Notice
+If you upgraded to StatusNet 0.9.x without reading the "Notice
inboxes" section above, and all your users' 'Personal' tabs are empty,
read the "Notice inboxes" section above.
* mEDI
* Brett Taylor
* Brigitte Schuster
+* Siebrand Mazeland and the amazing volunteer translators at translatewiki.net
+* Brion Vibber, StatusNet, Inc.
+* James Walker, StatusNet, Inc.
+* Samantha Doherty, designer, StatusNet, Inc.
Thanks also to the developers of our upstream library code and to the
thousands of people who have tried out Identi.ca, installed StatusNet,