Swift package manager. Как он влияет на жизнь iOS(?) разработчика

Ручное управление зависимостями? Прошлый век. Carthage и Cocoapods - до недавнего времени два противоборствующих лагеря управления зависимостями в проекте и, де факто, стандарты индустрии. Сразу после анонса SPM расположение сил особо не поменялось. Но пришел Xcode 11 и мир потрясла тихая революция. Ее не все могли заметить, но я постараюсь немного раскрыть эту тему и ответить на следующие вопросы:

Script

Приветствие

Всем привет. Меня зовут Сергей Петрачков и я работаю в отделе мобильной разработки в ЦФТ, а если быть точным, то в команде инфраструктуры для iOS отдела. По долгу службы я занимаюсь всякими интересными вещами типа исследования и разработки инструментов для разработки. Мы находимся на острие новых технологий и анонсов эппл. Поэтому такие вещи как SPM мы заметили сразу и начали его осваивать и внедрять в нашу жизнь.

О чем доклад?

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

Ручное управление зависимостями? Прошлый век. Carthage и Cocoapods - до недавнего времени два противоборствующих лагеря управления зависимостями в проекте и, де факто, стандарты индустрии. Сразу после анонса SPM расположение сил особо не поменялось. Но пришел Xcode 11 и мир потрясла тихая революция. Ее не все могли заметить, но я постараюсь немного раскрыть эту тему и ответить на следующие вопросы:

Что такое SPM?

Это "еще один" децентрализованный менеджер зависимостей, презентованный в 2015 году. Нативный инструмент. Был презентован вместе с Swift 3. Основной посыл в том, что это часть экосистемы языка и не требует xcode или макоси для работы. Свифт работает на линуксах и с недавнего времени на винде. Там нет xcode, но это никому не мешает. Соответственно мы получаем еще один пункт, что нам не нужен xcodeproj. Для многих, я уверен, это большое облегчение.

Почему децентрализованный? Потому что в отличие от Cocoapods у него нет центрального хранилища podspecs, которое необходимо для работы с зависимостями. Хоть особо одаренные энтузиасты и пытаются пристроить реестр SPM, от этого реестра не будет меняться работоспособность инструмента. Нам нужно только правильно оформлять пакеты в соответствии с документацией и иметь ссылку до этого пакета.

Что дает SPM разработчику в 2020?