ИНТЕРНЕТ

Современный подход к совместной работе на базе веб-технологий

Дмитрий Уланов, Петр Смирнов

На современном уровне развития информационных технологий разработку программного обеспечения зачастую ведут разбросанные по разным часовым поясам планеты группы специалистов. С особенной остротой встает проблема синхронизации и коммуникации таких групп. Системы контроля версий, обычно применяемые для поддержки команды программистов, обычно крайне неэффективны при распределенной работе с текстовой информацией через Интернет.

При этом не секрет, какую сложность составляет создание документации и ее постоянное обновление по ходу проекта. Конечно, существуют системы обработки текстов, допускающие редактирование документа несколькими пользователями, но какими бы совершенными они ни были, в конечном счете текстовые редакторы предназначены для создания распечатываемых материалов. Самое главное, в них отсутствуют гиперссылки, необходимость которых при работе с большими объемами данных понятна любому пользователю Интернета*1.

_____

*1 Строго говоря, это не совсем верно: поддержка гиперссылок присутствует и в MS Word, и в DocBook (docbook.org), и во многих других системах, но их использование крайне ограничено.    

Рис. 1. Титульная страница WikiWikiWeb

В начале 90-х годов прошлого столетия Вард Каннингем (один из приверженцев описания шаблонов, методологий объектно-ориентированного и экстремального программирования) предложил изящное и простое решение проблемы. В результате в 1995 г. на свет появилась WikiWikiWeb, или Вики (www.c2.com/cgi/wiki?WelcomeVisitors), - среда для совместной работы на базе WWW, позволяющая любому посетителю сайта управлять его информационным наполнением. Wiki wiki по-гавайски означает "быстро". Вот каким образом Каннингем определил эту технологию: "Это простейшая из всех баз данных, которая может работать". С того момента и началось повальное создание клонов WikiWikiWeb, которых уже насчитывается несколько десятков (www.c2.com/cgi/wiki?WikiEngines).

Актуальный пример

Допустим, вы - технический писатель и находитесь, скажем, в Монреале. Вам нужно подготовить документацию к какому-нибудь прикладному программному интерфейсу (API). Описав на пике творческого подъема 10 функций, вы помещаете первую версию на страницу Вики и уходите домой, послав по почте уведомление программисту, который написал эти функции. Программист работает в далекой России, в городе Санкт-Петербурге. У вас наступает ночь, у него - день.

Получив ваше уведомление, он обращается к этой странице Вики и находит в ней массу маленьких, но досадных технических ошибок и неточностей. Что делать? Да все очень просто: он берет эту страницу и правит ее. Таким образом, с технической стороны страница становится верной. Ночь проходит, и у вас наступает утро.

Проснувшись и придя на работу, вы читаете исправленную версию страницы. Но у программиста неважно обстоят дела с английским (французским или русским) языком, и исправленная версия вызывает у вас гомерический хохот. Вы снова правите ее (ведь вы - писатель, не забыли?) и посылаете соответствующую ссылку своему боссу, который в данный момент летит над Тихим океаном, приближаясь к Японии. Просмотрев страницу со своего ноутбука, он возмущается тем, что нет ни одного упоминания про GPL (General Public License - генеральная общественная лицензия), и тут же добавляет ссылку. В результате довольны все.

Базовые положения

Основополагающий принцип систем Вики заключается в том, что в любой момент любой посетитель может добавить на сайт все что угодно (или почти все - это зависит от решаемых задач) с помощью обычного веб-браузера. Каждая Вики-страница содержит ссылку "редактирование". При нажатии на нее на экран выводится та же самая страница, но не конвертированная в HTML, а представленная в виде плоского текста на упрощенном языке разметки. Пользователь может изменить ее, а затем нажать клавишу "сохранить". Тут же произойдет конвертация в HTML, и на экране появится обновленная по сравнению с исходным вариантом Вики-страница. Таким образом, любой может вносить изменения в общий информационный ресурс, заменяя его новыми версиями. При этом старые версии сохраняются, что в дальнейшем позволяет осуществлять откат на любую глубину.

Все это превращает Вики-сайт в идеальную среду для совместной работы, и при этом не нужно внедрять дорогостоящее клиент-серверное программное обеспечение или выделять системных администраторов. Мало того, при работе с ним абсолютно не требуется знание языка разметки HTML, поскольку используется простой синтаксис. На рис.

- изображена титульная страница WikiWikiWeb, а на рис. 2 - процесс ее редактирования.    

Рис. 2. Редактирование титульной страницы WikiWikiWeb

Правила редактирования

Существует несколько различных реализаций системы Вики. Объединяет их то, что Вики-страницы всегда имеют два представления: для отображения информации в виде HTML и для редактирования при помощи упрощенного языка разметки. Синтаксис и стиль этого языка могут варьироваться в зависимости от конкретной реализации Вики.

Процедуры форматирования Вики не относятся к решениям WYSIWYG, и их нельзя назвать интуитивно понятными. Но в командах редактирования можно разобраться после минимального изучения. Кроме того, они достаточно коротки и позволяют держать открытым второе окно в браузере для того, чтобы быстро получить необходимую справку.

Таблица 1. Примеры форматирования текста в OpenWiki

Простейшие Вики-среды допускают элементарное форматирование текста, более сложные обеспечивают работу с таблицами, изображениями, формулами и даже некоторыми интерактивными элементами. Разнообразие средств стимулирует начало работ по стандартизации разметки Вики.

Базовые правила форматирования текста очень просты:

- не создавать абзацев;

- в качестве разделителя использовать пустые строки;

- четыре дефиса или больше в начале строки преобразуются в горизонтальный разделитель.

Чтобы создать новую страницу, достаточно при редактировании текущей ввести новое Вики-имя в виде нескольких слов, записанных с прописной буквы; в дальнейшем оно будет использоваться в качестве имени для новой страницы. Если до этого страницы с таким именем не существовало, то после сохранения будет сгенерирована ссылка, оканчивающаяся знаком вопроса. Щелчок на ней открывает окно редактирования новой страницы. Тем самым ссылки между страницами прописываются с помощью Вики-имен. Поскольку названия страниц являются гиперссылками между документами, то нужно, чтобы они ясно указывали на содержимое страницы. Например, для данной статьи в системе Вики можно было бы дать имя "ТехнологияВики".

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

Во втором примере показано, как устанавливать ссылки на другие страницы и группировать их в список. Для создания ссылки используются Вики-имена, например "СсылкиРесурсы" и "РубрикиФорума", а список реализуется двумя пробелами и символом звездочки.

Способы применения

Философия систем Вики переживает бурное развитие и имеет хорошие шансы для использования во внутрикорпоративных целях. Данная технология, возникшая как средство совместной работы, была подхвачена Интернет-сообществом и формировалась в рамках концепции свободного редактирования (open editing), близкой по своей философии к программированию с открытым кодом (open source). Она воспринималась как средство демократизации доступа к веб-сайтам, которое позволяет всем и каждому редактировать любую страницу и таким образом аккумулировать интеллект и знание некоторого социума.

При первом знакомстве с технологией Вики у всех возникает абсолютно одинаковая реакция: "Что же это получается, кто ни попадя может изменять содержимое сайта?". Представьте себе, и все прекрасно живет и работает. Даже если найдется злоумышленник, который что-то повредит, всегда можно обратиться к списку последних изменений и восстановить испорченное. Конечно, в такой ситуации может разгореться "война редакторов". Она более всего опасна в условиях открытых Вики-сред вроде энциклопедий, где угроза антагонизма реальна, и менее всего - в корпоративных условиях. Иногда противостояние принимает форму войны вкусов, ведь пользователи могут расходиться во мнениях.

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

Wikipedia

Рассказывая о технологии Вики, невозможно оставить без внимания один из самых значительных проектов на ее основе - свободно доступную для чтения и редактирования электронную энциклопедию Wikipedia (www.wikipedia.com), созданную в 2001 г. Ларри Сандером. Количество статей в ней уже превышает 280 тыс. В этом добровольно создаваемом труде можно найти то, чего нет, например, в Британской энциклопедии. Сейчас Wikipedia существует на 40 языках, причем это не переводы, а национальные версии энциклопедий. Часто при поиске в сети информации на определенную тему неплохой отправной точкой является обращение к Wikipedia.    

Рис. 3. Wikipedia о системах Вики

Реализации

Существует целый ряд свободно распространяемых реализаций Вики-систем. Различаются они синтаксисом редактирования и технологиями, на основе которых созданы. Наиболее часто используются CGI-скрипты, Perl, PHP, JSP, ASP, Python, Tcl, SmallTalk. В табл. 2 представлен сводный список наиболее распространенных вариантов.

Таблица 2. Сводный список некоторых свободно распространяемых реализаций технологии Вики

Ограничения

Остановимся на недостатках, иногда возникающих при долгой работе со многими реализациями систем Вики.

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

Эта проблема обуславливает второе большое неудобство: невозможность структурирования. Иными словами, бывает, что Вики подобна живому организму, без какой-либо иерархии. По ней можно ходить бесконечно, переходя от одной ссылки к другой, что похоже на блуждание по лесу без компаса. Если ты прочел что-то интересное, но не запомнил, где это находится, - готовься потратить уйму времени на поиск.

И наконец, в системах рассматриваемого класса неудобно общаться. Это надо принять во внимание сразу. В Вики нет идентификации пользователя в рамках тела документа, то есть любую правку, любую запись, которая является мнением или замечанием, надо подписывать. Это неудобно. Внедрение систем комментирования частично данную проблему решает.

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

Работающий пример системы Вики и другие аспекты программирования, используемые авторами, можно найти на www.xprogramming.ru/wiki/.

Версия для печати