Node.js release scheduling

Глава 1.2 Организация Node.js

Оглавление

1.2    Организация Node.js

1.2.1    Руководящий технический комитет

1.2.2    Соавторы

1.2.3    Комитет Сообщества

1.2.4    Рабочие группы

1.2.5    Сообщество OpenJS

1.3        Версии Node.js

1.3.1     LTS релизы

1.4        Преимущества Node.js

1.5       Область применения Node.js

1.2    Организация Node.js

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

Руководящий технический комитет(TSC) отвечает за дальнейшую разработку платформы. Количество членов TSC не лимитировано, однако обычно выбирается от 6 до 12 человек, принимающих участие в выпуске платформы. Участники TSC решают следующих задачи:

  • Управление техническим развитием Node.js

  • Контроль за проектом и процессом разработки

  • Определение политики взносов

  • Управление репозиторием GitHub

  • Установка соглашений по написанию кода и технической документации

  • Менеджмент списка сотрудников

TSC на регулярной основе опубликовывает свои тех митинги на официальном Youtube канале –  www.youtube.com/c/nodejs+foundation.

1.2.2    Соавторы

Node.js – это проект с открытым исходным кодом, размещаемом на GitHub репозитории. Как и во всех крупных проектах такого типа, группа людей, называемая соавторы(мы допустили вольность в переводе – в оригинале пишется collaborates – коллаборанты), имеет доступ на запись в этот репозиторий. В дополнение к доступу к репозиторию, соавторы также имеют доступ к задачам непрерывной интеграции. Типичные задачи сотрудников включают в себя поддержку пользователей и новых соавтором, улучшение исходного кода Node.js и документации, анализ заливаемого кода в репозиторий и разбор ошибок кода(с соответствующими комментариями), командная работа в рабочих группах и слияние pull запросов.

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

1.2.3 Комитет Сообщества

Как следует из названия, Комитет Сообщества(CommComm) заботится о сообществе Node.js, делая упор на образование и культуре. CommComm организовывает регулярные митинги, которые сохраняются в отдельном GitHub Репозитории(https://github.com/nodejs/community-committee). Смысл существования CommComm состоит в том, чтобы дать сообществу право голоса  и таким образом соблюсти баланс с интересами коммерческих корпораций.

1.2.4    Рабочие группы

Руководящий технический комитет  создает различные рабочие группы  для решения экспертами различных конкретных тем. Примеры таких рабочих групп :

  • Release
    Эта рабочая группа занимается выпуском релизов платформы Node.js, определяет содержимое релизов и заботится об LTS релизах

  • Streams
    Рабочая группа по потокам работает над улучшением и сопровождением Stream API

  • Docker
    Эта рабочая группа управляет официальным образами платформы Docker и следит за их актуальностью.

1.2.5    Сообщество OpenJS

Сообщество OpenJS выступает в роли своеобразного защитного зонтика для Node.js разработчиков. Его цель похожа на цель Linux сообщества для разработчиков операционной системы Linux. Организация OpenJs была основана как независимое сообщество разработчиков Node.js. В список основателей сообщества входят такие гиганты как IBM, Intel, Joyent и Microsoft. Само сообщество OpenJS существует на пожертвования от компаний и обычных людей.

1.3 Версии Node.js

Главной проблемой и основным направлением критики платформы Node.js до ответвления io.js было то, что разработка шла довольно медленно. Регулярные запланированные выпуски являются важным критерием в пользу выбора ИМЕННО данной платформы. особенно в сфере корпоративных разработок. Именно по этой причине после слияния веток Node.js и io.js сообщество согласовывает прозрачный график выпуска релизов и срок поддержки LTS версий(LTS подразумевает выпуск обновлений в течении достаточно длительного промежутка времени). График релизов подразумевает выпуск одной главное версии как в полгода.

Node.js release scheduling
Рис 1.1 – График выпуска и поддержки версий Node.js

Как можно увидеть на графике, время поддержки 14 версии уже вышло на днях, а 16 версии закончится в течении следующих 5 месяцев. И в ближайшие месяц – два выйдет новая версия 20 платформы(по состоянию на 11 апреля 2023 года идет речь).

1.3.1 LTS релизы

Четная версия Node.js переходит в категорию LTS сразу после выхода следующей нечетной версии. Затем LTS выпуск активно поддерживает следующих 12 месяцев. За это время версия получает:

  • Исправление ошибок
  • Обновления безопасности
  • Незначительные обновления npm пакетов
  • Обновление документации
  • Повышение производительности без ущерба для существующих приложений
  • Изменения в исходном коде, упрощающие интеграцию будущих улучшений

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

1.4 Преимущества Node.js

История развития платформы Node.js весьма ясно показывает: она напрямую связана с интернетом. Используя язык JavaScript в качестве базы разработки приложений, Вы можете очень быстро добиться видимых результатов используя возможности Node.js. Платформа Node.js занимает мало места, высокопроизводительная и может быть установлена на большинстве популярных ОС. Как и во всех скриптовых языках, процесс разработки Node.js приложений не является сложным, и результаты разработки видны сразу. В дополнение к сверх быстрому развертыванию, Вы также можете весьма гибко реагировать на меняющиеся требования во время разработки веб приложений. Поскольку ядро языка JavaScript стандартизировано под стандарт ECMAScript, JavaScript представляет собой крепкую основу, с помощью которой Вы можете реализовать более надежные, высокопроизводительные и эффективные приложения. Доступные возможности языка отлично задокументированы онлайн и в многочисленных книгах, в том числе и на нашем сайте. Таким образом, разработчики, хорошо знающие язык JavaScript могут создавать крупные Enterprise приложения с высокой нагрузкой. Так как Node.js использует тот же движок JavaScript, что и Google Chrome – движок V8 – в Node.js доступные все те же языковые возможности и поэтому разработчики, которые хорошо знакомы с языком JavaScript могут довольно быстро ознакомиться с новой платформой.

За свою долгую историю, JavaScript породил множество высокопроизводительных движков. Как мы уже писали в разделе история, главная причина, почему это произошло – на заре развития веб технологий, каждый разработчик браузера всегда разрабатывал свою реализацию движка JavaScript, поэтому на рынке существовала сильная конкуренция, которая только положительно сказывалась на развитии движков.  Это положение привело к тому ,что с одной стороны JavaScript теперь интерпретируется очень быстро, а с другой стороны к тому, что разработчики браузеров в конце концов договорились об общих стандартах. Node.js как платформа для серверной реализации JavaScript изначально разрабатывалась как проект с исходным кодом. По этому причине вокруг платформы довольно быстро сформировалось активное сообщество, которое применяет Node.js в практических задачах, а также занимается дальнейшим развитием платформы. Обучающие ресурсы по Node.js варьируются от руководств, которые помогут Вам приступить к разработке Ваших первых приложений, до статей по сложным темам – отладка, масштабирование и качество разрабатываемых приложений. Большое преимущество таких проектом с открытым исходным кодом, как Node.js заключается в том, что вся информация о продукте, как и сам продукт – предоставляется бесплатно, а большинство вопросов, и ошибок могут быть решены сообщество в предельно короткие сроки – даже быстрее чем это будет сделано в корпоративном продукте.

1.5 Область применения Node.js

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

Рассмотрим самые важные преимущества фреймворка:

  • Чистый JavaScript

Когда Вы работаете с Node.js – Вам не нужно изучать новый диалект языка, потому что Вы работаете с ядром языка JavaScript. Также Вам доступны стандартизированные и хорошо документированные интерфейсы для доступа к системным ресурсам. В качестве альтернативы Вы можете языку JavaScript Вы можете написать приложение на TypeScript, перевести исходный код в JavaScript и затем запустить его в Node.js. Больше информации об этой теме Вы можете найти в главе 13.

  • Оптимизированный движок

Node.js базируется на движке Google JavaScript V8. Преимущество заключается главным образом в использовании постоянно развивающегося и совершенствующегося движка, в котором все новые языковые функции появляются в самом скором времени.

  • Неблокирующий ввод/вывод

Все операции, которые не выполняются непосредственно в Node.js, не блокируют выполнение Вашей программы. Принцип Node.js заключается в том, что все операции, которые не выполняет платформа – передается непосредственно операционной системе, другим приложениям или другим системам.  Это позволяет приложению отвечать на другие запросы или выполнять приложение параллельно. После завершения выполнения задачи, процесс Node.js получает уведомление и может продолжать обрабатывать информацию.

  • Однопоточный

Типичное Node.js приложение выполняется в однопоточном процессе. Долгое время не было никакого мультипоточного выполнения и весь параллелизм сводился к неблокирующему вводу-выводу, как было описано выше. Таким образом, весь создаваемый Вами код потенциально может заблокировать Ваше приложение. Поэтому Вам необходимо обращать внимание на разработку с бережным подходом к использованию ресурсов. Если все же у Вас возникает необходимость параллельных задач, Вам необходимо обратить внимание на модуль child_process , который позволяет создавать Вам собственные дочерние процессы.

 

Для того, чтобы добиться успехов в разработке приложений, Вам необходимо иметь полное и ясное представление о компонентах и как они работают. Самый важный компонент из всех – это движок V8.

 

Leave a Reply

Please disable your adblocker or whitelist this site!