Skip to main content

Преглед на телескопа

Въведение

Една от ключовите характеристики на участието на Seneca в отворения код е акцент върху споделянето на това, върху което работим, преподаването и ученето чрез блогване. Вярваме, че една от най-възнаграждаващите части от обучението за работа в общността с отворен код открива, че човек може да стане част от тъканта на мрежата, намерете глас и изградете последователи.

Също така вярваме, че взаимното четене на публикации в блогове е важно. В блога публикации на нашите колеги, откриваме, че не сме сами в борбите си да направим нещата да работят, нашите интереси към различни теми, а този синдром на самозванеца не е нещо уникално за "мен".

За да позволим по-добро откриване на блогове в нашата общност, ние създадохме отворен източник блог Планета: агрегиран канал с публикации в блогове от преподаватели и студенти на Seneca, работещи с отворен код в a една страница. Нашият блог Planet живее в момента http://zenit.senecac.on.ca/~chris.tyler/planet/.

Какво е планета?

Planet е приложение за събиране на емисии, предназначено да събира публикации от уеблоговете на членове на интернет общност и да ги показва на една страница. Planet работи на уеб сървър. Той създава страници със записи от оригиналните емисии в хронологичен ред, най-новите записи първи. --Уикипедия

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

Написано на Python от Джеф Уо и Скот Джеймс Ремнант, Planet може да бъде конфигуриран със списък от емисии на блогове и HTML шаблон. Би било използвайте ги за динамично генериране на сайт с публикации в хронологичен ред от посочените емисии.

В търсене на нова планета

Сегашната ни планета умира. Софтуерът, който използваме, е последно актуализиран преди 13 години. Докато основният код се отнесе по-навътре в миналото, нашите нужди се преместиха напред. Запазване на съществуващата система, особено с броя на учениците участващи в отворения код при Сенека, стана твърде трудно. Текущият ни сайт често се чупи и се нуждае от редовна ръчна намеса. Върви напред, имаме нужда от нова планета, която да наречем дом.

Докато се готвим да навлезем в 2020 г., решихме, че е време да обмислим преместване към нова система. За съжаление почти всяка система, която дойде да замени Planet, има сам по себе си става неподдържан.

Вместо да се опитаме да намерим съществуващо решение, вместо това решихме да опитаме да създадем една нова система. Тъй като имаме нужда от този софтуер, ние също смятаме, че трябва да се създават и поддържат. И тъй като нуждата ни от планета произлиза от нашата колективна работа върху отворен код, смятаме, че го създаваме заедно като отворен код би бил най-желаният път напред.

Опитвайки се да дефинираме нашата планета

Научихме редица неща през последното десетилетие, управлявайки нашата собствена планета. Също така наблюдавахме как социалните медии и модерните технологии прекроиха нашия очаквания за това каква може и трябва да бъде система като тази. Това е включено в нашия дизайн и изпълнение на нашия нов проект за телескоп.

Вижте Архитектура за по-пълна картина на настоящия ни дизайн.

История на проекта

1.0

Телескоп 1.0 реализира много от първоначалните ни цели, включително:

  • Монолитен бекенд уеб сървър на node.js, предоставящ REST API и GraphQL
  • Node.js услуга за опашка за паралелна обработка на емисии
  • Пълен преглед и дизайн на потребителския интерфейс
  • Уеб приложение за интерфейс на GatsbyJS, използващо Material UI React компоненти
  • Първоначално удостоверяване за единично влизане, базирано на SAML2
  • Docker/Docker Compose базирано управление на контейнери
  • CI/CD тръбопроводи с помощта на CircleCI и Travis CI
  • Изтеглете заявка за визуализации с помощта на Zeit Now
  • Redis база данни за кеширане на емисии и публикации
  • Elasticsearch база данни за пълнотекстово търсене на публикации
  • Nginx обратен прокси и HTTP кеш сървър
  • Certbot за управление на SSL сертификати с Let’s Encrypt
  • Базирана на node.js услуга GitHub Webhook за автоматично управление на внедряванията въз основа на
  • GitHub push събития и уеб кукички за автоматизиране на сценични и производствени компилации, както и зелено/синьо внедряване
  • Постановка (https://dev.telescope.cdot.systems/) и производство (https://telescope.cdot.systems/) внедрявания

2.0

Телескоп 2.0 подобри и разшири този дизайн:

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

3.0

В процес на изграждане