ПЕРЕПИСКА: Как я провел лето
ПЕРЕПИСКА: Как я провел лето
Несколько месяцев назад в «13-й комнате» я упомянул о программе Google Summer of Code («КТ» #593), в рамках которой любой студент мог попытаться получить финансирование под свой проект. Тогда же я попросил тех, кому удастся получить стипендию от Google, рассказать об этом в «КТ». И вот - обещанный репортаж. - В.Г.
Несмотря на название программы, сам Google оказался только спонсором и посредником, не принимая непосредственного участия в оценке проектов. Этим занимались известные open source-организации (менторы) - Apache Software Foundation, FreeBSD, MozDev и т. п. Менторы составили список идей для проектов, отобрали кандидатов и затем контролировали ход работ. Таких - специально отобранных - счастливцев оказалось чуть больше четырехсот (изначально планировалось двести) из почти девяти тысяч заявок. Пока неизвестно, сколько из них дошло до финиша, но большая часть проектов, похоже, завершилась успешно.
Я вначале не особо заинтересовался SoC. Своих проектов куча, и для чего-то еще найти время невозможно, даже если есть шанс получить 4500 долларов. Тем не менее я зашел на сайт посмотреть, а можно ли получить грант на свой собственный проект. Тогда мне показалось, что нет.
Через некоторое время заметка о SoC появилась в «Компьютерре», и меня привлекла фраза о том, что можно предложить свой проект. Пришлось перепроверять. Возможность была совершенно неочевидной. В конце концов меня убедило то, что Google добавил себя в список менторов с пустым списком идей и что в FaQбыл положительный ответ на вопрос «Могу ли я продолжить работу над уже начатым проектом в рамках программы?»
Далее надо было выяснять, являюсь ли я студентом. Студентами Google считал всех, кто обучается в каком-либо официальном учреждении. В частности, было прямо написано, что аспиранты (PhD students) могут участвовать в программе.
Остальные вопросы обсуждались в google groups "summer-discuss". В той же рассылке можно найти предварительную статистику по странам. Похоже, принадлежность определялась по домену почты, так что данные вряд ли точны. Но на 13 июня было подано 1695 заявок из США, 372 из России (2-е место), 147 с Украины (9-е место).
Чем я занимаюсь
Прежде чем перейти к моему проекту, расскажу, чем я вообще занимаюсь. Многие приложения по большей части состоит из работы с деревьями. В компиляторах это преобразование одних деревьев в другие, в текстовых процессорах - обработка структуры документа. Хотя приложения совсем разные, набор базовых операций над деревьями совершенно одинаковый. Столкнувшись с тем, что мне приходится писать по сути один и тот же код для разных окружений, я подумал, что с помощью XML-технологий мог бы решить эту проблему. Кроме того, мне не нравилось, что кода на такую задачу в принципе требуется слишком много - а вот если бы я использовал XML-технологии, то достаточно было бы написать тривиальные XPath-выражения.
Так почему же не использовать XML-технологии для любых древовидных данных? На мой взгляд, единственное препятствие - отсутствие библиотек, которые могут адаптироваться в зависимости от программного окружения. Эту проблему я взялся решать["Reusing XML processing code in non-XML applications"] с помощью виртуальной XML-машины, байт-кодом которой является язык Scheme, а за основу универсальной реализации XPath/XSLT/XQuery были взяты библиотеки проекта SSaX.
Несколько пилотных проектов показали, что идея жизнеспособна. В качестве финального теста я решил немного модифицировать XSLT-процессор xsltproc, а именно заменить движок XPath на мою версию. После чего можно сравнить результат исполнения сложной XSLT-программы (например, преобразования DocBook) в обоих вариантах и сделать вывод о пригодности универсального кода.
В процессе работы я заметил, что «выход в Scheme» значительно расширяет возможности XSLT и позволяет писать более сложные по функциональности, но более простые в поддержке преобразования. Анонс SoC послужил катализатором. Я записал мысли, оформил их как идею проекта «XSieve: XSLT + Scheme, альтернатива XSLT 2.0» и отослал заявку.
По моей оценке, шансов было мало, а времени до даты ответа хватало, поэтому я подзабыл про SoC. Тем приятнее было получить письмо от Google с поздравлениями. А через пару дней в пустом до этого ящике оказалось более сотни писем. Оказывается, был создан закрытый список рассылки, который наполнился обменом радостями и описаниями проектов, выяснением, кто из какой страны и университета, и вопросами, как связаться с ментором и что делать дальше.
Что делать дальше?
Формальности по работе над проектами зависели от ментора. Где-то достаточно было использовать систему контроля версий, а в некоторых проектах крупных организаций надо было строго следовать инструкциям и письменно подтвердить, что автор выпускает свой код под нужной open source лицензией.
Так как я работал над своим собственным проектом, то мой ментор (Йосики Хаяси [Yoshiki Hayashi] из Google) свел формальности к минимуму. Он попросил выложить проект на SourceForge и подробно описать язык XSieve. Но на всякий случай я посылал еженедельный отчет о проделанной работе.
Большой проблемой оказались бумажные формальности. Надо было по факсу отправить в Google следующее: некое подобие договора; свидетельство о том, что участник является студентом; форму W-8BEN для бухгалтерии Google и реквизиты банковского счета, куда переводить деньги. Для подтверждения своего статуса я отксерил аспирантское удостоверение и сам перевел фразы на английский язык. Неопытного человека могло бы затруднить открытие счета и указание реквизитов. Но тут в качестве помощи можно использовать форумы и FAQ русских шареварщиков. Единственным камнем преткновения оказалось заполнение формы W-8BEN, а точнее поля ввода ITIN.
ITIN расшифровывается как Individual Taxpayer Identification Number, его российским аналогом является ИНН. Нет ITIN? 30% (1350 долларов) идет дяде Сэму в лице мистера Буша. Есть ITIN? Тогда как повезет, это зависит от договоренностей между странами. С Россией договор есть, так что до нас в итоге должна дойти вся сумма (-13% налога).
Участники имеют полное право называть программу (по крайней мере, первый месяц) «Summer of Taxes». Благодаря рассылке, мы узнали много нового о налогах в разных странах, а также о получении ITIN. Единого мнения о том, как это делать, так и не сложилось. Я в заявке на ITIN указал «Nonresident alien required to obtain ITIN to claim tax treaty benefit», «Exception 1» и treary article number для «Personal Services». К заявке приложил документ от Google, в котором они должны были бы объяснить, зачем нам нужен ITIN. По-моему, у них это не получилось, поэтому я дополнительно написал cover letter. Последняя необходимая бумажка - сертифицированная копия загранпаспорта. Пришлось идти в американское консульство и оставить там $30. Понравилось, что нотариус работает в часы для приема американских граждан, поэтому очереди не было. Не понравилось, что тетушка стала докапываться до деталей, зачем мне нужна копия. Я не был готов к вопросам, но ответил без проблем.
Но это только начало. Многие из нас еще не получили ITIN, а устроители программы не готовы ждать. Поэтому Google удержит с нас 30% и переведет их IRS (налоговикам). После получения ITIN мы можем требовать у IRS эту суммы обратно. Будет такой Winter of Taxes.
И снова возвращаюсь к проекту. Долго не мог за него взяться. Вначале был на конференции, потом в деловой поездке, а потом пришлось разгребать последствия апгрейда и трехнедельного отсутствия. Все это время ментор кормился рассказами о том, что, благодаря накопленному запасу кода, проект удастся завершить в срок. Так, к счастью, и вышло.
Работу над проектом я разбил на два этапа:
XSieve собирается и устанавливается как любая другая GNU-программа, с помощью configure, make, make install.
DocBook XSL stylesheets, преобразованные в XSieve, работают правильно (суровый тест).
Я ожидал, что на первую задачу уйдет много времени и, к сожалению, не ошибся. Хитросплетения autoconf, automake, libtool и прочих autotools оказались сложны для понимания. На самом-то деле, там все тривиально, если понять принципы построения системы. Но на это у меня ушло больше недели. XSieve достаточно сложен в плане зависимостей, для него нужны специальные версии Guile и xsltproc, а сам XSieve собирается как плагин для xsltproc. Необходимые настройки были разбросаны по разным make-файлам. После перевода системы сборки на autotools все значительно упростилось - и для конечного пользователя, и для разработчика.
Вторую веху я планировал пройти за полторы недели до конца SoC. Однако для ее достижения потребовалось выполнить несколько второстепенных задач, так что тест удалось запустить только за неделю до сдачи. Естественно, он провалился. Хуже того, XSieve вел себя совершенно непредсказуемо. Через несколько дней исследований выяснилось, что загвоздка - в сборщике мусора Guile. Тут я запаниковал и стал думать о том, как сообщить ментору о провале проекта, ибо такие проблемы с памятью быстро не лечатся. К счастью, медитация над документацией и здравый смысл подсказали, где подправить, чтобы сборщик мусора не хватал лишнего.
Дальше - дело техники. Хоть багов и поднакопилось, все они были легко воспроизводимы, и поэтому их удалось быстро локализовать и исправить. Последняя ошибка была закрыта в последнюю ночь. Финальную версию я обозвал XSieve 1.0.0 и выложил на SourceForge.
Результаты
Что дало участие в проекте, помимо опыта? Прежде всего, материальный бонус. Конечно, я бы все равно занимался разработкой XSieve, однако $4500 на дороге не валяются. Кроме того, если бы не необходимость дать результат, XSieve так бы и остался исследовательским прототипом и не стал бы программой, доступной широкому кругу пользователей.
Полезным также оказался PR. Одно дело - безызвестный open source проект в море себе подобных, и совсем другое - оказаться среди четырехсот человек, к которым привлечено внимание пользователей и обозревателей. XSieve вообще повезло: список проектов, в которых Google выступает как ментор, вызовет особый интерес. А таких проектов всего тринадцать.
Дополнительную рекламу можно получить в прессе. Некоторые издания не просто упомянули о SoC, но и захотели переговорить с участниками. Таким образом, в Economist появилась статья про SoC, а Dr. Dobb’s Journalпредложил авторам рассказать о своих проектах (и скоро там будет статья про XSieve). Также проявлял интерес журнал Red Herring , но оттуда пока нет никаких известий. И, наконец, мой рассказ про SoC и XSieve публикуется в «КТ».
Google тоже не остался внакладе. Во-первых, про SoC и Google пишут уже не первый месяц, причем не только компьютерные издания. Во-вторых, компания нашла немало талантливых студентов. Процесс найма на работу уже начался.
Ну как, возникло желание принять участие в Google Summer of Code 2006?
Участвовать в программе могли студенты не моложе восемнадцати лет, не связанные с Google (таким образом, работники компании, интерны, члены семей исключались). Каждый человек мог заниматься не более чем одним проектом. Каждый проект должен был быть реализован одним участником. Google каждый проект обошелся в 5 тысяч долларов - по 500 ментору и студенту в независимости от результата и еще 4 тысячи долларов студенту в случае успешного завершения проекта. Считалось, что все проекты были запущены 1 июня и должны быть завершены до 1 сентября.
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКЧитайте также
Язык управленческих документов и деловая переписка
Язык управленческих документов и деловая переписка В ГОСТ Р 6.30-2003 достаточно четко прописаны требования и к языку, которым должны составляться документы. Текст документа составляют на государственном языке РФ или на государственных языках субъектов РФ в соответствии с
ПЕРЕПИСКА: Так ли страшен PowerPoint?
ПЕРЕПИСКА: Так ли страшен PowerPoint? Автор: Семенов, АнтонВ #688 мы опубликовали статью Бёрда Киви «Убойное приложение», в которой автор, опираясь на известные примеры, пытался объяснить, чем плоха, а порой даже опасна, программа Microsoft PowerPoint. Немудрено, что такая неортодоксальная
ПЕРЕПИСКА: Сдвинуть махину косности
ПЕРЕПИСКА: Сдвинуть махину косности Письмо наших читателей из МПГУ, послужившее началом приведенной ниже дискуссии, посвящено преподаванию химии в школе – достаточно частному вопросу, лежащему в стороне от основных интересов «Компьютерры». Однако, когда речь заходит
ПЕРЕПИСКА: Фобомания
ПЕРЕПИСКА: Фобомания Автор: Филипп (Finar) КазаковНедавно в статье "Война без победителей" ("КТ" #755) Бёрд Киви рассказывал о новом альбоме группы Metallica "Death Magnetic", который вызвал волну возмущения в фанатских кругах. Претензии фанов, напомню, относились вовсе не к недостаточной
ПЕРЕПИСКА: Миссия ИТ
ПЕРЕПИСКА: Миссия ИТ В статье «Гагарин и пустота» («КТ» #603 от 30.08.05)Леонид Левкович-Маслюк предлагает порассуждать на тему роли «романтических идей» и «высоких порывов» с оттенками «героизма, готовности к самопожертвованию» в развитии инноваций в ИТ в России.Карьера
ПЕРЕПИСКА: Термин в клетке
ПЕРЕПИСКА: Термин в клетке Автор: Константин КурбатовРедакция нашего журнала поглядывает на серьезные научные журналы (SciAm, Nature) с уважением и сочувствием. К счастью, наши публикации не решают судьбу Нобелевских премий, поэтому нас не засыпают массой возмущенных откликов
НОВОСТИ: Лето в пустую PlayStation 3 выйдет только осенью. Sony всех водила за нос
НОВОСТИ: Лето в пустую PlayStation 3 выйдет только осенью. Sony всех водила за нос Автор: Тимофей БахваловВпервые за двадцатилетнюю историю существования брэнда PlayStation игровое подразделение компании Sony (SCEI) не смогло сдержать обещания — выход PlayStation 3 окончательно и бесповоротно
ПЕРЕПИСКА: Прикольно, гламурно, пафосно
ПЕРЕПИСКА: Прикольно, гламурно, пафосно Автор: Анатолий ШалытоОдно из самых модных у сегодняшней молодежи слов — «прикольно». Вряд ли это связано с неизвестной эпидемией любви молодых людей к рыбной ловле, хотя единственное толкование слова «прикол», которое я нашел,
ПЕРЕПИСКА: Из тени в тень перелогинясь
ПЕРЕПИСКА: Из тени в тень перелогинясь Автор: Константин ИлющенкоПрочитав в статье «Web… money… money…» (#27-28 от 31.07.06) слова Евгения Козловского "… с помощью WebMoney вот уже несколько лет рассчитывается с иногородними авторами «Компьютерра», я подумал было про тень. Однако
Василий Щепетнёв: Как я провёл лето-2010 Василий Щепетнев
Василий Щепетнёв: Как я провёл лето-2010 Василий Щепетнев Опубликовано 18 августа 2010 года Если бы я был школьником и ходил бы в класс Буки, а то и Веди, то в первый же день нового учебного года Варвара Степановна, думаю, задала бы нам сочинение на тему
ПЕРЕПИСКА: Мультимедийная логарифмическая линейка
ПЕРЕПИСКА: Мультимедийная логарифмическая линейка Автор: Алексей КлимовПятиполосный материал в «Компьютерре» встретишь нечасто, поэтому статью А. Клименкова «Как сделать интересно» #642постоянные читатели заметили наверняка, а непостоянные могли подумать, что проблемы
ПЕРЕПИСКА: Велосипед против урагана
ПЕРЕПИСКА: Велосипед против урагана Автор: Александр ПоддьяковХочу дать комментарий к письму Евгения ("Письмоносец" "Наивный японский велосипед", "КТ" #758) относительно моей статьи "Обманщик хуже урагана?" ("КТ" #756). Стилистика письма, начинающегося с фразы: "Японские
ПЕРЕПИСКА: Измерение интеллектов
ПЕРЕПИСКА: Измерение интеллектов Автор: Илья ЩуровТему номера, посвященную тестированию интеллекта, Леонид Левкович-Маслюк подготовил еще в начале лета (см. "КТ" #737), и почти сразу же мы решили, что если на нее будут интересные отзывы (а мы их ждали), то сделаем по ним
Как я провел лето
Как я провел лето Автор: Владислав БирюковТрадиционный топ событий уходящего года в условиях компьютерровской демократичности превращается в какой-то балаган впечатлений. Нет чтобы дружненько, как все нормальные люди, написать, как мы относимся к выборам или какую