В течение последних трех месяцев я был участником GSOC 2017 (Google Summer of Code 2017). В этой программе учащиеся работают летом, с июня по сентябрь, над различными проектами с открытым исходным кодом.

В рамках программы GSOC 2017 я работал с сообществом открытого исходного кода под названием OpenWisp. OpenWISP - это набор программных проектов, которые можно использовать для развертывания и управления недорогими беспроводными сетями (общедоступный Wi-Fi, магистральная беспроводная сеть, беспроводная сеть). Программный пакет OpenWISP включает пять основных приложений, созданных на основе инструментов, используемых для предоставления общедоступных услуг Wi-Fi в Италии и других европейских странах. Вы можете узнать больше о сообществе OpenWisp здесь.

В течение этих 3 месяцев я работал над Построением пользовательского интерфейса конфигураций на основе JavaScript для OpenWisp, как следует из названия этого поста. В проекте Openwisp используется netjson, стандарт json-schema, управляющий конфигурациями сети. Это требует от пользователя средств графического редактирования этих конфигураций, а также возможности редактирования конфигураций в продвинутом режиме как пользователь с большим опытом. Таким образом, это требовало наличия визуального редактора для легкого редактирования и проверки netjson. Цель этого проекта - сделать доступной полностью независимую библиотеку редактора netjson, которую можно интегрировать в любой проект netjson. Эта библиотека сделает доступными как базовый, так и расширенный режимы редактирования, а также проверку пользовательских конфигураций по схеме netjson, предоставленной в любой момент времени. Поскольку этот пост направлен на рассказ о работе, которую я проделал этим летом в OpenWisp, любые дополнительные подробности, необходимые для идеи, лежащей в основе моего проекта, можно найти здесь. В этом посте я сконцентрируюсь на проделанной мной работе и подробно расскажу о ее статусе.

Мой вклад GSOC был сосредоточен на создании библиотеки netjsonconfig-editor, которую можно будет многократно использовать в любом проекте OpenWisp2, а также во многих других проектах. Для этой работы я использовал различные технологии для различных разделов работы. Опять же, как следует из названия, библиотека построена на JavaScript. Разработка библиотеки проходила в три основных этапа, включая разработку, тестирование, документирование и оптимизацию трех основных разделов библиотеки.

Важные ссылки

Базовый редактор

Базовый редактор - это первая часть пользовательского интерфейса. Этот раздел представляет собой базовый пользовательский интерфейс, содержащий элементы формы, сгенерированные библиотекой из предоставленной ей схемы netjson. Это предназначено для получения и проверки пользовательского ввода от базового пользователя (не обязательно с техническими навыками). В настоящее время это работает, как описано в предложении по проекту, ссылка на который приведена выше. Он автоматически генерирует элементы формы, проверяет вводимые пользователем данные и отображает удобные для пользователя сообщения об ошибках, что значительно упрощает использование. Большая часть работы, проделанной в этой части, была проделана во втором разделе GSOC 17. Ниже приведены некоторые важные изменения, сделанные для реализации, тестирования и документации этой функции.

Расширенный редактор

Учитывая, что редактор netjsonconfig должен использоваться для редактирования данных конфигурации сети, он будет использоваться техническими специалистами для редактирования технических данных, поэтому наличие простой формы для редактирования данных будет ограничивать технических пользователей. Таким образом, я предоставил расширенный редактор, который можно использовать для редактирования необработанных данных netjson как json. Этот расширенный редактор действует как полнофункциональный текстовый редактор json с отчетами об ошибках синтаксиса и семантики, а также проверкой данных по предоставленной схеме json.

Работа, проделанная для реализации, тестирования и документирования этого редактора, в основном была сделана до первой оценки GSOC 17. Ниже приведены некоторые важные коммиты, благодаря которым эта функция редактора стала реальностью.

Главный модуль

Упомянутый выше редактор netjsonconfig имеет базовый редактор и расширенный json-редактор, поэтому мне нужен модуль для соединения этих двух частей. Вот тут и вступает в игру основной модуль. Этот модуль обрабатывает все взаимодействия между расширенными и базовыми модулями редактора. Это также точка соприкосновения функциональности библиотеки с разработчиком, который может намереваться использовать библиотеку. Он предоставляет API для функций, позволяющих разработчику в полной мере использовать редактор. Полные спецификации этого API определены в документации проекта.

Стек технологий

При разработке этой библиотеки я работал в основном с JavaScript. использование HTML и CSS для проектирования и отображения пользовательского интерфейса. Однако в различных модулях библиотеки используются различные технологии. Краткое изложение наиболее важных используемых технологий и того, как они попадают в проект, можно увидеть ниже.

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

Статус проекта

На момент написания этой статьи проект завершен в соответствии с проектным предложением, поэтому я полностью выполнил свой проект до конца GSOC 17. Однако есть определенные улучшения, которые я намерен реализовать после этого периода GSOC в библиотеке для улучшения. как UI / UX, так и простота использования для разработчиков.

Репозитории

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

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

Мне пришлось создать, настроить и дополнить второй репозиторий с нуля. Репозиторий можно найти здесь. Это репозиторий самой библиотеки.

Заключение

Этим летом работа над OpenWisp была для вас потрясающим опытом. Я многому научился, работая с продвинутыми разработчиками.

Большое спасибо моему наставнику Федерико Капоано (@nemesisdesig n) за полное руководство и руководство на протяжении всего этого периода. Все это время он был отличным источником вдохновения.

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