1. Introduction

To introduce user limitations as defined on a per site basis, LiveJournal has implemented the use of “capabilities” — customizable limits that can be defined en-masse, or split between different user “types”.

Completing the idea of “per site definitions”, we've implemented a system where capabilities can be defined in classes, and classes can either be turned “on” or “off” for each account.

Capability classes are most effectively used when making distinctions between “normal” user accounts and “privileged” user accounts. For example, on LiveJournal.com, we make a distinction between “normal” accounts, “early adopter” accounts, and “paid” accounts, (with a couple of variations on the latter) — the purpose of the distinction being to give paying members a better incentive to stick around and help fund the site.