Одной из многих тем, которые мы обсуждали на 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 is now in Debian Sid (their unstable repo) which will stablilise in around a year and a half, and has also been pulled into the Ubuntu repository for inclusion in the next LTS release in April. We are going to start having I2P versions that end up hanging around for years, and we need to ensure we can handle their presence in the network.

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

Приоритет: перевод текущих приложений на плагинную архитектуру

Модель 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 и библиотеками).

Nice-to-have: App improvements

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

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

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

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

Будет плюсом: триаж тикетов

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

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

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

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

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

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