All articles, tagged with “foss”

GSoC 2009 — Мы ищем таланты

Меньше недели осталось студентам, желающим принять участие в GSoC 2009, чтобы оформить и подать свой proposal в один или несколько проектов. И студенты активно используют это время. Но несмотря на это — от администраторов проектов-участников слышно что активность студентов в этом году феноменально низкая.

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

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

Что-же мы видим в этой ситуации глазами студента:

  • За все годы программы сумма вознаграждения так и не менялась. Деньги тут конечно не главное, но я уже 2 года подряд слышал мнения некоторых студентов — что за 5000$ они не могут позволить себе потратить лето на GSoC. Конечно это касается только студентов из Европы.

  • С повышением качества организации GSoC — растут и требования к студентам. Многие организации в качестве условия положительного рассмотрения предложения ставят требования работать над проектом 40 часов в неделю или активно участвовать в жизни проекта.

  • Студенты предыдущих поколений заканчивают учебу или уже нашли себе постоянную работу и не могут совмешать это с GSoC (в том числе и я).

Google Summer of Code 2009

Google Summer of Code 2009 уже в разгаре. В этом году несмотря на кризис и отмену GHOP — Google продолжает свою программу по вовлечению студентов в разработку свободного ПО и запускает уже 5ый сезон.

С 23 марта по 3 апреля открыт период приема заявок от студентов на участие в GSOC. Поэтому если вы хотите принать участие в этом мероприятии и получить свою долю денег и конечно опыта — не медлите и быстрее включайтесь в борьбу за грант.

По сравнению с прошлым годом можно отметить следующие изменения:

  • новый сайт для организации самой программы на базе Melange
  • значительная активность в официальном блоге программы

    В остальном хочется отметить тенденции:

  • студенты все чаще становятся mentor’ами

  • активность в проектах начинается ранее и становится более направленой
  • качество идей повышается, количество reviewer’ов растет
  • активная подготовка к GSOC начинается с самого нового года и еще до официального оглашения списка организаций некоторые студенты включаются в жизнь интересующих их проектов

Если вы заинтересовались и у вас есть желание участвовать в этой программе — рекомендую в первую очередь ознакомиться со списком одобренных орагнизаций и выбирать себе поле для деятельности.

Я в этом году твердо решил не участвовать в GSOC по причине острой нехватки времени, но готов оказать посильную консультативную помощь желающим.

Upd: Debian обзавелся Twitter аккаунтом, где транслируются последние обновления о ходе GSoC в Debian.

Как запустить Byteflow на Jython

В последнее время очень активно ведется работа над созданием новых языков и портированием существующих на платформу Java. Многие аналитики утверждают что за этими языками будуйщее. Одним из таких языков стал Python. Его порт, работающий на JVM, называется Jython.

Я уже писал о портировании различных web-фреймворков на Jython, описывал проблемы запуска Trac на Jython, а сегодня я расскажу о успешном опыте запуска популярного blog-engine Byteflow на Jython.

Byteflow использует для своей работы Django, согласно многим источникам в интернет этот популярный web-framework успешно портирован на Jython этим летом.

Этап первый, подготовительный (установка Java, Jython, Django):

Я надеюсь у вас уже установлена Java (рекомендую использовать 6ую версию от SUN, т.к. я не пробовал еще запускать Jython на OpenJDK).

Ставим Jython (в данный момент последней версией является 2.5b0), рекомендую использовать последнюю “стабильную”: $wget http://kent.dl.sourceforge.net/sourceforge/jython/jython_installer-2.5b0.jar $java -jar jython_installer-2.5b0.jar

Вот тут, если у вас на машине не стоит X-сервер, могут возникнуть первые проблемы: java.awt.HeadlessException: No X11 DISPLAY variable was set, but this program performed an operation which requires it.

С помощью гугля и здравого смысла находим способ запустить консольную версию инсталятора: $java -jar jython_installer-2.5b0.jar --console

Сразу после установки нам нужно дать права на исполнение интерпритатору Jython: $chmod +x /mnt/data/java/jython2.5b0/bin/jython
Проверяем работоспособность Jython: $ /mnt/data/java/jython2.5b0/bin/jython
Jython 2.5b0 (trunk:5540, Oct 31 2008, 13:55:41) [Java HotSpot(TM) Client VM (Sun Microsystems Inc.)] on java1.6.0_04

Установка Django:

Django с версии 1.0 официально работает на Jython, поэтому скачиваем последнюю стабильную версию (в данный момент ею является 1.0.2) и устанавливаем её с помощью Jython: $wget http://www.djangoproject.com/download/1.0.2/tarball/ $tar xjvf Django-1.0.2-final.tar.gz $cd Django-1.0.2-final $jython setup.py install
Процесс сборки Django может затянуться на несколько минут, но в результате все должно собраться без каких-либо ошибок и проблем.

Этап второй, запуск Byteflow:

Byteflow активно развивается, поэтому лучше всего брать текущую версию из репозитария:

$hg clone http://hg.piranha.org.ua/byteflow/ $cd byteflow

Согласно инструкции по установке вносим необходимые изменения в settings_local.py и пытаемся инициализировать БД:

jython manage.py syncdb Traceback (most recent call last): File "manage.py", line 11, in <module> execute_manager(settings) .... File "/mnt/data/java/jython2.5b0/Lib/site-packages/django/db/backends/mysql/base.py", line 13, in <module> raise ImproperlyConfigured("Error loading MySQLdb module: %s" % e) django.core.exceptions.ImproperlyConfigured: Error loading MySQLdb module: No module named MySQLdb

Проблема заключается в том что для Jython необходимо использовать специальные class-wrapper для работы с БД, т.к. низкоуровневой работы с БД используется JDBC драйверы для Java. Поэтому мы не можем использовать стандартные python реализации DBAPI.

Для решения проблем с database backend мы воспользуемся проектом django-jython, в рамках которого были разработканы Jython DB2 API wrapper для PostgreSQL и SqLite3. Устанавливаем последнюю версию из svn: $svn co http://django-jython.googlecode.com/svn/trunk/ django-jython $cd django-jython $jython setup.py install

В данный момент MySQL не поддерживается, но работа ведется и возможно скоро уже будет реализован wrapper и для MySQL.

Для использования нашего backend’а в byteflow надо изменить переменную DATABASE_ENGINE: DATABASE_ENGINE = 'doj.backends.zxjdbc.postgresql' # variants: mysql, sqlite3 Вновь пробуем инициализировать БД, и вновь получаем ошибку: `

$jython manage.py syncdb Error: No module named BeautifulSoup `

Скачиваем и устанавливаем BeautifulSoup для Jython: $wget http://www.crummy.com/software/BeautifulSoup/download/BeautifulSoup.tar.gz $tar xzvf BeautifulSoup.tar.gz $cd BeautifulSoup-3.0.7a $jython setup.py install

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

Теперь вновь запускаем инициализацию БД: $jython manage.py syncdb zxJDBC.DatabaseError: driver [org.postgresql.Driver] not found

Данная ошибка говорит нам о том что нужно установить jdbc драйвер для PostgreSQL. Опять идем на сайт разработчиков и выбираем подходящий драйвер, я рекомендую взять стабильный 8.3 JDBC 3: $wget http://jdbc.postgresql.org/download/postgresql-8.3-604.jdbc3.jar

Теперь можно вновь запустить инициализацию БД (но теперь мы это делаем некоторым изощренным способом): $/usr/bin/java -classpath /opt/java/jython2.5b0/jython-complete.jar:/home/blaze/Desktop/postgresql-8.3-604.jdbc3.jar -Dpython.home="$JYTHON_HOME" org.python.util.jython manage.py syncdb

Перед выполнением следующего этапа нам необходимо создать пользователя и БД для byteflow. О создании пользователя лучше читать в руководстве PostgreSQL, я создал пользователя следующими командами(необходимо выполнять из-под пользователя postgres):

$createuser byteflow -P -S -D -R $createdb byteflow -O byteflow

После этого БД должна инициализировать успешно, и мы можем переходить к запуска тестового сервера:

$/usr/bin/java -classpath /opt/java/jython2.5b0/jython-complete.jar:/home/blaze/Desktop/postgresql-8.3-604.jdbc3.jar -Dpython.home="$JYTHON_HOME" org.python.util.jython manage.py runserver

В качестве дополнения хочу отметить что для корректной работы Byteflow необходимо еще установить модуль ElementTree, у которого уже есть порт на Jython : $svn checkout http://jython-elementtree.googlecode.com/svn/trunk elementtree $cd elementtree $jython setup.py install --stdlib

модуль openid: $wget "http://openidenabled.com/files/python-openid/packages/python-openid-2.2.1.tar.bz2" $jar xzvf python-openid-2.2.1.tar.bz2 $cd python-openid-2.2.1 $jython setup.py install

А также необходимо отключить catpcha в настройках Byteflow, либо использовать recaptcha, т.к. для работы она требует PIL, которая не портирована на Jython. Возможно будет работать вариант с recatpha, но это надо проверить.

Ссылки по теме:
 Distribs:

Modules:

Articles:

Tomcat 7 уже в разработке

Сегодня обнаружил что ASF обновила свои планы относительно разработки следующей вресии Apcahe Tomcat. Все известно что текущей рекомендованной для использования веткой является 5.x, в разработке и уже объявлена стабильной ветка 6.0.x. Данная ветка предоставит разработчикам поддержку спецификаций Servlet 2.5 and JSP 2.1. При этом после 6.0.x разработка будет вестись сразу в 2х ветках 6.2.x и 7.0. При этом все новшества 6.2 будут переноситься в 7.0.

К сожалению разработчики не делятся подробными планами нововведений в новых версиях, но известно что 6.2 будет направлена на устранение ошибок, улучшение производительности и стабильности, а также совместимсоти с другими серверами, а вот в 7.0 нас скорее всего будет ожидать поддержка Servlet 2.6, JSP 2.2.

Как ни странно — разговора о реализации Servlet 3.0 пока не ведется, хотя возможно в Tomcat 7.0 будет реализована именно Servlet 3.0, а не 2.6.

Software Freedom Day 2008, Izhevsk

24 сентября в Ижевске в полуофициальной обстановке аудитории УдГУ при поддержке Sun Campus Ambassador’а УдГУ собралась группа людей чтобы отметить День Свободного ПО.
Докладчиками были Андрей Гребнев(Sun Campus Ambassador в УдГУ) и Павел Виноградов (лидер команды NixDev). Андрей представил доклад о академических инициативах Sun, а я впервые представлял доклад Sams Project — Путь от “открытого” до открытого проекта о истории развития нашего проекта SAMS.
Среди слушателей были замечены студенты ИжГТУ и УдГУ, преподаватели УдГУ и сотрудники IT фирм Ижевска. Мне было особо приятно видеть несколько студентов с которыми я вел совместные проекты в прошлом. После докладов была небольшая дискуссия по результатам которой я познакомился с проектом jLibrary, а у проекта SAMS появилися потенциальный новый пользователь.

Отдельно хочется отметить косвенные результаты этой встречи:

  • Начато составление списка активных и заброшенных Open Source проектов, в развитии которых принимали участие программисты из Ижевска и Удмуртии.
  • Проект SAMS запускает программу How To Contribute. Основной целью является привлечение новых разработчиков в сообщество Open Source. Желающим мы предоставляем конкретную задачу по развитию проекта и всесторонюю помощь (это именно то чего так нехватает новичкам, желающим принять участие в Open Source проектах)

О портировании Python framework’ов на Jython

В последнее время в интернете все чаще встречается информация о попытках запустить и использовать различные frameworkи Python’а на Jython. Это является одной из сторон активного развития Jython. Несколько проектов GSoC 2008 были посвящены доработке популярных Python фреймворков (Django, TurboGears, Zope) для работы на Jython:

Многие из этих проектов используют подход снизу-вверх. В этом случае определяется минимальный список зависимостей переносимого приложения и выполняется их портирование. При этом в процессе портирования участвуют обе стороны — и разработчики Jython и разработчики портируемой библиотеки. И конечно выигрывают обе стороны:

  • Jython — получает поддержку новых библиотек и функций, повышается переносимость других программ на Python, улучшается дизайн кода, находятся и исправляются ошибки в реализации Python библиотек
  • разработчики библиотек — получают сообщения об ошибках которые часто всплывают в процессе портирования, решение проблем с плохо переносимыми участками кода

Основными проблемами которые возникают при подобном портировании:

  • Расширения Python написанные на C. Т.к. такие расширения требуют отдельного портирования на Jython
  • Отсутствие конкретного функционала из Python
  • Использование низкоуровневых возможностей CPython

И постепенно все больше и больше популярных библиотек успешно работают на Jython. Главным видимым результатом этого лета стал успешный запуск Django на Jython. Работа над запуском TG тоже идет полным ходом, но не все библиотеки удалось еще портировать. Информацию о статусе Zope on Jython мне найти не удалось. В результате всех этих событий популярность Jython значительно увеличивается, также обнодеживают вести из компании Sun, которая не просто спонсирует разработку Jython а наняла на работу одного из ведущего разработчика проекта.

Sams 1.0.3 вышел

Пару недель назад мы выпустили новый релиз системы управления прокси сервером Squid — Sams 1.0.3. Работа над этим релизом велась почти 6 месяцев и выпуск новой версии приурочен к юбилейному Linux Fest’у, на который я к сожалению так и не поехал. Кстати это уже вторая версия Sams которая имеет неофициальное название Linux Fest Edition.

Это уже вторая bugfix версия после Sama 1.0.0. Мы в очередной раз боролись за стабильную и безглючную работу Sams. А еще я очень многое переделал в пакете для Debian.

С удовольствием хочу отметить что сообщество наших пользователей все активнее и активнее участвует в разработке Sams. Например благодаря Vlad V.V.с Украины у нас есть Ebuild для Gentoo. Многие пользователи Debian и Ubuntu присылают ошибки и пожелания о том как улучшить пакет для Debian.

И в завершении две интересных новости:

  • Основным нововведение в ближайшей версии скорее всего станет обновленный дизайн web-интерфейс, кстати тоже сделанное нашими пользователями.
  • Работа над версией 2.0 вновь возобновляется

Sams для Debian

Очередной шаг в нормальному пакету Sams для Debian и Ubuntu сделан. Сегодня я выложил вторую тестовую сборку для 1.0.2[3].

Из интересного стоит отметить:

  • Наступил на большие грабли — в init скрипте я запускал sams с не настроенным соединением с БД. Соответственно sams падал, т.к. запуск init скрипта происходил при установке пакета — установка пакета завершалась с ошибкой. При попытке удалить пакет — init скрипт пытается остановить sams, который и не запущен. Опять выход с ошибкой и пакет удалить нельзя. Кстати интересно почему это попытка остановить не запущенную софтину приводит к ошибке. Решил все это вводом переменной SAMS_ENABLED и установкой её по умолчанию в false. Обычно такие переменные помещают в /etc/default/<пакет>, но я не стал так делать.
  • В основном из-за п.1 пришлось разобраться с debconf. Теперь при установке sams выводится окно с сообщением что sams еще не готов работать из коробки и вам надо донастроить ручками. И ссылка на /usr/share/doc/sams/README.Debian Интересно, сколько человек это сообщение не прочитают и будут слать баги что sams не запускается.
  • Оказывается debconf имеет собственное персональное постоянное хранилище где лежат ответы на все заданные им вопросы. Но изменение параметра в конфиге с помощью sed’а для меня выглядит шаманством.
  • Открою небольшой секрет — я теперь пакеты собираю с помощью launchpad. Ибо так и не настроил нормально build системы на сервере.
  • Теперь чтобы поставить sams не надо качать полтора метров исходников. А еще sams в Debian разбит на три пакета — демоны, web и документация. В результате можно ставить демонов без вытягивания php:)

Правило обновления Linux

Обновлять дистрибутив Linux надо из сетевого репозитария на дорогом или медленном канале. Т.к. такое обновление это хороший повод сделать dpkg -l и удалить лишние пакеты нажитые за последний год.

В этот раз мой ноут избавился от php (что хороший важный факт), ruby (не понял я как его готовят) и кучи другого хлама поставленного чтобы попробовать.

Кстати, раньше php стоял у многих из-за того что использовались всякие web-интерфейсы типа phpmyadmin. Неужели эти времена уходят…

GSOC 2008 — Swarm Development Group (SDG) — I’m in

GSoC 2008 анонсировал своих участников, я среди них со Swarm Development Group. Подробности позже, а здесь тезизы