В первой части этой серии, « Пересмотр альтернативных социальных сетей с открытым исходным кодом», я дал краткий обзор нескольких открытых социальных платформ и клиентов. В этой части я расскажу об установке GNU Social и расскажу о том, что, по моему мнению, будет иметь решающее значение для конкуренции в мире, где доминирует Facebook / Twitter.
Почему GNU Social? Я чувствовал, что это самая простая система для установки и использования. Он также написан на PHP, который я считаю самым доступным языком с открытым исходным кодом. Хотя он ограничен тем, чтобы казаться клоном Twitter, я думаю, что это помогло сохранить все его основные функции и веб-интерфейс пользователя относительно чистыми. Однако сайт GNU Social не работал в течение нескольких дней, пока я работал над этим учебником; состояние мира распределенных сетей с открытым исходным кодом иногда остается нестабильным.
Установка GNU Social
Вы можете установить GNU Social на любую систему на основе LAMP. Я опубликовал мое общее руководство по установке стека Ubuntu LAMP для справки .
Войдите на свой сервер:
1
|
Установите все необходимые компоненты (Curl и Git также необходимы для этого урока):
1
2
3
4
5
6
|
sudo locale-gen en_US en_US.UTF-8
sudo dpkg-reconfigure locales
sudo apt-get update -q
sudo apt-get dist-upgrade -y
sudo apt-get install -y pound varnish php5 rsync htop emacs23-nox apache2 php5-mysql dtrx mysql-server exim4
sudo apt-get install php5-curl git
|
Создайте каталог для сайта и установите разрешения:
1
|
mkdir /var/www/social -p chown www-data:www-data /var/www/social cd /var/www/social
|
Клонировать репозиторий:
1
|
git clone git://gitorious.org/social/mainline.git .
|
Войдите в MySQL с паролем вашей корневой базы данных:
1
|
mysql -u root -p
|
Создайте новую базу данных и установите разрешения:
1
2
3
4
|
create database social;
grant all privileges on social.* TO «root»@»localhost» identified by «-your-pwd-«;
flush privileges;
exit;
|
Создайте сайт Apache:
1
|
nano /etc/apache2/sites-available/social.conf
|
Вставьте конфигурацию Apache ниже с учетом вашего сервера:
01
02
03
04
05
06
07
08
09
10
|
<VirtualHost *:80>
ServerName social.yourdomain.com
DocumentRoot /var/www/social
DirectoryIndex index.php
<Directory /var/www/social/>
AllowOverride All
Order Deny,Allow
Allow from all
</Directory>
</VirtualHost>
|
Включите сайт, отключите сайт по умолчанию и перезапустите Apache:
1
2
3
|
sudo a2ensite social.conf
sudo a2dissite 000-default.conf
sudo service apache2 reload
|
Вам также необходимо настроить несколько каталогов для доступа на запись:
1
2
3
|
chmod a+w /var/www/social/avatar/
chmod a+w /var/www/social/background/
chmod a+w /var/www/social/file/
|
Чтобы активировать красивые строки URL, мы должны переместить пример файла .htaccess
и включить mod_rewrite
:
1
2
3
|
mv htaccess.sample .htaccess
sudo a2enmod rewrite
sudo service apache2 restart
|
Посетите страницу установки и введите свое имя и параметры конфигурации:
1
|
http://social.yourdomain.com/install.php
|
Вы должны увидеть что-то вроде этого:
И:
Процедура установки занимает до минуты, но вы должны увидеть что-то вроде этого, когда она будет завершена:
Вот как выглядит домашняя страница по умолчанию:
Установка пользовательской темы
Давайте установим тему Neo Quitter с открытым исходным кодом, которая напоминает Twitter:
1
2
|
cd /var/www/social/theme
git clone https://github.com/hannesmannerheim/neo-quitter
|
Отредактируйте файл конфигурации и добавьте запись для темы Neo Quitter:
1
2
|
cd /var/www/social
sudo nano config.php
|
Это должно выглядеть так:
01
02
03
04
05
06
07
08
09
10
|
<?php
if (!defined(‘GNUSOCIAL’)) { exit(1);
$config[‘site’][‘name’] = ‘Social’;
$config[‘site’][‘server’] = ‘social.lookahead.io’;
$config[‘site’][‘path’] = false;
$config[‘site’][‘ssl’] = ‘never’;
$config[‘site’][‘fancy’] = true;
$config[‘db’][‘database’] = ‘mysqli://root:your-pwd@localhost/social’;
$config[‘db’][‘type’] = ‘mysql’;
$config[‘site’][‘profile’] = ‘public’;
|
Вставьте в эту строку:
1
|
$config[‘site’][‘theme’] = ‘neo-quitter’;
|
Вернитесь на домашнюю страницу, и она должна выглядеть примерно так:
Начало работы с GNU Social
Регистрация вашей учетной записи
Пришло время зарегистрироваться на собственной социальной сети:
Как только вы зарегистрируетесь, вы увидите эту полезную начальную страницу:
После загрузки моего аватара вот как выглядит обновление статуса с фотографией:
Я не совсем уверен, что делает нажатие на замок в открытом и закрытом положении, поскольку кажется, что конфиденциальность контролируется выпадающим списком.
Вот моя страница профиля с моим первым сообщением:
Похоже на какой-нибудь общий сайт социальной сети, который вы знаете?
Относительная полировка и отделка GNU Social по сравнению с другими сетями, описанными в первой части, является причиной, по которой я решил сосредоточиться на ней для дальнейшего изучения.
Эксперименты с федеративной сетью
Затем я хотел поэкспериментировать с федеративными сетевыми функциями GNU Social. Я перепрыгнул на Quitter.is , социальный сайт GNU, открытый для общественности, и последовал за именем пользователя первого человека, которого я там нашел.
На своем собственном сайте вы должны посетить страницу своего профиля, а затем нажать « Подписка + Удаленный» в правом столбце (это не совсем интуитивно понятно):
Чтобы следовать за удаленным пользователем, вы создаете адрес, объединяющий его имя удаленного пользователя с доменом удаленного сетевого сайта, например, [email protected].
Хотя производительность относительно низкая (этот Quitter в Исландии), мы смогли обменяться @replies, и моя учетная запись GNU Social появилась в списке подписчиков Quitter.is. Когда я вошел в систему на следующий день, их обновления появились в моей установке GNU Social:
Вот как это выглядело несколько часов спустя, после того, как последовало еще несколько отдаленных людей:
Конкуренция с Facebook и Twitter
Основной вызов
Вот некоторые из качеств, которые, на мой взгляд, важны для системы социальных сетей с открытым исходным кодом, чтобы получить поддержку и усыновление:
- Простая установка для неопытных разработчиков. Например, любой человек с PHP и базовыми знаниями Linux должен легко установить. Это должно приблизить простоту установки собственного WordPress.
- Одиночные и многопользовательские опции. В идеале платформа должна поддерживать запуск социальной установки только для одного пользователя (установщика) или в виде сети, которая поддерживает сообщество из множества пользователей.
- Платный хостинг, позволяющий заинтересованным нетехническим пользователям участвовать. Например, мне нравится, как платформа блогов Ghost предлагает платную опцию SaaS.
- Элегантный пользовательский интерфейс публикации (текст, фотографии, в конечном итоге видео) и поддержка поиска мета-тегов из URL-адресов. Это одна из наиболее важных и игнорируемых функций в современных предложениях с открытым исходным кодом.
- Простой опыт конечного пользователя. Интерфейс должен быть таким же простым в использовании, как Facebook и Twitter.
- Хорошая производительность. Обычные операции, такие как публикация, загрузка фотографий, просмотр, просмотр временной шкалы и получение обновлений временной шкалы, должны быть быстрыми.
- Публикация в Twitter и Facebook. Платформа должна позволять пользователям отражать свои локальные сообщения в существующих сетях в автоматическом или полуавтоматическом режиме.
- Поддержка Theming. Пользователи должны иметь возможность персонализировать внешний вид своей сети.
- Стратегия резервного копирования. Платформа должна включать встроенную функцию резервного копирования, в идеале с некоторыми облачными опциями, такими как S3.
- Интеграция аналитики. Пользователям должно быть легко получить данные об активности их каналов.
- Архитектура твердого кода, например архитектура MVC и / или использование общей платформы.
- Отличная документация по кодовой базе.
- Полуавтоматические обновления. Важно упростить цикл обновления, чтобы люди постоянно обновляли кодовую базу в сети.
Расширенные возможности
Кроме того, многие аспекты того, что делает Facebook и Twitter успешными и доминирующими, для нас тонки или невидимы. Например, вот несколько важных:
- Высокая производительность по сети
- Высокая пропускная способность для загрузки изображений (и, возможно, видео)
- Отказоустойчивость к использованию
- Никогда не теряя данных
Хотя распределенная природа федеративных сетей с открытым исходным кодом может помочь в ограничении ущерба от отказа одного узла, это также увеличивает сложность решения проблем производительности и управления взаимодействием с пользователем, поскольку сеть взаимодействует с различными установленными узлами.
Мост к существующим сетям
Для ускорения внедрения для этих сетей также может быть важно импортировать каналы из Twitter (и, возможно, Facebook). Например, если вы переключаетесь с Твиттера на свою социальную сеть, вы можете быть первой из вашей группы друзей. Вы, вероятно, захотите продолжать получать обновления и уведомления, получать последующие запросы и отражать ответы из старой сети на своем сайте — без необходимости возвращаться в Twitter.
Текущая технология Twitter API (User Streams) поддерживает это как техническую возможность для отдельных пользователей, но требует их разрешения для поддержки группы пользователей (Site Streams). См. Построение с помощью API Twitter (Tuts +) . Я полагаю, что вряд ли Twitter предоставит разрешение Site Stream для такой совместимости.
Оценка GNU Social
Основная оценка
GNU Social хорошо работает, но оставляет значительные возможности для совершенствования. Это делает хорошую работу, сохраняя набор функций узким и хорошо реализуя основы.
Установка кодовой базы может быть улучшена еще больше. В идеале должны быть пакеты, которые можно установить быстрее. В конце концов, я хотел бы увидеть руководство по установке и обслуживанию для нетехнических пользователей.
Существует множество сетей, в которых вы можете зарегистрировать бесплатный аккаунт и опробовать платформу. В будущем было бы неплохо увидеть, как провайдеры предлагают установить и поддерживать сети для людей на платной основе.
Хотя база кода чистая, она явно не использует стандартную среду.
GNU Social может работать как для отдельных пользователей, так и для сообщества. Поддержка OStatus, кажется, работает хорошо. И есть поддержка тем.
Интерфейс публикации чистый, но не предлагает никаких поисков для URL. Кажется, что нет никакой поддержки мета-тегов, тегов Open Graph или карт Twitter.
Опыт конечного пользователя относительно прост, но его все же можно улучшить. Например, отслеживание удаленных пользователей не было простым с домашней шкалы времени. Мне пришлось перейти на страницу своего профиля, чтобы следить за удаленными пользователями.
Производительность была невыносимой, когда дело дошло до подключения к удаленным сетям, возможно, потому, что я был подключен к исландскому серверу. Вероятно, важно, чтобы все эти операции были поставлены в очередь как фоновые задачи.
У зеркалирования в Twitter и Facebook, резервного копирования и аналитики не так много зрелости, но это может прийти со временем.
Последние мысли
GNU Social находится в месте, где энтузиасты PHP могут принять его, запустить свои собственные сайты и внести свой вклад в кодовую базу. Я также считаю, что команда разработчиков открытого кода, стоящая за GNU Social, могла бы добиться больших успехов, сохранив узкий набор функций и сосредоточившись на совершенствовании того, что у них есть. Создание очень надежной, хорошо спроектированной, хорошо документированной кодовой базы, которая может воссоздать Twitter федеративным способом, было бы значительным достижением, и они уже на этом пути.
Хотя GNU Social создан для поддержки OStatus, в W3C Social Web Working Group есть активная рабочая группа; вы можете следить за их работой в Твиттере @socialwebwg .
Пожалуйста, не стесняйтесь оставлять свои вопросы и комментарии ниже. Это широкая тематическая область, и я уверен, что я многое пропустил. Вы также можете связаться со мной в Twitter @reifman или написать мне напрямую. Следуйте за моей страницей инструктора Tuts +, чтобы видеть будущие статьи в этой серии.
Ссылки по теме
- Пересмотр альтернативных социальных сетей с открытым исходным кодом (Tuts +)
- Quitter (демонстрационный сайт)
- GNU Social
- Тема Neo Quitter
- Рабочая группа W3C по социальным сетям , @socialwebwg