Немногим более пяти лет тому назад Давид Хайнемайер Ханссон приступил к созданию платформы Ruby on Rails. В то время он был 23-летним студентом Копенгагенской школы бизнеса. Конечная цель заключалась в том, чтобы построить простую инфраструктуру создания Web-приложений, которая избавила бы разработчиков от необходимости по многу раз писать один и тот же код, что присуще платформам типа Java и .Net.
Ему удалось этого добиться. В 2005 году он получил премию Google-O’Reilly Best Hacker. Сегодня его работу поддерживают такие титаны, как IBM и Sun Microsystems. По словам Ханссона, сегодня только из главного репозитория Rails — а это лишь один из многих источников — платформу загружают порядка 10 тыс. раз в неделю.
Конечно, без проблем не обошлось. Некоторые жалуются на то, что масштабируемость приложений Ruby on Rails, предъявляющих повышенные требования к вычислительным ресурсам, оставляет желать лучшего, хотя сообщество разработчиков Rails и предложило специальные модули расширения, призванные преодолеть эти ограничения. Кроме того, появляются предложения стандартизировать язык, с тем чтобы исключить возможность фрагментации и появление многочисленных диалектов Ruby.
Между тем, шумиха вокруг платформы не только не утихает, но и продолжает нарастать. В конце сентября в Берлине состоялась конференции пользователей Ruby on Rails, на которой прозвучало несколько громких анонсов инструментальных средств, в том числе и от крупных компаний. CodeGear представила интегрированную среду разработки приложений на платформе Ruby on Rails. Компания Sun Microsystems рассказала о развитии инициативы JRuby. Представители IBM продемонстрировали адаптер DB2 для Rails.
Сегодня Хайнемайер Ханссон живет в Чикаго и работает в компании 37signals, специализирующейся на проектировании инструментов для организации совместной работы. В преддверии конференции пользователей Ханссон дал интервью корреспонденту службы новостей IDG, рассказав, каким ему видится будущее Ruby on Rails.
Какие обновления ждут саму платформу Rails?
Следующим серьезным обновлением станет выпуск версии Rails 2.0. Задача сегодня заключается в том, чтобы консолидировать и укрепить то, что у нас уже имеется. Серьезных успехов удалось достичь в области сервисов RESTful. Ранее во многих случаях им отводилась лишь роль дополнения, одного из возможных вариантов выбора. Разработчики нервничали, их интересовало, начнет ли развиваться направление SOAP и Web-сервисов. Сегодня мы делаем ставку на RESTful.
Кроме того, мы намерены убрать ряд элементов — функции, не имеющие отношения к тому, чем программисты занимаются большую часть времени. Часть элементов будет изъята из базовой структуры и представлена в виде модулей расширения. Тот, кому обойтись без них тяжело, легко сможет воспользоваться соответствующими модулями расширения. К примеру, сервис Action Web Service, поддерживающий на платформе Rails протокол SOAP, больше не будет входить в состав основного пакета Rails. Если вдруг вам понадобится Web-сервис SOAP, вы без труда сможете его установить. Если же у вас есть сомнения по поводу того, что лучше использовать: REST или SOAP — сделайте выбор в пользу REST.
Удаление части элементов придаст Rails дополнительную простоту и легкость?
Да. Не думаю, что все компоненты, которые когда-то были включены в платформу в порядке эксперимента, должны оставаться здесь навечно. Мы не хотим уподобляться разработчикам Java — этим барахольщикам, которые не желают расставаться ни с чем. Мы не боимся выбрасывать вещи, которые нам больше не подходят или не нравятся. Очень важно сохранить легкую и дружественную структуру.
Срок выпуска версии 2.0 уже определен?
Все будет зависеть от того, какую форму примет конечный продукт. Мы надеемся завершить все в этом году. Это проект с открытым кодом, в основе которого лежит желание получить готовый результат. Однако объем работ имеет свойство то увеличиваться, то уменьшаться. Мы не пытаемся идти традиционным путем и не стремимся во что бы то ни стало придерживаться каких-то определенных сроков.
Некоторые настаивают на необходимости стандартной реализации Ruby, исключающей возможность фрагментации технологии на несколько независимых направлений. Что вы думаете по этому поводу?
Определенно речь идет о том, что нужны спецификации Ruby, которые можно было бы реализовать в рамках JRuby или IronRuby (версия JRuby для .Net). Мне известно, что некоторые продвигаются в этом отношении вперед, и это неплохо. Никто из них не пытается регулярно давить на меня. Меня же вполне устраивает реализация Ruby, сделанной Матсом (создатель Ruby Юкихиро Мацумото. — Д. Н.). Версии JRuby, IronRuby и пр. относятся к узким нишам — это не то, что нужно большинству пользователей Rails.
Однако корпоративные клиенты заинтересованы в JRuby, потому что в этом случае они смогут использовать Rails на уже существующих серверах Java-приложений…
JRuby — отличный повод открыть дискуссию с корпоративными пользователями. Ruby — поэтапно совершенствующийся компонент, который вы можете интегрировать в свою инфраструктуру. В некотором смысле, это мостик для перехода из одного места в другое.
Многие наши пользователи пришли к Ruby on Rails напрямую, они не тащат за собой лишнего багажа. И таких пользователей подавляющее большинство. Корпоративные же клиенты являются новичками в данной области.
Так каково же основное предназначение Rails сегодня?
Основная область применения — создание Web-приложений. В какой-то степени платформа используется для создания приложений Web 2.0 и решений электронной коммерции. Мы со своей стороны занимаемся сейчас созданием средств организации совместной работы. Любое приложение, к которому можно обращаться с помощью браузера, хорошо укладывается в рамки концепции Ruby on Rails. Сюда относится достаточно широкий спектр приложений, начиная с представителей не вполне оформившегося направления Web 2.0 и заканчивая программами оценки кредитоспособности.
Где бы вам хотелось добиться успеха, что бы вы пожелали Ruby on Rails?
Я мечтаю о том, чтобы люди получали пользу от этой платформы. Мы не пытаемся приспособить Ruby on Rails к нуждам корпоративных клиентов, а предлагаем корпоративным пользователям самим адаптироваться к особенностям Ruby on Rails. Вам нравится — добро пожаловать, нет — проходите мимо. Мы не собираемся заниматься акробатическими трюками, чтобы подгонять свою платформу под корпоративные стандарты или переманивать корпоративных клиентов с платформы Java. Начав учитывать интересы узких групп, мы в конечном итоге придем к той же самой аудитории.
Мы продолжаем предлагать технологии и технические решения, которые подходят в первую очередь нам. Если они подходят и другим — замечательно, но для нас Rails — мозговой штурм, сфокусированный на наших собственных потребностях. Меня заботит прежде всего построение структуры, которая будет удовлетворять мои потребности. Это единственное условие, которого я придерживаюсь в ходе разработки.
Вы немного напоминаете мне Линуса Торвальдса и его высказывания о Linux десятилетней давности…
Практически невозможно заниматься проектированием с полной самоотдачей для других. Вы строите систему для себя. Именно так нужно поступать, и тогда вы создадите то, что вам понравится и что вы захотите использовать, а уже потом это понравится и другим людям.
Нас никак нельзя кооптировать, на нас не давят коммерческие структуры. Меня абсолютно не заботит, будут ли корпоративные клиенты и представители деловых кругов использовать Rails или нет. Я строю Rails для себя, поэтому давить на меня практически невозможно. Нельзя сказать: «Добавьте этот функционал, и мы приведем вам тысячи новых клиентов». Такой подход не работает. Возможна лишь аргументация с точки зрения технических преимуществ.
Как бы вы охарактеризовали отношение к Rails со стороны Sun и IBM?
Думаю, они понимают, чего хотят разработчики, понимают, что вокруг Ruby on Rails сложилась атмосфера страстного увлечения, энтузиазма, и им не хочется упускать такой шанс. По большому счету, они плывут вместе со всеми на волне эмоционального и душевного подъема.
Мы не хотим работать над созданием какой-то крупномасштабной среды типа .Net или J2EE. Мне известно, что многие в Sun хорошо ориентируется в происходящем, но извлечет ли из этого уроки компания в целом, я не знаю. В некоторых отношениях Rails противостоит J2EE, но в то же время в Sun проделали большую работу над JRuby и Unix-инструментарием, к которым относится, например, программное обеспечение DTrace. Как и в любой другой крупной компании, здесь есть различные внутренние течения. Как бы то ни было, я приветствую выход Sun и IBM на эту сцену.
Сколько человек принимают сегодня участие в разработке Rails?
В состав основной группы входит 12 человек, имеющих право вносить изменения в общую конструкцию. Кроме того, несколько сотен людей занимаются совершенствованием платформы для своих собственных нужд.
Сколько вам лет, и какой багаж знаний был у вас за плечами, когда вы приступили к созданию Ruby on Rails?
Сейчас мне 27 лет. У меня был опыт работы с PHP и Java, именно с этой областью и связана моя основная профессиональная подготовка. Главным образом я занимался PHP в собственных интересах, ну и некоторое время поддерживал контакты с разработчиками Java. В отдельных моментах речь шла о J2EE, в остальном — о Java в целом. Существовало две силы, которые продолжали наращивать свое влияние. С помощью Ruby On Rails я попытался объединить лучшие черты обоих миров, с тем чтобы добиться такой же быстроты, как у PHP, и такой же прочности, как у Java.