OpenSocial на своей грядке


    Целью этой заметки является рассказать о возможности установки платформы Open Social на свой сервер с перспективой интеграции в свои социальные проекты. Несмотря на утверждение об открытости технологии, пока кроме гигантов рынка таких как MySpace, Orkut, Hi5, и др., никто не может похвастаться полноценной поддержкой Open Social API. Конечно, Open Social это тренд, и его интеграция улучшит позиции любого социального веб-приложения. Если у вас оно имеется, или планируется, то советую вам узнать как сейчас обстоят дела с установкой контейнера для социальных мини-приложений.

    Возможно, кто-то из хабровцев уже пробовал ставить себе Open Social на сервер, и если такие есть, было бы интересно узнать о вашем опыте. Я же расскажу о своём.

    Но сначала...


    … всё-таки нужно провести краткий экскурс в мир гаджетов Google и OpenSocial API. Единственный источник информации по разработке социальных гаджетов это Google Code. Гаджеты Google это мини-приложения написанные с использованием Javascript и упакованные в XML специального формата. Советую хотя бы поверхностно ознакомиться со структурой приложений, и посмотрите обучающие видео. В роликах наглядно показано как создавать простенькие приложения и как они работают в среде социальной сети Orkut.

    Но Orkut нам не нужен, сейчас нас всё-таки интересует своя среда для запуска гаджетов.

    Нужно упомянуть, что серверная часть проекта Open Social, которая должна являться контейнером для многочисленных социальных гаджетов, сейчас находится под крылом Apache и называется Shindig. Проект пока молодой и живет в лаборатории, а для скачивания доступен только из svn-репозитория.

    Структура



    В репозитории живет две версии сервера: для РНР и для Java. Я расскажу об установке РНР версии, для Java больше документации на сайте самого проекта Shindig. В репозитории эти версии находятся в кталогах java и php соответственно. Обратите внимание на каталог features — в него входят модули жизненно необходимые для запуска гаджетов. По сути это Javascript API, которые в своей работе будут использовать мни-приложения. В каталоге кроме всего прочего мы можем найти библиотеки Open Social версий 0.6 и 0.7, OAuth и др.

    Начнем установку



    — Первое что вам нужно, это РНР с поддержкой curl, json, simplexml, то есть версия должна быть не ниже 5.2.2.

    — Подготовив систему возьмите проект с репозитория. Внимание, не зависимо от выбора платформы PHP или Java вам нужно скачать все файлы из репозитория.

    — Для РНР поместите их на отдельный хост и переименуйте папку php в htdocs (или www на денвере), короче сделайте её вебрутом.

    — Теперь мы можем запустить сервер. Вот только тут мы впервые сталкиваемся с недокументированными трудностями. Запускать сам index.php не имеет смысла, в контейнер нужно загрузить хотя бы один гаджет. Readme предлагает сделать это таким образом: http:///gadgets/ifr?url=http://www.labpixies.com/campaigns/todo/todo.xml. Увы, это не сработает, так как для запуска этого гаджета не хватает модуля locked-domain. В поисках ошибки можно потратить много времени, но этого модуля в каталоге features действительно не обнаружится. Потому мы будем пробовать другие варианты.

    — Попробуйте тестовые варианты, которые предложены в Readme каталога javascript. Увы, они тоже не запустятся :) Они выдают ошибку конфигурации, так как ошибочно считывают файл oauth.json из каталога config. Лечиться всё просто — удалением oauth.json.

    — И наконец вы таки установили сервер и запустили первые Google Gadgets. Если вы открыли страницу shindig/gadgets/files/container/sample2.html (локальный адрес) и увидели в ней 3 контейнера и 2 простых виджета, которые в них загрузились, значит мои рекомендации помогли вам избежать подводных камней с которыми столкнулся я.


    Чуть ниже показано как вглядят стандартные гугловские гаджеты запущенные в отдельных контейнерах.

    Так выглядят простые гаджеты в контейнерах

    Что же дальше


    Сервер гаджетов Google наконец работает. Вы можете попробовать вставить в него новые гаджеты или установить свои. Увы, для некоторых гаджетов требуются недоступные модули, а потому выбор весьма ограничен. Но самые простые гаджеты должны работать. Я не проверял ни Social API, ни работу с хранилищами. Впрочем, это отличное занятие для завтрашнего дня и если у меня что-то получиться я обязательно об этом напишу.

    Но я не уверен, что проект на данной стадии готов для интеграции в социальные проекты. И если напильник во время установки использовался на каждом шагу, то что же будет дальше? А ведь прошло уже почти полгода со времени релиза Open Social, а он до сих пор является открытым только для тех проектов в которых заинтересован Google. Проект Shindig развивается, но в нем не хватает документации, не видно активного сообщества, и как мы видели он полон глюков. С другой стороны, социальным проектам, которые хотят заявить о себе уже сейчас стоит присматриваться к Open Social, ведь в перспективе эта платформа может принести огромную популярность вашей социальной сети.

    Similar posts

    Ads
    AdBlock has stolen the banner, but banners are not teeth — they will be back

    More

    Comments 14

      +1
      спасибо за описание, очень интересно. а что из себя shindig представляет? веб-сервер? и как вообще происходит работа, только через виджеты? а взаимодействие с пользователями? а взаимодействие с пользователями других сетей? авторизация в виджетах? если не сложно, расскажите, пожалуйста :)
        0
        Да, спасибо, про Shinding нужно было написать подробнее. Вот что говорит про него официальный сайт:

        The architectural components of Shindig can be broken down as follows:
        Gadget Container JavaScript — core JavaScript foundation for general gadget functionality. This JavaScript manages security, communication, UI layout, and feature extensions, such as the OpenSocial API.
        Gadget Server — an open source version of Google's gmodules.com, which is used to render the gadget XML into JavaScript and HTML for the container to expose via the container JavaScript.
        OpenSocial Container JavaScript — JavaScript environment that sits on top of the Gadget Container JavaScript and provides OpenSocial specific functionality (profiles, friends, activities, datastore).
        OpenSocial Gateway Server (does not yet exist in the repository) — an implementation of the server interface to container-specific information, including the OpenSocial REST APIs, with clear extension points so others can connect it to their own backends.

        А насчет остальных вопросов, то я сам хочу в них разобраться. Пока что мне быо интересно поставить свой контейнер, а что и как там происходит буду смотреть завтра на свежую голову :)
          0
          спасибо, будем ждать продолжений! :)
        0
        Очень интересно. На досуге как-нибудь попробую тоже поставить, отпишусь.
          0
          думается серьезному проекту наплевать на сколько закончен Shinding, его использовать стоит только как examples, а API уже реализовывать самому, с учетом своей архитектуры и на своем языке.

          У меня же к вам вопрос. Что с локализацией? Дело в том, что русскоязычных гаджетов практически не существует, может ли хозяин сервера иметь собственную базу локализаций на определенные гаджеты? Как вообще с этим дело обстоит?

          Спасибо.
            0
            Ну это конечно да, серьёзный проект может и свои виджеты разработать. Но не знаю, тут я против изобретения велосипедов.

            Через конфигурацию Shindig можна настроить использование нужных бекендов и переписать их под свой проект. Но вот переписывать всё... У меня есть небольшой проект и я действительно хочу встроить в него OpenSocial. Но вот не знаю стоит ли с этим связываться, если в самом Shindig написано, что пока он только подходит для тестирования гаджетов.
              0
              я говорил не про свои виджеты, а про собственную реализацию API.

              на сколько я смотрел OpenSocial, там сейчас набор довольно примитивных методов, типа getFriends и getName. разработчику сервера нужно лишь реализовать эти методы на JS так, как ожидают приложения для OpenSocial.

              а насчет локализации не подскажите?
                0
                Насчет локализации пока ничего не скажу. Сейчас дочитываю документацию и делаю свой сервер.

                А вот насчет " нужно лишь реализовать эти методы на JS так, как ожидают приложения для OpenSocial." то для этого всё равно Shindig нужен как сервер гаджетов. Такие методы как GetFriends это state приложения и в тестовых контейнерах их предлагают грузить с XML-файлов. То есть вам остается нужен сервер гаджетов для осуществления всего их функционала, а вот задать параметры своей социалки действительно крайне просто: создать контейнер, загрузить в него гаджет и сгенерированый XML со всеми параметрами.
          • UFO just landed and posted this here
              0
              Спасибо, интересный пример.
            • UFO just landed and posted this here
                0
                Увы он не мой. Так что забирайте :) Отдаю бесплатно %)
                (если какая-то крупная американская компания затребует права на него - не ведитесь)
                • UFO just landed and posted this here
                0
                Как сейчас продвигаются с проектом? Какие сети поддерживает проект иль все сразу заглохло с введением волны? Очень интересно узнать

                Only users with full accounts can post comments. Log in, please.