Наши партнеры

UnixForum





Библиотека сайта rus-linux.net

Битва за Веснот

Глава 25 из 1 тома книги "Архитектура приложений с открытым исходным кодом".

Оригинал: Battle for Wesnoth, глава из книги "The Architecture of Open Source Applications" том 1.
Авторы: Richard Shimooka и David White
Дата публикации:
Перевод: Н.Ромоданов
Дата перевода: июль 2013 г.

Creative Commons. Перевод был сделан в соответствие с лицензией Creative Commons. С русским вариантом лицензии можно ознакомиться здесь.

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

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

В нашем проекте, «Битва за Веснот» («Battle for Wesnoth»), с самого начала делалась попытка решить эту проблему. Данная программа является стратегической игрой в стиле фэнтези, созданной на основе модели с открытым исходным кодом и лицензией GPL2. Это был довольно внушительный успех с более, чем четырьмя миллионами скачиваний на момент написания статьи. Несмотря на такой впечатляющий показатель, мы считаем, что по-настоящему красивой гранью нашего проекта является модель разработки, позволяющая взаимодействовать и создавать свои решения группе добровольцев, обладающих крайне различными уровнями программистских навыков.

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

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

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


Продолжение статьи: Обзор проекта