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

Приоритет: Новая крипто(графия!)

Многие из текущих примитивов и протоколов всё ещё сохраняют свои исходные проектные решения образца примерно 2005 года и нуждаются в улучшении. У нас уже несколько лет есть ряд открытых предложений с идеями, но прогресс был медленным. Мы все согласились, что это должно стать нашим главным приоритетом на 2018 год. Основные компоненты:

  • New transport protocols (to replace NTCP and SSU). See Prop111.
  • New onion-encryption protocol for building and using tunnels.
  • New NetDB datatypes to enable enhanced Destinations. See Prop123.
  • Upgraded end-to-end protocol (replacing ElGamal).

Работа по этому приоритету делится на несколько направлений:

  • Writing proposals.
  • Writing working implementations of them that we can test.
  • Reviewing proposals.

Мы не можем внедрять новые спецификации протокола по всей сети без работы над всеми этими областями.

Желательно: повторное использование кода

Одно из преимуществ начала вышеописанной работы именно сейчас заключается в том, что за последние несколько лет предпринимались независимые усилия по созданию простых протоколов и протокольных фреймворков, которые достигают многих целей, поставленных нами для собственных протоколов, и получили признание в более широком сообществе. Используя эти наработки, мы получаем эффект “мультипликатора усилий”:

  • We benefit from protocol designs, security proofs, and code written by others, reducing the amount of work we need to do for the same level of feature-completeness and security assurances.

  • Work we do can be leveraged by other communities, increasing their interest in collaborating with us, and thinking about I2P as a whole.

В частности, мои предложения будут использовать Noise Protocol Framework и формат пакетов SPHINX . По этим предложениям у меня уже запланировано сотрудничество с несколькими людьми вне I2P!

Приоритет: сотрудничество с Clearnet (обычным интернетом)

В этой связи мы постепенно наращивали интерес в течение примерно последних шести месяцев. На мероприятиях PETS2017, 34C3 и RWC2018 у меня были очень содержательные обсуждения о том, как мы можем улучшить взаимодействие с более широким сообществом. Это действительно важно, чтобы обеспечить максимально широкое рецензирование новых протоколов. Наибольшее препятствие, которое я наблюдаю, заключается в том, что большая часть совместной работы над разработкой I2P сейчас происходит внутри самого I2P, что значительно увеличивает усилия, необходимые для участия.

Два приоритета в этой области:

  • Set up a project-run development forum that is accessible both inside and outside I2P.

  • Set up mailing lists for review and discussion of proposals (possibly connected to the above forum).

Другие цели, которые считаются желательными, но не обязательными:

  • Set up a usable git-to-mtn pathway, to enable us to effectively solicit clearnet contributions on GitHub while keeping the canonical dev environment on Monotone.

  • Write a “position paper” that accurately explains I2P to academic audiences, and puts it in context with existing literature.

Я ожидаю, что сотрудничество с людьми вне I2P будет полностью осуществляться на GitHub, чтобы свести трения к минимуму.

Приоритет: Подготовка к долгоживущим релизам

I2P теперь доступен в Debian Sid (их нестабильном репозитории), который стабилизируется примерно через полтора года, а также был добавлен в репозиторий Ubuntu для включения в следующий LTS-выпуск в апреле. У нас начнут появляться версии I2P, которые будут оставаться в обращении годами, и нам нужно убедиться, что мы сможем корректно работать с их присутствием в сети.

Основная цель — внедрить как можно больше новых протоколов в течение следующего года, насколько это реально, чтобы попасть в следующий стабильный релиз Debian. Для тех, для которых требуется многолетнее внедрение, нам следует как можно раньше включить изменения для forward-compatability (совместимости с будущими версиями).

Приоритет: преобразование текущих приложений в плагины

Модель Debian поощряет наличие отдельных пакетов для отдельных компонентов. Мы согласились, что отделение поставляемых в настоящее время в комплекте Java‑приложений от основного Java router будет полезным по нескольким причинам:

  • It codifies the boundary between the applications and the router.

  • It should make it easier to get these apps running with non-Java routers.

  • It would enable third parties to create “I2P bundles” containing just the applications they want.

В сочетании с более ранними приоритетами это смещает основной проект I2P больше в направлении, например, ядра Linux. Мы будем уделять больше времени самой сети, позволяя сторонним разработчикам сосредоточиться на приложениях, использующих сеть (что значительно проще делать после нашей работы за последние несколько лет над API и библиотеками).

Желательно: улучшения приложения

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

Одно из таких приложений, для работы над которым нам очень нужна помощь, — I2P Android. Мы будем поддерживать его в актуальном состоянии в ногу с основными релизами I2P и исправлять ошибки по мере возможностей, но ещё многое можно сделать для улучшения базового кода и удобства использования.

Приоритет: стабилизация Susimail и I2P-Bote

Тем не менее, в ближайшее время мы хотим заняться исправлениями для Susimail и I2P-Bote (некоторые из них уже вошли в 0.9.33). За последние несколько лет они получали меньше внимания, чем другие приложения I2P, поэтому мы хотим выделить время, чтобы привести их кодовые базы до должного уровня и сделать их более доступными для новых участников!

Желательно: триаж тикетов

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

Приоритет: Поддержка пользователей

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

Мы будем рады вашей помощи!

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

Если вы хотите помочь в достижении каких-либо из перечисленных выше целей, присоединяйтесь к нам в чате! Нас можно найти в OFTC и Freenode (#i2p-dev), а также в Twitter (@GetI2P).