Перейти к основному содержимому

Обзор Telescope

Наши contributors (участники, вложившие в развитие проекта)

Результат Telescope существует благодаря совместной работе всех этих талантливых людей (и роботов).

Введение

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

Мы также считаем, что чтение блогов друг друга важно. В блогах наших коллег мы обнаруживаем, что мы не одиноки в нашей борьбе за то, чтобы вещи работали, в наших интересах в различных темах, и что синдром самозванца не является чем-то уникальным для «меня».

Чтобы облегчить обнаружение блогов в нашем сообществе, мы создали блог с открытым исходным кодом Planet:агрегированный поток блогов преподавателей и студентов Seneca, работающих над Open Source, на одной странице. Наш блог Planet в настоящее время находится на Planet CDOT.

Что такое Planet?

Planet (перевод:Планета) — это приложение-агрегатор лент, предназначенное для сбора статей из блогов членов интернет-сообщества и отображения их на одной странице. Planet работает на веб-сервере. Оно создает страницы с записями из исходных лент в хронологическом порядке, начиная с самых последних записей. --Wikipedia

В начале 2000-х, до появления приложений для социальных сетей, таких как Twitter и Facebook, Planet решало важную проблему в Open Source сообществе. Оно использовало различные технологии «лент» (RSS, Atom, CDF), чтобы позволить публикациям из блогов с разных платформ объединяться в одну страницу, которая постоянно обновлялась последними публикациями людей в определенном сообществе.

Написанное на Python Джеффом Во и Скоттом Джеймсом Ремнантом, Planet могло быть настроено со списком лент блогов и HTML-шаблоном. Оно использовало их для динамического создания сайта с публикациями в хронологическом порядке из указанных лент.

В Поисках Новой "Планеты"

Наша "Планета" умирает. Программное обеспечение, которое мы используем, последний раз обновлялось 13 лет назад. В то время как основной его код ушел в прошлое, наши потребности двигают нас вперед. Поддерживать существующую систему, особенно с учетом количества студентов, участвующих в Open Sourse в Seneca, стало слишком сложно. Наш нынешний сайт часто ломается и нуждается в ручном вмешательстве на регулярной основе. В будущем нам нужна новая "Планета", которую мы могли бы назвать домом.

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

Вместо того чтобы пытаться найти существующее решение, мы решили попытаться создать собственное. Поскольку нам нужно программное обеспечение, мы также чувствуем, что мы должны создать и поддерживать его. И, поскольку наша потребность в "Планете" вытекает из нашей коллективной работы в Open Sourse, мы считаем, что создание его вместе как Open Sourse, было бы наилучшим решением.

Попытка Определить Нашу "Планету"

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

См. раздел Архитектура для более полного представления о дизайне нашего проекта.

Что делает Telescope?

По сути, Telescope принимает RSS ленты публикаций блогов, перестраивает эти публикаций в формат HTML и собирает их в единую веб-страницу для отображения. Он способен обрабатывать различные виды форматирования, такие как блоки кода или встроенные видео. Telescope также собирает данные об этих публикациях на информационной панели. Публикации, которые можно увидеть на Telescope, происходят из блогов вкладчиков в разработку Telescope. Таким образом, вы можете следить за развитием проекта на самом сайте!

История Проекта

1.0

Telescope 1.0 реализовал многие из наших первоначальных целей, в том числе:

  • Монолитный бэкенд веб-сервер node.js, предоставляющий REST API и GraphQL
  • Сервис очереди node.js для параллельной обработки лент
  • Полный редизайн и обновление интерфейса
  • Фронтенд веб-приложение на GatsbyJS с использованием React компонентов из Material UI
  • Первоначальная аутентификация единого входа на основе SAML2
  • Управление контейнерами на основе Docker/Docker Compose
  • Пайплайны CI/CD с использованием CircleCI и Travis CI
  • Pull Request передосмотр с помощью Zeit Now
  • База данных Redis для кэширования лент и сообщений
  • База данных Elasticsearch для полнотекстового поиска публикаций
  • Обратный прокси-сервер Nginx и HTTP-кэш-сервер
  • Certbot для управления SSL-сертификатами из Let's Encrypt
  • GitHub веб-хук-сервис на базе node.js для автоматического управления размещением
  • GitHub push-события и веб-хуки для автоматизации стадийных и производственных сборок, а также "green/blue" размещения
  • Стадийные (https://dev.telescope.cdot.systems/) и производственные (https://telescope.cdot.systems/) размещения

2.0

Telescope 2.0 улучшил и расширил этот дизайн:

  • Улучшенная инфраструктура тестирования, включая моментальные снимки, сквозное и модульное тестирование
  • Переработка CI/CD в GitHub Actions
  • Улучшено SEO
  • Добавление Firebase в качестве внутреннего хранилища данных для информации о пользователе
  • Улучшения аутентификации на основе SAML, авторизации JWT и безопасности процессов регистрации пользователей
  • Новый дизайн пользовательского интерфейса, логотип, CSS и тематика
  • Улучшенная доступность и пользовательский опыт
  • Миграция монолитной серверной части в микросервисы (завершено на 90 %) и шлюз API с использованием Traefik
  • Улучшения в Elasticsearch и Redis
  • Полный порт интерфейса с GatsbyJS на next.js
  • Переписка внешнего интерфейса с помощью TypeScript
  • Обновления и обслуживание зависимостей, как вручную, так и автоматически (Dependabot)
  • Исправление ошибок и погашение технического долга
  • Поддержка прогрессивного веб-приложения (PWA) и мобильного пользовательского интерфейса
  • Улучшения докера
  • Автоматизация и инструменты исправления, обновления и улучшения
  • Улучшения в nginx, кэшировании и управлении сертификатами
  • Обновления документации
  • Улучшенный опыт разработчиков, включая исправления межплатформенных различий

3.0

В процессе.