Всем привет, снова время еженедельного обновления

  • Index
  1. Статус SSU
  2. Статус модульных тестов
  3. Статус Kaffe
  4. ???
    1. SSU status

Есть еще некоторый прогресс по транспорту SSU, и на данный момент я считаю, что после дополнительных испытаний в реальной сети мы сможем выпустить это как 0.6 без большой задержки. Первый релиз SSU не будет включать поддержку для пользователей, которые не могут открыть порт на своем межсетевом экране или настроить NAT, но это будет развернуто в 0.6.1. После того как 0.6.1 выйдет, будет протестирована и покажет себя блестяще (aka 0.6.1.42), мы перейдем к 1.0.

Лично я склоняюсь к тому, чтобы полностью отказаться от TCP-транспорта по мере развёртывания транспорта SSU, чтобы людям не приходилось держать включёнными оба (пробрасывать и TCP-, и UDP-порты) и чтобы разработчикам не приходилось поддерживать ненужный код. Есть у кого-то по этому поводу сильные возражения?

    1. Unit test status

Как упоминалось на прошлой неделе, Comwiz выступил, чтобы заявить право на первый этап вознаграждения за модульные тесты (ура, Comwiz! спасибо также duck и zab за финансирование вознаграждения!). Код был закоммичен в CVS, и, в зависимости от вашей локальной конфигурации, вы можете сгенерировать отчёты junit и clover, перейдя в каталог i2p/core/java и выполнив “ant test junit.report” (подождите около часа…), а затем открыть i2p/reports/core/html/junit/index.html. Либо вы можете выполнить “ant useclover test junit.report clover.report” и просмотреть i2p/reports/core/html/clover/index.html.

Недостаток обоих наборов тестов связан с той нелепой концепцией, которую правящий класс называет «законом об авторском праве». Clover — коммерческий продукт, хотя ребята из cenqua разрешают его бесплатное использование разработчикам open source (с открытым исходным кодом) (и они любезно согласились предоставить нам лицензию). Чтобы генерировать отчеты Clover, необходимо установить Clover локально — у меня clover.jar в ~/.ant/lib/, рядом с файлом лицензии. Большинству людей Clover не понадобится, и поскольку мы будем публиковать отчеты в интернете, отказ от его установки не приведет к потере функциональности.

С другой стороны, если учитывать сам фреймворк модульного тестирования — junit выпущен под лицензией IBM Common Public License 1.0, которая, согласно FSF [1], несовместима с GPL. И хотя у нас нет кода под GPL (по крайней мере, не в ядре и не в router), обратившись к нашей лицензионной политике [2], можно увидеть, что наша цель в том, как именно мы лицензируем создаваемое, — позволить как можно большему числу людей использовать то, что создаётся, поскольку анонимность любит компанию.

[1] http://www.fsf.org/licensing/licenses/index_html#GPLIncompatibleLicenses [2] http://www.i2p.net/licenses

Поскольку некоторые люди по непонятным причинам выпускают программное обеспечение под GPL, имеет смысл стремиться обеспечить им возможность использовать I2P без ограничений. Как минимум, это означает, что мы не можем допустить, чтобы реальная функциональность, которую мы предоставляем, зависела от кода, лицензированного по CPL (например, junit.framework.*). Я бы хотел распространить это и на модульные тесты, но junit, похоже, является де-факто стандартом среди фреймворков для тестирования (и я не думаю, что было бы хоть сколько‑нибудь разумно, учитывая наши ресурсы, заявить: “эй, давайте-ка создадим собственный фреймворк для модульного тестирования в общественном достоянии!”).

Учитывая всё это, вот что я предлагаю. Мы добавим junit.jar в CVS и будем использовать его при запуске юнит-тестов, но сами юнит-тесты не будут включены в i2p.jar или router.jar и не будут распространяться в релизах. При необходимости мы можем публиковать дополнительный набор JAR-файлов (i2p-test.jar и router-test.jar), но они не смогут использоваться приложениями под лицензией GPL (так как зависят от junit).

=jr