tea створює нові технології, які змінять спосіб розповсюдження коду
Макс Хауелл, автор популярної системи керування пакетами macOS homebrew , оголосив, що працює над розробкою нового менеджера пакетів під назвою Tea, який позиціонується як продовження розробки brew, виходячи за рамки менеджера пакетів та пропонуючи єдину інфраструктуру керування пакетами, яка працює з децентралізованими репозиторіями.
Tea концептуально не схожий на традиційні менеджери пакетів , і замість парадигми «Я хочу встановити пакет» він використовує підхід «Я хочу використовувати пакет».
Зокрема, Tea не має команди встановлення пакетів як такої; натомість вона використовує генерацію середовища для запуску вмісту пакетів, який не перетинається з поточною системою. Пакети розміщуються в окремому каталозі ~/.tea та не мають абсолютних шляхів (їх можна переміщувати).
Tea пропонує два основні режими роботи: перехід до командної оболонки з доступом до середовища з встановленими пакетами та безпосередній виклик команд, пов'язаних з пакетами. Наприклад, виконання команди "tea +gnu.org/wget" призведе до завантаження менеджера пакетів утиліти wget та всіх необхідних залежностей, а потім надасть доступ до оболонки в середовищі, де доступна встановлена утиліта wget.
Другий варіант передбачає прямий запуск: ` tea +gnu.org/wget -qO- tea.xyz/white-paper | tea +charm.sh/glow glow -` , який встановить утиліту wget та одразу запустить її в окремому середовищі, завантаживши файл, який потім буде відрендерено з використанням сяяння. Можливий і складніший ланцюжок; наприклад, щоб завантажити файл `white-paper.pdf` та обробити його утилітою glow, можна скористатися такою командою (якщо wget та glow ще відсутні, вони будуть встановлені).
Так само ви можете безпосередньо запускати скрипти , приклади коду та дотепні фрази, автоматично завантажуючи інструменти, необхідні для роботи.
Без прикладу запустіть:
tea https://gist.githubusercontent.com/i0bj/2b3afbe07a44179250474b5f36e7bd9b/raw/colors.go --yellow
tea: installing go 1.18.3
go: installing deps
go: running colors.go
…
Він встановить мовний інструментарій Go та запустить сценарій colors.go із «–yellow» як аргумент.
Щоб уникнути виклику команди tea щоразу, ви можете підключити її як універсальний менеджер віртуального середовища та обробник відсутніх програм. У цьому випадку, якщо запущена програма недоступна, вона буде встановлена, а якщо вона була встановлена раніше, то вона буде запущена у вашому середовищі.
У своєму поточному вигляді пакети, доступні для Tea, зібрані у двох колекціях , pantern.core та pantern.extra , які містять метадані, що описують джерела завантаження пакетів, скрипти збірки та залежності.
Колекція pantern.core містить основні бібліотеки та утиліти, які розробники Tea постійно оновлюють та тестують. pantern.extra містить пакети, які ще не добре стабілізовані або запропоновані спільнотою. Для перегляду пакетів передбачено веб-інтерфейс.
Процес створення пакетів для Tea значно спрощений і зведений до створення універсального файлу package.yml (приклад), для якого не потрібно адаптувати пакет для кожної нової версії. Щоб знайти нові версії та завантажити їх код, пакет можна зв’язати з GitHub.
У файлі також описуються залежності та надаються сценарії збірки для підтримуваних платформ. Встановлені залежності є незмінними (версія фіксована), що виключає повторення ситуацій, подібних до інциденту з лівою панеллю.
У майбутньому планується створення децентралізованих репозиторіїв, які не будуть прив'язані до жодного окремого сховища, а також використання розподіленого блокчейну для метаданих і децентралізованої інфраструктури для зберігання пакетів. Версії будуть сертифіковані безпосередньо розробниками та перевірені зацікавленими сторонами. Можливо, можна буде розповсюджувати криптовалютні токени для сприяння обслуговуванню, підтримці, розповсюдженню та верифікації пакетів.
Насамкінець, варто зазначити, що проєкт наразі розробляється як кросплатформний застосунок (наразі підтримуються macOS та Linux, підтримка Windows знаходиться в розробці). Код проєкту написаний на TypeScript та розповсюджується за ліцензією Apache 2.0 (brew був написаний на Ruby та випущений під ліцензією BSD).
Якщо ви зацікавлені дізнатися більше, ви можете ознайомитися з детальною інформацією та інструкцією з використання Tea за наступним посиланням.