Что нового и почему?

Вступление

Этот проект был вдохновлен работой над различными образовательными программами в странах Африки к югу от Сахары в течение последнего десятилетия, где отсутствие доступа к образовательным ресурсам и плохой и / или дорогой Интернет остаются проблемами. После работы с рядом различных платформ мы не смогли найти платформу с гибкостью для добавления местного контента (который во многих случаях обширен и хорошо разработан), организованного на основе местных учебных программ, программ и ресурсов.

SparkEd был разработан как ресурс с открытым исходным кодом с акцентом на загрузку локально разработанных ресурсов для доставки в качестве центрального / библиотечного ресурса, а также для доставки модульных ресурсов / ресурсов уровня класса на мобильные устройства.

Начальная разработка

Первоначальное программирование было выполнено в Замбии программистами из Гильдии хакеров (@ hackersguild), которые обучали программистов в Эфиопии (@ supedplc). Конечный продукт проекта в Эфиопии теперь включает в себя все второстепенные и подготовительные предметы и контент (классы 9–12) с дополнительным контентом, который доставляется на серверы, которые связаны радиосвязью для обновления. (см. Разработка инструментов электронного обучения). Программное обеспечение предназначено для использования в любых условиях, когда контент разрабатывается и может быть загружен.

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

SparkEd полностью написан на Javascript, за исключением некоторых утилит, написанных на Bash.

  • Meteorjs
  • Reactjs
  • MongoDB
  • Докер
  • Трэвис К.И.

Meteorjs использовался как серверная часть для хранения файлов, обмена данными с базами данных и быстрого реагирования на обслуживание данных. В этом случае Meteorjs был хорошим вариантом, поскольку он также предоставляет пользователям данные об использовании в реальном времени. Минусы Meteorjs заключались в начальной разработке и развертывании, когда мы обнаружили, что тестирование приложений Meteor является сложным и эмпирическим, а также необходимо было провести серьезную имитацию. После установки платформа была очень стабильной.

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

В качестве нашей базы данных использовался MongoDB, хотя у нас действительно не было особого выбора, поскольку Meteorjs идет в комплекте с ним и делает интеграцию незаметной. Мы также использовали MongoDB GRIDFS для хранения файлов, чтобы легко управлять резервным копированием файлов и обслуживанием в реальном времени.
Мы использовали Docker hub для размещения общедоступного образа SparkEd. и найти его можно здесь.

Для непрерывной интеграции и непрерывного развертывания мы использовали TravisCI, который работал с нашими ранними моделями разработки, но в планах - перейти на Jenkins. Мы использовали TravisCI, чтобы убедиться, что все необходимые тесты и правила lint проходят до того, как любой запрос на вытягивание будет объединен с мастером.
Поскольку конечные продукты SparkEd предназначены для работы в основном в автономных средах, мы не делаем этого. он не размещен в сети, однако мы обновляем образ докера при каждом объединении запроса на вытягивание или при любых изменениях, зафиксированных в главном сервере, это позволяет нам избежать необходимости делать это вручную.

Примечательные новые функции

Темный режим

Реализация ночного режима была важной реализацией. Многие студенты-пользователи будут использовать продукт по вечерам в домах, где нет электричества, поэтому было бы лучше предоставить пользователям возможность выбирать дневной или ночной режим.
Чтобы приспособиться к этому, нам пришлось внести небольшие изменения на некоторых страницах. но большинство других компонентов были готовы к этому обновлению, для страниц со списками было немного сложно реализовать это в более приятном виде, и мы решили перепроектировать такие страницы, включенное уведомление, модальную оболочку и отзывы страница. Здесь показан простой пример реализации этого.

Вы можете увидеть, что ThemeContext используется здесь в том же компоненте, который здесь переключает день / ночь.

Интернационализация и локализация

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

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

Это можно применить ко многим языкам, которые вы хотите поддерживать. Интересной частью этой реализации является то, что она влияет не только на язык пользовательского интерфейса, но и на содержимое, которое пользователи могут видеть. Мы нашли это очень полезным при развертывании SparkEd в Эфиопии, где у них есть разные региональные языки, которые сохраняются как классы на среднем / подготовительном уровне. Поскольку ресурсы разрабатываются для младших классов, где язык обучения является региональным, включая английский и амхарский, это также будет важной особенностью.
У пользователей по-прежнему есть возможность выбирать, что они хотят видеть и на каком языке ориентироваться в ресурсах SparkEd, и администраторы также могут выбрать язык для своего использования.
например: если администратор или контент-менеджер загружает видео, они могут выбрать, на каком языке это видео , это помогает пользователям получать нужный контент

Статистика

Еще одна функция, которую мы добавили, - это возможность отслеживать статистику использования. Администраторы изначально могли видеть, кто какой ресурс просматривает и сколько раз (благодаря Брайану Мукуке), но им нужен был способ также просматривать статистику для всего контента в SparkEd. Это была простая, но важная реализация.

ErrorBoundary

ErrorBoundaries были введены в React v16, и это была важная функция для нас, потому что некоторые компоненты так или иначе нарушили бы производство, что привело бы к полной дисфункции приложения. Однако с ErrorBoundary вы можете выбрать, что отображать и, таким образом, предоставить лучший опыт для пользователя. ErrorBoundary также предоставляет рекомендации о том, как пользователь может устранить проблему, как он может связаться с сопровождающим или даже с администратором, пока остальная часть приложения все еще работает. <ErrorBoundary /> - это такой же компонент, как и любой другой, он принимает дочерние элементы как другие компоненты.
Рассмотрим пример, показанный ниже.

Реализация вышеуказанного компонента состоит в том, чтобы просто обернуть другой компонент внутри ‹ErrorBoundary /›

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



Ошибка в программе исправлена

Обновление видео

Сообщалось об ошибке, из-за которой формат видео не обновлялся. Если вы просматривали pdf-ресурс, вы переключаетесь обратно на видео, пользовательский интерфейс не заметил изменения. Вы можете прочитать подробности проблемы здесь.



Сломанная боковая панель

Sidenav конфликтовал с другой реализацией немного другого sidenav, добавленного на панель инструментов, и это мешало закрытию компонента.



Список неперехваченных ошибок

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



Остальные вопросы закрыты, их все еще можно найти здесь



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







Вы также можете проверить страницу выпусков, чтобы получить больше информации о каждом выпуске.



Релизы



Выпуски SparkEd следуют семантическому управлению версиями (semver), где каждый выпуск содержит изменения, ведущие к основному выпуску.

Major.Minor.Patch

Рассмотрим версию 1.8.2, основная версия будет 1, второстепенная 8 и патч 2, исправления считаются только как исправления ошибок, которые не вносят никаких изменений, влияющих на проект, тогда второстепенные выпуски следуют за добавлением некоторых функциональных возможностей. релиз - это когда есть некоторые большие заметные изменения, о которых нужно знать пользователям, и которые в основном содержат критические изменения.

Узнайте больше обо всех выпусках SparkEd и примечаниях к выпуску здесь.

Авторы

Как проект с открытым исходным кодом мы всегда открыты для участия и ценим тех, кто вносил свой вклад в прошлом.

Что дальше

Мы планируем перенести стек на что-то другое, но мы оставим RFC открытым, чтобы он указывал, что нам нужно изменение.

V3 SparkEd будет полностью переписывать все приложение, мы будем начинать и постепенно завершать все это. Причина в том, чтобы убедиться, что мы увеличиваем тестовое покрытие, обеспечиваем лучшую производительность и хороший пользовательский интерфейс.

Отредактировал Dr. Крейг Уилсон