29 октября 2009 г.

Первое заседание Вейwер-клуба: вопросы о Волне


14 октября 2009 года блог "Українскi хвiли" провел на волнах сервера Google Wave первое заседание нового "Вейweр-клуба".
Заседание проходило в формате марафона вопросов и ответов: участники задавали вопросы сначала два часа утром, затем еще два часа вечером. Свои 5 вопросов подготовила редакция блога, а затем вопросы могли задавать как участники волны, так и читатели блога, не имеющие пока доступа к Волне.
Первым гостем "Вейwер-клуба" был Вадим Барсуков. Публикуем тексты вопросов и ответов.
Приветствую собравшихся. C почином! Надеюсь этот эксперимент с новым форматом общения окажется удачным и будет продолжен. Сначала отвечу на вопросы редакции блога “Українські хwилі”
1. Вадиме, яким вітром тебе занесло до Хвилі? Чому, для чого і яким чином ти в ній опинився?
Так получилось, что в моей жизни всегда было две конкурирующие сферы интересов: информационная (компьютеры, программирование, интернет) и социальная (психология групп, формирование сообществ). Я успел поработать и программистом в маленьком частном предприятии, и руководителем службы подбора персонала в довольно крупной коммерческой структуре. Кроме того, по второму высшему образованию я – профессиональный психоаналитик. После целого дня общения с пациентами и напряженно-эмоционального обсуждения их психологических проблем было приятно вечером окунуться в конструктивный и логичный мир веб-программирования. Поэтому я стал создавать интернет-проекты. :)
Из веб-технологий сначала использовал Parser, затем CMS Drupal. Активно участвовал в жизни сайта drupal.ru, много там общался, сделал полный перевод самой новой на тот момент версии на русский язык, собирал полезную информацию по этой замечательной CMS, отвечал на вопросы новичков… И в какой-то момент понял, что такая деятельность как раз позволяет мне объединить свои разнонаправленные интересы и на практике заниматься тем, что я знаю и чем интересуюсь в теории – разбираться, как технологии меняют психологию человека и организацию общества, как с помощью технологий объединять людей в “коммьюнити” для совместного достижения целей.
Надеюсь, теперь понятно, откуда возник мой двойной интерес к Google Wave. Ведь Волна – это одновременно и новая технологическая платформа и, в потенциале, мощное социальное явление. Как открытая технология, поддерживаемая к тому же гигантской софтверной компанией, Волна может стать очень гибкой и расширяемой средой для создания самых разнообразных программных приложений. С другой стороны, эта новая среда может стать посредником, медиатором между людьми, которые будут пользоваться всеми этими программами. И если такой способ объединения усилий множества пользователей между собой в реальном режиме времени получит массовое распространение, это способно изменить наш мир так же, как его изменили компьютер, интернет и сотовый телефон.

2. Твоя оцінка “пісочного” етапу розробки сервісу?
Заранее хочу сказать, что мое мнение – это, так сказать, “взгляд со стороны” на работу команды Google Wave. Никакой инсайдерской информацией я не располагаю, да и не являюсь техническим специалистом в этой области.
Я могу предположить, что парни (и девушки) из Гугла уже на “песочном” этапе встретились с большими проблемами, связанными с масштабированием и производительностью сервиса. Сервер буквально “скрипел” от напряжения, иногда почти не шевелился, часто что-то “отваливалось” и какие-то отлаженные казалось бы функции переставали работать. Тем не менее, было видно, как команда воюет на всех фронтах, стараясь обеспечить хотя бы часть функциональности Google Wave, заявленной в яркой презентации Ларса Расмуссена и Стефани Хеннон на конференции Google I/O 2009. Функциональности, на которую многие после этого видео настроились и ждали как подарка.
При этом учтите, что кроме работы сервера команде надо было параллельно обеспечить еще разработку целого семейства API (для роботов на двух языках программирования – Java и Python, для встраивания embed “волн”, для вставки гаджетов, для модификации интерфейса и т.п.), вести формирование открытых стандартов федерации (объединения) серверов, работать над новым волновым клиентом и демо-сервером FedOne. Это не говоря уже о рекламе и пиаре нового продукта, о взаимодействии с девелоперами по всем миру и т.д. Мой респект им за такой титанический труд.
По моим ощущениям, Ларс и его команда не достигли всего того, чего хотели к 30 сентября. Но “песочный” этап все же можно считать успешным. Сервис уже вполне работоспособен, даже складывается набор типичных способов его практического использования (”кейсы”, пользователи и команды, которые их используют). Вокруг Google Wave сформировались группы девелоперов, разрабатывающих своих роботов и собственные гаджеты. Сформирован (и отчасти даже “перегрет”) интерес к Волне среди, так сказать, околокомпьютерной общественности. Таким образом, не успев появиться, Волна уже меняет представления людей о возможностях и о стандартах веба.
Если коснуться “песочного” этапа нашей гуглогруппы “Google Wave Россия”, то в целом я доволен тем, что за этот период группа сильно выросла по численности (на данный момент число участников приближается к 650, возможно уже сегодня этот рубеж будет преодолен). Сейчас это самое крупное известное мне не-англоязычное сообщество на тему Google Wave.
За это время нам удалось собрать достаточно много материалов по “волновой” тематике, связаться с отделением Google в России (спасибо Алексею Шелестенко) и с разработчиками Google Wave в Сиднее (русский программист Вадим Герасимов руководит там разработкой API гаджетов), поучаствовать в переводе документации и видеопрезентаций, наработать собственный опыт “игры в песочнице”, установить контакты друг с другом и найти темы для дальнейшего сотрудничества.
Из минусов прошедших месяцев – не такой высокий уровень активности основной массы участников группы, как мне хотелось бы. :) Очевидно, что я здесь чего-то не доработал, но в целом – это обычная проблема начального этапа любого сообщества вокруг какой-либо деятельности. Большинство всегда приходит “послушать-посмотреть”.
3. Що відбувається у Хвилі зараз?
Сейчас происходит расширение пользовательской базы Волны до 100 тыс. человек, через рассылку приглашений тем, кто заполнил форму на сайте wave.google.com, а также с помощью так называемых “номинаций”. Каждый пришедший из “песочницы” получает возможность пригласить в Волну восемь своих “друзей Оушена”, отправив им “номинацию”. Google переставляет номинированных в начало списка рассылки приглашений.
В советское время этот способ, наверное, назвали бы “блатом”. Тем не менее, он свою задачу решает, поскольку позволяет во-первых, сформировать там микрогруппы из знакомых людей (чтоб вам было с кем общаться в Волне), а во-вторых, дает возможность девелоперам из “песочницы” почувствовать себя “немного гуглерами”, т.е. причастными к судьбам гугловского сообщества, имеющими право пригласить туда нужных им людей. :)
В самой Волне жизнь кипит, люди знакомятся, довольно активно формируются “группы по интересам”, как из тех, кто пришел из “песочницы”, так из “новоприбывших”. Типичные принципы для группировки – по местонахождению (разнообразные “землячества” по городам, странам или по языку), по сообществам и интересам вне Волны (либо интернетовским: “хаброволна”, “лепроволна”, “Радио-Т”, либо тематическим: android, рыбалка, фотоаппараты и т.п.), а также по способу использования Волны (чат, форум, фотогалерея, багтрекер, органайзер, “далее везде”). Много попыток как-то все систематизировать и разобраться с хитростями работы в новой среде (оглавления, каталоги волн, переводы страниц помощи или сводки клавиатурных комбинаций).
В общем и целом – такой первоначальный “бульон”, в котором уже плавают зародыши будущих сообществ и социальных технологий. :)
Если посмотреть с технической стороны, то новая версия Волны в данный момент испытывает те же проблемы, что и “песочница”: порой тормозит, иногда что-то не работает. Я думаю, это будет оперативно исправлено и починено, поэтому писать об этом здесь бессмысленно – быстро устареет.
С другой стороны, работа сервера стала более стабильной, заработала проверка правописания (в т.ч. и для русского языка), появились новые возможности в редакторе сообщений, более продуманной стала система настроек, появилась своя помощь (в т.ч. обучающие видеоролики). В интерфейсе клиента также появились улучшения, делающие более понятным структуру волны. Например, при перемещении курсора мыши под блипом появляется полоска, показывающая, куда именно будет добавлено новое сообщение.
4. Чим пояснюється зміна характеру твоєї активності у Хвилі?
В самом деле, с получением доступа на основной сервер ситуация в Google Wave несколько изменилась. В “песочнице” я начал с организации общей русскоязычной волны, чтобы люди имели возможность собраться вместе, познакомиться, обменяться опытом и знаниями про Волну. Затем старался создавать тематические волны, предлагать какие-то новые форматы и темы обсуждения, в общем активничал, если не сказать – работал массовиком-затейником. :)
В превью (в текущей версии Волны) этого уже не понадобилось – наверное, опыт “песочницы” не прошел даром и в новой Волне люди сразу же организовали и “волну знакомств”, и справочные волны, обсуждение стандартов поведения, типовых рабочих приемов. Появилось сразу несколько человек, которые активно взялись за это дело. Спасибо им!
Не скрою, некоторые ревнивые чувства я при этом испытал :), но в целом только рад такой динамике. Волна – не самоцель, это всего лишь средство для решения человеческих задач, помощник в достижении их целей. В ней появились новые люди, которые смотрят на Волну уже не только со стороны чистого программирования или решения технических проблем самой Google Wave. Это здорово, Волна начинает жить настоящей жизнью.
Поэтому я сейчас “взял паузу” и пытаюсь переосмыслить свои задачи в Волне. Возможно, я постараюсь сконцентрироваться на “расшивке узких мест” в сообществе, на помощи его участникам и какой-то координации общих действий и проектов.
5. Що сподобалось, а що – розчарувало в новому сервісі Ґуґл?
Для меня (как и для многих других “вейверов”) Волна начиналась с известной полуторачасовой видеопрезентации Ларса и Стефани. Поэтому радости связаны с тем, что там было показано, а разочарования – с отсутствием многих продемонстрированных сервисов, с тем, чего пока нет.
По-прежнему не работает Rosy – долгожданный робот-переводчик. Не хватает возможности создавать группы пользователей. Нельзя перемещать блипы и вейвлеты (под-волны) из одной волны в другую. Все еще не решена проблема разграничения прав доступа к волнам. Волны могут быть либо приватными, либо общедоступными. Причем, если волна стала общедоступной, сделать ее вновь скрытой от чужих глаз штатными средствами невозможно. Сейчас любой участник Волны может исправлять и даже удалять “блипы” (сообщения) других участников.
Тем не менее замечу, что о случаях какого-то исключительного вандализма (злостного удаления или искажения информации) мне неизвестно. Может быть, это тоже своего рода социальный эксперимент Гугла над нами, участниками Волны. Не так плохи люди, как мы ожидаем. :)
Рассказ же о том, что нравится в Волне, начну тоже с критики. Мне кажется, что в Google неправы, когда позиционируют Волну как замену чату, почте или твиттеру. Хотя с маркетинговой точки зрения это верно – когда вводишь в оборот совершенно новый продукт, приходится сравнивать его с известными, привычными аналогами. Но для меня Волна революционна в первую очередь не как замена “аськи” или возможностью видеть “гонки морковок” по экрану (когда несколько человек одновременно пишут сообщения и видны двигающиеся разноцветные маркеры с их именами). Хотя это замечательно, весело и даже меняет ощущения от переписки, превращая ее практически в живой разговор, где можно перебивать собеседника или начинать ответ, не дожидаясь окончания речи вашего vise-a-vise.
Ключевая “фишка” Волны, с моей точки зрения, – ее уникальная гибкость, возможность относительно просто расширять функциональность, добавляя в нее набор программных агентов (роботов, гаджетов). Даже я написал собственного робота – организатора социальной сети. :)
Конечно, такая расширяемость уже есть не только в Волне. К этому идет практически весь интернет – начиная от страниц-машапов (mash up сайтов, собранных из различных сторонних сервисов), продолжая социальными сетями (которые обзавелись возможностью для пользователей подключать различные гаджеты и виджеты) и вплоть до стратегической идеи “семантической сети” (в которой информацию для пользователей готовят программы-агенты, снующие по Сети в поисках нужных ингредиентов). Волна фактически и представляет собой действующую реализацию такой новой умной Сети, которая должна “тихой сапой” интегрировать и заменять собой нынешние разношерстные коммуникационные сервисы (чаты, форумы, поисковики и т.п.).
Но кто-то ведь должен писать этих самых “программных агентов”? Поэтому я очень надеюсь, что после решения базовых технических проблем с масштабированием и производительностью Волны, команда Google Wave обратит большее внимание на взаимодействие с независимыми девелоперами (программистами, разработчиками).
Первоочередного решения требуют здесь, по-моему, две проблемы. Во-первых, сейчас крайне плохо организована обратная связь с пользователями-тестировщиками. Порой просто непонятно, куда и как можно сообщить о багах или о своих предложениях. Это дело разбросано по нескольким гуглогруппам, отдельным сайтам и Office Hours (еженедельным встречам в “песочнице” с командой Google Wave). Конечно, это все лишь проблема роста – сейчас слишком много проблем, которые прекрасно известны команде Волны и без наших баг-репортов. Но рано или поздно проблему обратной связи решать придется. Лучше рано.
И второй важный вопрос – это схема “монетизации” Волны. Сам Google, вероятно, определится с тем, как зарабатывать на своем замечательном сервисе. Скорее всего это будет контекстная реклама и тесная интеграция Волны с другими гугловскими сервисами. Об этом упоминал Ларс в одном из своих интервью.
Но есть и другая сторона вопроса: писать программы для нового сервиса очень интересно, но еще интереснее делать это профессионально, зарабатывая при этом на жизнь и дальнейшее профессиональное совершенствование. :) Поэтому надо дать легитимный путь энтузиастам Волны зарабатывать на своем мастерстве. Пока же непонятно, как будет реализована возможность сторонним разработчикам продавать свои “волновые” программы, а распространителям контента (видео, аудио, прочая информация) предоставлять платные услуги на Волне.
Продолжу ответы, теперь на вопросы читателей блога “Украинские волны”.
1. Як ти гадаєш, наскільки скоро Google Wave відкриється для вільної реєстрації? Чи довго буде діяти система запрошень (наприклад, як свого часу в Gmail)?
Официальной информации о дате открытия сервиса я не встречал. Говорят о “где-то в этом году”. Сами члены команды Google Wave на такой вопрос отвечают в духе “откроется, когда будет готов”. :)
Я выше уже писал, что IMHO главной задачей сейчас является обеспечение устойчивой работы системы под большими нагрузками. Как только эту задачу решат, сервис откроют для всех. Возможно, поначалу с урезанным функционалом. И это будет традиционная для Google модель “вечной беты” – пошаговое наращивание возможностей.
Обещал отвечать коротко, но не удержусь, скажу еще несколько слов. :)
Не стоит забывать, что Волна – иное явление, нежели GMail. Это не просто отдельный гугловский сервис, который надо было только “раскрутить” по максимуму. Волна это – новый формат общения с открытыми протоколами взаимодействия между самостоятельными “волновыми” серверами. Причем это еще и опенсорсный проект с обещанием раскрыть исходные тексты клиента и сервера (или их часть).
Насколько я разумею, с маркетинговой точки зрения Гугл здесь оказывается меж двух огней: с одной стороны, ему надо сделать популярным свой собственный сервис wave.google.com (он же gwave.com, googlewave.com) и “отбить” вложенные туда деньги. А с другой стороны – они заинтересованы в быстрейшем распространении Волны как нового формата общения, в появлении множества независимых от Гугла “федеративных” серверов. Google зарабатывает в основном на контекстной рекламе, а такая сеть объединенных волновых серверов – это огромный новый рынок рекламы, новый канал ее распространения.
Поэтому им не имеет смысла долго задерживаться на “раскрутке” единственного собственного сервера и, по моим скромным предположениям, довольно скоро после открытия wave.google.com начнет формироваться “федеративная” сеть. Собственно, этот процесс уже идет.
2. Чи намагався ти писати свої програми під цей протокол? Якщо ні, то чому? Якщо так, то розкажи про них докладніше.
Да, я пишу своего волнового бота на Java. Основная идея и цель этого робота (плюс будет несколько гаджетов к нему) – помогать участникам Волны формировать мини-сообщества из людей, разбирающихся в какой-либо предметной области. Работает это примерно так: вы открываете новую волну, приглашаете туда этого бота и задаете какой-то вопрос, который вас интересует. Или формулируете задачу, которую хотите решить, посоветовавшись с более опытными людьми.
Бот приглашает в вашу волну людей, потенциально способных вам в этом помочь. Первоначально это будут люди, отметившие в своем “профиле”, что они могут отвечать на вопросы по данной (или близкой) теме. Затем я планирую модернизировать и совершенствовать механизмы отбора “экспертов” и взаимодействия между участниками такой волны. Что до идей по совершенствованию, то “их у меня есть”. :)
С технической точки зрения – это будет весьма примитивная программка. Во-первых, я сам не великий программист, во-вторых, она должна выполнять достаточно несложные задачи. Если есть желающие присоединиться к проекту (например, квалифицированные программисты на Java) – буду очень рад сконцентрироваться на развитии идеи.
API, предлагаемые Волной, мне нравятся. Но многое пока не реализовано или работает не так, как следует. Поэтому программирование сейчас во многом напоминает “квест”. Но ведь это же придает дополнительный интерес… :)
3. Чим Wave для користувачів (не розробників) буде краще за iGoogle? Чи може їх не можна порівнювати? Тоді чому?
Мне кажется, это продукты совершенно разного уровня и назначения. iGoogle по сути просто является dashboard’ом, контрольной панелью – сводной страницей, куда с помощью разного рода гаджетов вы можете собрать полезную для вас информацию (новости, погода, время, чатик, список поступившей почты и т.п.).
В известном смысле можно сказать, что любая волна может быть таким dashboard’ом, поскольку в Волне тоже есть разнообразные гаджеты. Но даже гаджеты в Волне имеют важное отличие от обычных – они многопользовательские, т.е. не монопольно принадлежат вам, а доступны всем пользователям той волны, в которой размещены. Если вы что-то изменяете там (например, нажимаете кнопку голосования), то изменения сразу же становятся доступны другим участникам вашей волны.
Кроме того, в Волне есть роботы – программы, равноправные с людьми по отношению к волне. Роботы имеют доступ к содержанию волны, могут его менять (например, исправлять ошибки правописания или раскрашивать текст), что-то добавлять в текст (скажем, результаты поиска или ссылки на полезные страницы) и т.д.
4. Чи на сьогодні відомо про проекти конкурентів, які розробляють сервіси, що схожі на Google Wave?
Сами понимаете, что степень схожести может быть совсем разной. Смотря какую составляющую Google Wave взять для сравнения. И чат, и форум, и почта – тоже отчасти схожи с Волной. Google Docs позволяют совместно редактировать документы, например.
Если брать какие-то необычные сервисы, то мне известно несколько проектов, отдаленно подобных Google Wave по комплексности или по идее совместного редактирования в реальном режиме времени.
Например, есть проект Corvalius, где развивается идея о ко-оперативном редактировании несколькими участниками. В нашей группе мы немного обсуждали эти вопросы.
Еще есть wave-подобный сервис Zenbe Shareflow. Позволяет создавать “поток” сообщений разного типа (текст, почтовые сообщения, прикрепленные файлы, карты), приглашать других и подключать их к потоку. Обсуждался здесь.
5. Чи стане залучення незалежних розробників на етапі тестування нових проектів традицією для Google та інших компаній?
“Я вам не скажу за всю Одессу”, конечно, я – не Google. Но я думаю, что ответ – да.
Это очень выгодно для Google и для “иных компаний”. Снижаются издержки корпораций на тестирование и отладку. В “автоматическом режиме” создается лояльное сообщество разработчиков: когда ты долго с чем-то … э-э-э … возишься, то оно потом становится родным, его жаль бросать. :) Разработчики генерируют массу новых идей. HR-ы, “отделы кадров” корпораций получают возможность увидеть специалистов “в деле” и принимать их на работу или заключать с ними контракты. Поступая на работу в корпорацию, такой специалист уже “в процессе” и ему не требуется дополнительное время для вхождения в суть дела. Ну и так далее.
Это выгодно и для девелоперов. Чтобы не расписывать тут долго, просто попытайтесь посмотреть на вышесказанное уже со стороны разработчиков.
В общем-то эти преимущества относятся ко всему движению Open Source. Вопреки сложившемуся стереотипу, open source не противостоит “коммерческой” и проприетарной разработке. Даже с чисто экономической точки зрения оно выгодно корпорациям.
6. Як ви вважаєте, яким чином буде позиціонуватися Google Wave? Наперед дякую)
В своем предыдущем ответе я уже говорил, что не вполне согласен с тем, чтобы Google Wave позиционировать как замену традиционной почте или чату. Тем не менее, в презентации на Google I/O и позднее продвигалась мысль о том, что Google Wave – это электронная почта, как если бы ее изобрели сейчас, а не 40 лет тому назад. Потом много писалось, что Google Wave – убийца Твиттера или систем мгновенного обмена сообщениями.
Наверное, такое позиционирование и будет продолжаться дальше. По крайней мере в первый период, когда люди еще совсем не имеют представления о новинке, ее надо сравнивать с известным. Но все может легко перевернуться. Раньше, например, трактор сравнивали с железной лошадкой, а сейчас горожане могут запросто спросить о лошади – “а куда в нее бензин заливают?” :)
7. Яким чином Ви використовуєте хвилою?
Пока Волна для меня – “подопытный зверек”, а не полноценный рабочий инструмент. Тестирую ее технические возможности, пробую писать extensions для нее, своего робота, гаджеты.
Поскольку у нас создалась небольшая интернациональная команда по разработке wave-модуля для CMS Drupal (китайский программист пишет бота, я делаю субмодуль для вставки волн через визуальные редакторы, а американка подготовит документацию), то мы договорились, что будем обсуждать совместную работу в Волне. Но это пока еще в проекте.
С интересом читаю новые волны, которые создаются ежеминутно. Поскольку много иноязычных волн, это неплохой способ изучать языки (робот-переводчик ведь еще не включен, да и он будет все же только подспорьем, “роботом-подстрочником”).
И, конечно, очень интересно наблюдать над тем, как люди, заброшенные в Волну, самоорганизуются и начинают что-то тут делать. Это будет поинтереснее сериала Lost или игры Цивилизация. :)
8. Як Ви відноситеся до ідеї створення окремого (не браузерного) вейв-кліента?
В общем и целом, положительно. Но я не уверен, что нужен именно полноценный универсальный standalone клиент, повторяющий или превосходящий всю функциональность гугловского браузерного клиента (в котором мы сейчас общаемся).
Волна живет в интернете, а браузер и есть программа, специально “заточенная” под работу в Сети. Поэтому можно (и нужно) писать свои варианты браузерных клиентов. Например, под свои специфические задачи (я хотел в свое время заняться таким клиентом для нужд психотерапии через интернет) или просто для конкуренции с Гуглом и его клиентом. :) Мне известны уже 2 попытки сделать браузерный GUI, но пока только для очень ограниченного FedOne сервера.
А standalone клиент, скорее всего, разумнее всего делать не всеобъемлющим, а берущим только часть функций Волны.
Например, есть необходимость использовать Волну в режиме instant messenger’а (для обмена мгновенными сообщениями, в стиле “аськи”). Постоянно держать открытым окно браузера с Волной неудобно. Значит нужен какой-то специализированный клиент, способный “прятаться” в трее и, например, только отправлять и получать блипы. Или плагин для Mirand’ы, Pidgin’а или других IM.
Следует иметь в виду, что магистральная идея Google сейчас – сделать из браузера полноценную среду для работы приложений. В свое время Microsoft старался изо всех сил интегрировать браузер в операционную систему, теперь Google заходит на эту идею с другой стороны (например, будущая Chrome OS). Браузер должен стать такой интеллектуальной интерфейсной “прокладкой” между человеком и интернетом с его “облачными” вычислительными мощностями. Волновой клиент в браузере – вполне вписывается в это направление движения.
Я даже думаю, что следует еще сильнее интегрировать Волну с браузером. Надо дать API, которое позволит управлять браузером и его интерфейсом прямо из волн: добавлять меню, кнопки и т.п. Тогда ваш робот, скажем, сможет сформировать вам удобную рабочую среду под ту задачу, которой вы сейчас заняты. Но это – тема отдельного разговора…
9. На I/О видео ярко демонстрировалась интеграция Волны в социальные сети (к примеру комментирования сайтам через Волну). Сейчас в Wave Preview не наблюдается возможности работы с социальными сетями. Станет ли Волна универсальным средством работы в WEB 2.0 системах и СМ, или так и останется “новым методом общения” и когда это будет?
Я первоначально тоже предполагал, что Google пойдет путем внедрения каких-то специальных модификаций Волны в социальные сети. Для каждой сети – своя Волна. В русскоязычной группе про Google Wave, которую открыл в Orkut (это социальная сеть самой Google) даже написал фразу: “Есть предположение, что Гугль внедрит Google Wave прежде всего в свой Orkut.”
Но все оказалось проще и универсальнее. Команда Волны предоставляет API для внедрения (embed) волн на любые веб-страницы, в т.ч. страницы социальных сетей, если они позволяют вставлять html.
Этот Embed API пока довольно примитивный, но с его использованием уже написаны модули для внедрения волн в популярные CMS (Drupal, WordPress и т.п.).
Процесс распространения Волны по “телу” интернета пошел и его уже не остановить… :)
10. В чому “фішка” того, що Вейв вже доступний на АйФоні і які перспективи виходу Вейва на мобільні платформи, зокрема Андроїд?
Ваш вопрос, в общем повторяет тот, на который я отвечал ранее.
Насколько я себе представляю, Google идет не путем разработки специальных клиентов под каждую мобильную платформу, а путем универсальной Волны в “нативном” браузере каждой платформы.
11. Так вроде ж на айфоне браузер на том же движке, что и у андроида.
Вот и легче “делать Волну” – в расчете на многоплатформенный движок, а не на каждую платформу в отдельности.
12. 
Наприклад
 я зелений програміст. Котрий не робив нізчим, окрім візуал басік, пхп, майскьюєль, java, erlang, c# etc
 . З чого почати, щоб зрозуміти, як програмувати для гугл вєйв….ну наприклад щоб створити свого робота чи гаджета? Яка мова потрібна та основні принципи.

Для разработки гаджетов вам нужно хотя бы немного разбираться с JavaScript (в последнее время появились гаджеты еще на ActionScript). Но самые простые гаджеты можно сделать, используя готовые JS-скрипты (коих миллион) плюс довольно простую “обвязку”. См. пример.
Для разработки ботов, я думаю, вам надо начать с чтения вот этой документации. Она на “ангельском языке”, но ведь настоящих программистов это никогда не останавливало. :)
Можно пойти другим путем и начать не с “курения манов” и чтения документации, а с просмотра уже созданных приложений. Они в основном собраны в этой “галерее примеров”. Что удобно, ссылки на репозиторий, где они хранятся, можно найти рядом с самими примерами. Исходные тексты многих волновых приложений общедоступны.
Если у вас есть навык программирования хотя бы на одном из языков, то примерное понимание логики работы приложений для Волны по этим примерам вы себе составите. Даже если не знаете ни Java, ни Python, на которых сейчас пишут для Волны. Кстати, обещана возможность использования других языков, а разные группы пытаются “прикрутить” любимые языки, например, PHP. Ну, а потом уж можно читать доки или пытаться составить программы из разных готовых кусков, если вас не пугает такой стиль “copy-paste’ного” программирования. :)
Для общего понимания полезно также просмотреть презентации и скринкасты о роботах и гаджетах, подготовленные командой Google. Кое-какие из этих презентаций я перевел перевел на русский язык.
Поскольку данные ваших роботов сейчас могут храниться только на Google Apps Engine (сервис хостинга сайтов и web-приложений на серверах Google), вам придется разбираться и с GAE. К счастью, там недавно появилась подробная русскоязычная документация.
13. Пользуются ли работники Google в корпоративной работе и переписке Google Wave?
Надеюсь, вы понимаете, что я не работник Google, поэтому не могу дать ответ “от первого лица”. Но в свое время я в нашей гуглогруппе задавал похожий вопрос моему тезке, Вадиму Герасимову, руководителю разработки API гаджетов для Google Wave.
Вот его ответ:
Используете ли Google Wave вы и ваши коллеги из Гугля в профессиональном и личном общении? Ваши впечатления, насколько это удобно и насколько уже отработана технология.
Да, команда волны активно использует и одновременно работает над улучшением пользовательских качеств системы. Волна удобна для повседневного общения и заметно отличается от других приложений для связи. С моей точки зрения наиболее привлекательная сторона волны — это возможность использования гаджетов, роботов и поддержка истории
диалогов. Например, обратите внимание на последнюю часть демонстрации, в которой робот Rosy переводит сообщения на выбранный язык в реальном времени.
Основная трудность — это то, что еще не всем можно посылать волны. Количество пользователей ограничено
”.
Напомню, что вопрос задавался еще в период ранней “песочницы”. Сейчас количество пользователей Волны растет взрывообразно, так что “основная трудность” постепенно ослабевает. И можно предположить, что работники Google из команды Волны все более активно ее используют.
14. Цікаво яким чином новий сервіс Wave буде працювати зі старими способами спілкування (наприклад, з поштою старого зразка)? І взагалі, чи планує Google масовий перевід користувачів своїх попередніх продуктів (наприклад, Gmail, Gtalk) на Google Wave?
Вопрос во многом повторяет тот, который ранее задавал elGephest.
Повторюсь: тема, которая “многих волнует – связь между традиционной почтой и Волной. По идее она должна быть и должна быть очень тесной. Тем более, что Google Wave позиционируется как замена почты. В реальности мне известны 2 проекта независимых разработчиков, которые делают роботов для “моста” между почтой и Волной. Мне почему-то кажется, что этот вопрос Гугл должен решить на более глубоком уровне (на уровне сервера) и скоро может выкатить свое решение, “встроенное” непосредственно в саму Волну.”
Я думаю, что Google, конечно, будет более тесно интегрировать свои продукты с Волной. Но скорость такой интеграции будет существенно зависеть от того, насколько успешной будет экспансия Волны. Если Google Wave (и сервис, и клиент, и протокол) будут оставаться “развлечением для гиков”, то интеграция будет идти медленнее (аудитория-то не такая большая и не самая платежеспособная). Если Волне удастся избавиться от “детской болезни” гиковости (изощренный интерфейс, сложность настроек, аскетичный дизайн) и стать понятной и привычной “для миллионов”, то судьбы сервисов Гугла будут решаться быстрее. Какие-то вовсе отомрут или будут поглощены Волной, какие-то интегрируются с ней. (Впрочем, это вопросы довольно отдаленного будущего).
В общем процессы здесь будут чем-то напоминать то, что произошло с сотовыми телефонами. Сначала это были “мужские игрушки” (акцент на “фичи”, супер-технологии). Потом, по мере отработки технологий, на этот рынок “пришли женщины”. :) На первый план выходит коммуникативная функция телефона (”а поговорить”), его внешний вид и удобство интерфейса.
Прим.: Гендерное (половое) обозначение (слова “мужчины”/”женщины”)  в этом примере условно – просто удобный способ обозначить различия в акцентах. ;)
15. Меня уже как дня 2а разбирает вопрос о том что компания GOOGLE разрабатывает удивительный по своему свойству продукт, некоторый функционал в принципе можно встретить и сейчас в сети. Некоторый функционал распространяеться бесплатно что то за деньги. Но тот потенциал и усилия которые сейчас тратит компания он просто сродни поднятия равноценного поисковика google. И при этом компания собираеться поделиться своим продуктом со всеми желающими и могущими его поставить на своем сервере (на сейчас) бесплатно!Вопрос зачем это затеяли и какова цель это проекта в конечном счете ?
Работа ради работы – неверю !
И также я слабо верю в гуманизм этого проекта так как компания в свое время поставил фигову тучу солнечных батарей не только ради экономии и экологии а в первую голову потому что они смогли для себя экономить денег много и реализовать одну из “секретных технологий”

Вы правы в своих подозрениях. Google (как, наверное, и любая другая компания или здравомыслящий отдельный бизнесмен) ничего не делают “просто так”. Подавляющее большинство их действий продиктовано экономическими причинами. Либо непосредственной выгодой, либо стремлением сформировать выгодные для себя “правила игры” с помощью лоббирования законодателей или влияния на общественное мнение.
Не исключение и проект Google Wave. О своем понимании его экономической подоплеки я уже писал в ответе на первый вопрос этого интервью. Повторю его здесь еще раз: “Волна это – новый формат общения с открытыми протоколами взаимодействия между самостоятельными “волновыми” серверами. Причем это еще и опенсорсный проект с обещанием раскрыть исходные тексты клиента и сервера (или их часть).
Насколько я разумею, с маркетинговой точки зрения Гугл здесь оказывается меж двух огней: с одной стороны, ему надо сделать популярным свой собственный сервис wave.google.com (он же gwave.com, googlewave.com) и “отбить” вложенные туда деньги. А с другой стороны – они заинтересованы в быстрейшем распространении Волны как нового формата общения, в появлении множества независимых от Гугла “федеративных” серверов. Google зарабатывает в основном на контекстной рекламе, а такая сеть объединенных волновых серверов – это огромный новый рынок рекламы, новый канал ее распространения.
Поэтому им не имеет смысла долго задерживаться на “раскрутке” единственного собственного сервера и, по моим скромным предположениям, довольно скоро после открытия wave.google.com начнет формироваться “федеративная” сеть. Собственно, этот процесс уже идет.

Благодаря этим “злодеям”, преследующим свою выгоду, мы с вами можем пользоваться прекрасной (ну, или самой хорошей на данный момент) поисковой системой. А скоро (или довольно скоро) еще и будем ставить у себя волновые сервера.
16. Какие перспективы появления Google Wave на мобильных платформах (Windows Phone, iPhone, Android) ? Отдельные клиенты или в браузере ? Есть информация о сторонних разработках ?
Прямых данных о таких разработках у меня нет. Я могу предположить, что логичнее продвигать Волну на мобильные устройства не через специализированные программы для каждой платформы, а через “нативные” браузеры. Об особой роли браузера я уже писал раньше.
В презентации Ларса и Стефани вы могли видеть, что Google Wave доступна на iPhone и на Android-телефоне.
Существуют также скриншоты и фотографии того, как Волна выглядит под Android’ом. На скриншотах видно, что это Волна во встроенном браузере Айфона и Андроид-телефона, а не в специальном клиенте.
Кстати, эти скриншоты и фотографии можно посмотреть в нашем блоге.
В комментариях там я еще что-то проворчал про бездумный перенос Гуглем в андроидном браузере концепции оконного интерфейса с десктопов на наладонники. :)
Адміністрація щиро вдячна Вадиму а також усім учасникам хвилі, яких під кінець розмови назбиралося понад 80. До нових зустрічей на Українських Хвилях!

16 октября 2009 г.

Клиент для Google Wave в виде Java Web Application


Автор: zokotuhaFly (aka shaman.sir)
Источник: http://habrahabr.ru/blogs/google/72235/ (перепечатывается здесь с любезного разрешения автора)

Клиент для Google Wave в виде Java Web Application + небольшая история

Здравствуйте.

[Здесь должен быть абзац с небольшой историей, который я поместил в постскриптум, дабы не создавать ненужных ощущений до прочтения]

sametimed

Итак, я написал небольшой проект на Java, который представляет собой клиент к Google Wave, который, в свою очередь, вы можете расширить необходимыми вам возможностями. Визуально выглядит он не очень презентабельно (впрочем, а-ля Windows 3.11, почему бы и нет), поскольку веб-дизайнер из меня не очень хороший, однако абсолютно за весь исходный код я отвечаю головой :). Так, например, требующиеся для отображения CSS-стили при этом выглядят максимально понятно, а XHTML-структура максимально упрощена (не в ущерб стандартам) для того, чтобы настоящий дизайнер мог развернуться и сделать действительно красиво :).

sametimed в работе

Сайт, исходные коды, и war-пакет с текущим состоянием проекта находятся по адресу http://code.google.com/p/sametimed

Сейчас у меня нет под рукой общедоступного хостинга, чтобы я мог прямо вот так запустить проект и дать поиграться с ним не отходя от хабра, однако, я могу предложить вам видео (на vimeo), демонстирующее его основные возможности, что, думаю, тоже вполне ничего, а запустить проект вы сможете сами, благо подробные инструкции есть на сайте проекта, а развёрнутые пояснения и подробное описание работы (и руководство к расширению возможностей) — внутри…



Установка


Для того, чтобы запустить этот клиент, нужно, по идее, четыре вещи:

Чуть более подробные инструкции как его запустить сам по себе или в виде рабочего проекта для Eclipse представлены на странице проекта. Здесь же я рассмотрю структуру кода и опишу как он действует (пока без что UML-диаграмм, извините, по мере возможности я их добавлю).

Общая концепция


Здесь под сочетанием «серверная сторона/часть» подразумевается не сервер wave-protocol, а серверная строна веб-приложения.

Поскольку в wave-protocol сейчас существует только консольный клиент, релизованный в виде jar-приложения, основной вопрос состоит в своевременной передаче информации с клиента на серверную часть и наоборот.

Посему стало необходимо ввести два понятия:
  • Команда: отправляется с клиента на сервер, требует «открыть волну», «добавить участника», «отменить действие», «сказать привет» и т.п., отправляется по действию пользователя.
  • Сообщение: отправляется с сервера на клиент, сообщает о том, что «кто-то пригласил в волну», «sonya ответила привет», «добавился участник», «произошла ошибка», отправляется при любом обновлении.

При этом, команду с клиента можно отправить сразу, сильно не задумываясь о нагрузке на сервер, а вот сообщения об обновлениях требуется отсылать только по факту происшествия. Однако, на клиенте находится javascript, который без сложных приспоcоблений не может осуществлять такие вещи. Здесь потребовался Reverse Ajax, вернее его реализация для Java — библиотека DWR (Direct Web Remoting), она позволяет вызывать функцию на клинете с сервера в тот момент, когда решит сервер, а не клиент. Их сайт рассказывает о всех возможностях, которые вовсе не ограничены данным применением, но для проекта, как я уже сказал, из всех возможностей я использовал только эту.

Команды и сообщения передаются в виде XML, а содержимое сообщений об обновлениях в виде JSON, засчёт чего в построении интерфейса участвует только Javascript (я использовал JQuery), а серверная сторона даже не задумывается о существовании UI.

(для серверной стороны в проекте есть интерфейс Renderer, реализация которого вызывается при необходимых обновлениях, но он предназначен как раз для случаев вроде консольного клиента)

Описание процесса, происходящего в текущей версии


При запуске клиента, вы видите страницу с полем для ввода юзернейма и единственной кнопкой. Wave-protocol сервер при этом должен быть запущен. При нажатии на кнопку введённый вами юзернейм передаётся в сервлет (GetClientViewServlet), который подключает вас «к волне», и возвращает всю структуру (модель) клиента в виде JSON. JQuery на клиентской стороне строит весь интерфейс вейвлета. Если вы нажмёте кнопку ещё раз, вы запросите ещё один вейвлет, при этом между собой они будут различаться по внутреннему ID (сгенерированному автоматически), указанному на синей полоске в скобках. По этому ID и сервер и клиент определяют, к какому клиенту относится команда и/или сообщение.

Одновременно с этим DWR начинает ожидать вестей об обновлениях, а вы в это время можете ввести любую из доступных команд в поле консоли и нажать «send». Например, создать волну командой «\new», открыть её командой «\open » и что-нибудь сказать, набрав просто текст (как в скайпе). При нажатии на кнопку «send» отправляется POST-запрос к другому сервлету (CommandsReceiverServlet), который получает сгенерированную в виде XML команду и тут же её выполняет, передавая данные серверу wave-protocol.

Обновления в данный момент приходят с серверной стороны (и от сервера wave-protocol) в виде XML-сообщения (на клиентской стороне есть обработчик, который вызывается при получении новых сообщений), в котором содержится алиас изменившейся модели (например, «chat», «inbox», «userslist», «errors» или «editor») и её содержимое в виде JSON, которое тут же обрабатывается и обновляет соответствующую часть вейвлета.

Как видите, всё до невозможности просто.

Структура проекта и возможности для расширения



Java:


  • name.shamansir.sametimed.wave Все классы, лежащие «снаружи» и относящиеся к клиенту непосредственно; здесь находятся абстрактные классы AUpdatingWavelet и ADocumentsWavelet — определяющие структуру соответствующего типа вейвлетов (обновляющийся вейвлет и его расширение, вейвлет содержащий документы). Класс SimpleWavelet служит примером такой реализации. Класс WavesClient занимается обработкой команд и именно он возвращает модель содержащегося в нём вейвлета вGetClientViewServlet.
  • name.shamansir.sametimed.wave.messaging Все, что относится к командам и сообщениям. Идентификаторы команд/сообщений вCommandID/MessageTypeID, сами классы Command и UpdateMessage, сервлет-обработчик CommandsReceiverServlet.
  • name.shamansir.sametimed.wave.model Классы, описывающие модель вейвлета. Они содержат описание каждой суб-модели, вроде списка участников, чата или текстового документа. И ModelID, описывающий возможные модели с абстрактным классом AModel, конечно. Плюс,ModelFactory, фабрика моделей.
  • name.shamansir.sametimed.wave.model.base Значения моделей, вроде «набора строк чата», «набора блоков текста в документе», «списка доступных волн» и т.д. Именно в этих классах описывается преобразование в JSON.
  • name.shamansir.sametimed.wave.model.base.atom То, из чего состоят значения, если это необходимо для их структуры — «строка чата», «блок текста», «идентификатор волны»
  • name.shamansir.sametimed.wave.model.base.chat Вейвлет с функцией чата и клиент для него
  • name.shamansir.sametimed.wave.model.base.editor Вейвлет с поддержкой редактируемого документа, на данный момент не имплементирован, поэтому отключен
  • name.shamansir.sametimed.wave.render Классы, относящиеся к рендерингу Здесь находится тот самый класс JSUpdatesListener, который средствами DWR вызывает функцию обновления на клиенте.

Самый логичный способ расширения — имплементация класса ADocumentsWavelet или расширение класса WaveletWithChat. Поскольку, в наиболее вероятном случае, вы будете оперировать понятием «документ» (А чат или что-либо другое, как раз являются документами), то именно такой способ должен подойти вам лучше всего. Также вам понадобится задуматься о модели данного документа (создав соответсвующий тип, реализующий AModel, добавить id модели в тип ModelID и генерацию модели в ModelFactory).

Если документ не будет обрабатывать какие-либо новые команды, то этого достаточно — можно заменить в GetClientViewServlet возвращаемый вейвлет на ваш собственный и вуаля!.. Ах, да, ещё генерация UI на клиенте, но об этом ниже.

Если же необходимы свои собственные, предназначенные сугубо для него команды, то необходимо добавить соответствующие команды в тип CommandID. После этого нужно расширить класс WavesClient для поддержки вашего вейвлета и для того, чтобы он обрабатывал и передавал новые команды вейвлету независимо от предка. И, в этом случае, заменить в GetClientViewServlet реализацию WavesClient на вашу собственную. И снова вуаля! (снова, не учитывая UI)

Вам понадобится, конечно же, учесть пару тонкостей при написании обработки команд, но в общих чертах это весь необходимый процесс для расширения функциональности клиента.

Javascript


  • ui.js занимается генерацией интерфейса, для каждого блока модели есть собственный метод
  • command.js отправляет и генерирует команды, принимает сообщения об обновлениях, а также содержит обработчики для кнопок
  • ajax.js скрипт, который давно пора заменить на соответствующий метод jquery, но никак не доходят руки :). используется в command.js

Для того, чтобы добавить генерацию вашей модели, достаточно добавить строку, вызывающую ваш метод обработки в методы CreateClient и renderUpdate объектаClientRenderer в ui.js и собственно написать этот метод. Всё остальное будет (должно) работать самостоятельно.

CSS


  • sametimed-plain.css ещё чуть более ужасный интерфейс чем цветной :)
  • sametimed-colored.css цветной, Windows 3.11-подобный интерфейс :).

Пока что стили, определяющие позиционирование и внешний вид (цветность) не разделены, хотя они разделяются комментариями в самих файлах. Думаю, я не буду этого менять.

Эпилог


Вышло много текста про один небольшой аппликейшн, но зато пост описывает все его возможности. Надеюсь найдётся не один человек, которому эта разработка будет интересна и если найдётся, планирую усовершенствовать его дальше. Пока это небольшая поделка «из интереса», но немного стараний — и её можно превратить в полноценный проект.

Тех, кто это будет тестировать, прошу постить баги в соответствующее место, в разумных пределах и не относящиеся к дизайну :).

Участие в разработке приветствуется но поощрить нечем, только лицензией :).

Важное пояснение


Если вы будете проверять приложение в работе одновременно с консольным клиентом wave-protocol, сообщения отосланные из консольного клиента будут приходить на одно позже. Это не баг и не фича, это способ генерации «документа» чата. В консольном случае Google, по крайней мере как посчитал я, изменили порядок записи элементов документа так, чтобы их было удобнее отображать в консоли (начало элемента, конец элемента, затем его содержимое). В моём случае элемент строится в привычном порядке (начало, содержимое, конец), этим и обусловлено это несоответствие. Если исправить порядок генерации в моём проекте на тот же, что и в консоли, они будут будут полностью друг другу соответствовать.

И да, специальной проверки/валидации введённых на клиенте данных пока не производится.

P.S. Собственно, абзац: Где-то с месяц назад в поисках работы я получил тестовое задание от некоторой фирмы X, аж на три недели. При том, что большую часть задания я выполнил и показал текущий на то время вариант в работе и прошёл 80% тестов на собеседовании, меня не приняли. Посему я считаю что имею право поделиться и исходным кодом и руководством к использованию с хабраобществом. Код я развил немного в другом направлении, но тем не менее он может оказаться полезным, даже если у гугла неожиданно окажется есть всё необходимое и в рабочем (доступном разработчикам) варианте.

да-да, слово editor используется часто применительно к проекту, потому что изначально он планировался (и планируется) как одновременный редактор