Люций Корнелий Сципион по прозвищу Бородатый жил в Древнем Риме порядка трёх сотен лет до нашей эры. Был он не самым безвестным человеком. Сначала военачальником, довольно успешным, выигравшим несколько известных битв. А к концу жизни дослужился до должности консула. Но помимо прочего, был он ещё и цензором.
Дойдя до наших дней, слово “цензор” утратило большую часть своих первоначальных значений, и сейчас означает человека, который не пускает к публикации материалы, подвергающие опасности текущий государственый строй. Однако в Древнем Риме основной работой цензора был, как ни странно, ценз. Под цензом понимался всего навсего учёт граждан республики с их имуществом, общественным положением и родом деятельности. По-современному говоря — перепись населения.
Надо сказать, что тогдашние цензоры к этой части своей работы относились без особого трепета, и точность данных этих переписей была довольно условной. Вроде как сейчас. Но вот этот самый Сципион Бородатый был известен как раз тем, что действительно этим занимался, и провёл довольно точную перепись.
И вот вслед за римлянином Цицероном, именем которого я назвал свой форум, я решил взять имя Сципион (Scipio) для своего следующего интересного проекта. Это OpenID-консумер для Джанго, который умеет регистрировать пользователей (буквально вести перепись) и хранить информацию о их лояльности или нелояльности.
Проект Scipio
Сразу самое важное:
В отличие от Cicero, который я делал “в одно лицо” и для себя, Scipio я хочу сделать открытым проектом. Глобальная цель этого проекта — создание хорошего, полнофункционального решения для сайтов на Django, которые хотят принимать у себя OpenID-пользователей. И вообще хочется, чтобы он стал в итоге де-факто OpenID-консумером для Джанго-проектов.
Я уже довольно давно твержу, что основная проблема OpenID, как технологии, в том, что реализовывать её “приёмную” часть довольно трудно, и Scipio — это то, чем я хочу исправить ситуацию.
Поэтому прошу всех разработчиков, неравнодушных к технологии, присоединяться! Начинайте с обсуждений и попыток попользоваться, а там, глядишь, и накодить что-нибудь захочется.
Текущий статус
Сейчас Scipio представляет собой выдранный из Cicero OpenID-консумер, и никаких фич, делающих его очень особенным, в нём пока нет. Однако он уже вполне юзабелен (собственно, форум как раз его сейчас использует). В частности он умеет:
- аутентифицировать пользователя по OpenID (!)
- заводить Django-пользователя с по возможности хорошим username’ом
- вести OpenID-профиль с никнеймом и галочкой доверия (спамер/не спамер)
- работать с whitelist’ами: отдавать список своих проверенных пользователей и читать списки с чужих сайтов
- проверять активность пользователей через настраиваемый антиспам-конвейер
Так что в принципе, его можно уже брать прямо в таком виде.
Тем не менее, у меня туча планов про то, что туда нужно дописать :-). Что именно, и в каком виде там хочется сделать, я в ближайшее время актуализирую на wiki, посвященной проекту.
Философия
OpenID — технология непростая. То есть, она была простой в концепции, когда её придумал Брэд Фицпатрик, но потом она развилась, и оказалось, что она затрагивает много вопросов, связанных с Универсальной Идентификацией, на которые сама конкретного ответа не даёт. Да, собственно, и не должна.
На практике это приводит к тому, что программист, взявший в руки библиотеку OpenID для своего языка программирования, предстаёт перед уймой вещей, которые можно понять неправильно и сделать всем неудобно:
- считать ли OpenID-пользователя “полноценным”
- “кошерно” ли пропускать OpenID-пользователя через регистрацию
- нужно ли давать юзеру иметь несколько OpenID
- принимать ли всех OpenID-провайдеров или только проверенных
- как работать с SRE
- откуда брать дополнительную информацию о пользователе
- какой из URL’ов считать правильным при использовании делегации
- и т.д.
Задача Scipio — выдать готовые решения в ответ на эти вопросы, потому что по ним уже накоплен кое-какой опыт использования.
Вместе с тем существуют вопросы, на которые адекватных ответов до сих пор нет, и где нельзя ограничивать свободу эксперимента. Один из таких вопросов — как должна выглядеть форма входа, и должна ли она как-то единообразно выглядеть в прицнипе. В таких местах Scipio будет или не предлагать никаких паттернов или предлагать несколько разных. Сейчас, например, шаблонов для логинной формы там нет вообще, но я хочу добавить несколько.
Итак — прошу пробовать!
Да, и ещё… Проекту срочно нужна хорошая иконка!