Как Facebook создал IDE для поддержки инженеров на разных компьютерных языках

Дерек Хандова

Когда Марк Цукерберг подал заявку на IPO Facebook — первичное публичное размещение акций — в 2012 году, он подробно описал интегрированную среду разработки (IDE) социальной сети или хакерский путь непрерывного улучшения пользовательского опыта. Таким образом, этос Facebook вновь ярко проявился на заключительном заседании недавней @Scale Conference в Сан-Хосе, Калифорния, где инженеры Facebook и другие специалисты подробно рассказали, как культура взлома компании позволяет любому программисту в любой точке мира. организация для улучшения исходного кода на любом компьютерном языке, на котором он написан.

Что означает «взламываемость для Atom (текстовый редактор с открытым исходным кодом)?» — спрашивает Бен Огл, старший инженер-программист GitHub, поставщика программных инструментов для совместной работы. Здесь все знают JavaScript, HTML и CSS — хотя бы немного. Так что все вы можете расширить Atom. Вы можете модифицировать и стилизовать что угодно. Например, если хакерам не нравится древовидное представление, они могут удалить его или опубликовать свой собственный пакет древовидного представления, который конкурирует с GitHub, по словам Огла. Ты можешь делать все, что угодно, — говорит он. Начать очень легко.

Доступность и гибкость
Разработанный для обеспечения доступности и гибкости, Atom позволяет использовать ключевую команду, которая выполняется внутри сценария инициализации, что позволяет выполнять глобальный поиск и замену. Например, по словам Огла, программист может изменить все переменные змеиного случая на переменные верблюжьего случая с помощью команды клавиши Atom за две минуты.

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

По словам Огла, это позволяет программистам писать модули на C, C++ или других родных языках, которые не прерывают основной процесс пользовательского интерфейса. Кодеры также могут создавать необычные интерфейсы, которые основная команда GitHub никогда бы не разработала. В целом с Atom разработчикам нужно беспокоиться только о проблемах, специфичных для их предметной области. По словам Огла, другие проблемы, такие как подсветка текста оформления, пользовательский интерфейс желоба, панели, панели и автозаполнение, решаются помощниками GitHub и примитивами, доступными с Atom.

Существует так много инструментов, что все, что нам нужно сделать с Atom, — это написать связующий код, чтобы подключить его к вашему редактору, — говорит он. По словам Огла, Atom может быть связующим звеном между вашими инструментами в IDE и основой вашей пользовательской среды. Пакеты IDE, написанные поверх Atom, включают go-plus, ide-haskell, Particle-io и Nuclide от Facebook.

Дружище, не пожалеешь ли ты доллар?
По словам Бена Гамильтона, инженера-программиста Facebook, главная философия социальной сети заключается в том, чтобы любой кодер мог изменить любой код в любом месте. исходный код. Компания хочет, чтобы кодеры могли перемещаться между командами, не изучая каждый вид кода.

Чтобы поддержать эту философию, Facebook создал Buck, универсальную систему сборки с кэшированием. Бак создает, тестирует и компилирует собственные языки программирования, включая React Native, Android, iOS, OS X, Native C и C++, Python, D, OCaml и Rust. Buck — это простой граф кода, который анализирует файлы и создает скомпилированный код. По словам Гамильтона, самым прекрасным аспектом Buck является то, что он позволяет избежать конфликтов слияния в гигантских XML-файлах IDE.

Кроме того, Buck компилирует только то, что изменилось в коде, а остальное извлекает из локального кеша. Он генерирует файлы за кулисами, а также изначально создает и запускает тесты. По словам Гамильтона, Бак агностик к языкам кодирования.

Facebook только что выпустил варочный пакет Buck OS X с доступной документацией и учебными пособиями, а также кодом. Открытый исходный код и возможность создавать свои приложения в стиле Facebook! прочитайте презентацию Гамильтона.

Напрямую из первоисточника
Если вы когда-нибудь задавались вопросом, как они обеспечивают работу масштабируемого кода в Facebook, человек, ответивший на этот вопрос, сделал финальную презентацию на @Scale. Джеймс Пирс, руководитель отдела открытых исходных кодов в Facebook, начал свою презентацию с описания масштабов инженерной задачи в Facebook. Пирс говорит, что компания хочет, чтобы как можно больше ее инженеров были универсальными разработчиками. И все производственные системы Facebook имеют открытый исходный код.

По словам Пирса, с учетом того, что размер кодовой базы Facebook постоянно растет, а количество компьютерных языков, которые должны поддерживаться, необходимы общие инструменты. Однако готовых инструментов для всего этого нет, говорит он. Поэтому Facebook создал Nuclide для этого.

По словам Пирса, в Nuclide относительно небольшая команда кодеров Facebook извлекает выгоду из своей культуры взлома, чтобы иметь возможность влиять на большие изменения. Например, отдельные команды разработчиков могут взломать и исправить все в Facebook. А с Nuclide код Facebook имеет внутренние функции, которые проверяют наличие ошибок.

Благодаря всем ресурсам с открытым исходным кодом, которые Facebook предоставил сообществу, включая Atom, Nuclide и Buck, разработчики могут начать создавать приложения. Все они уже есть на GitHub. В конце концов, по словам Пирса, Facebook стремится сделать работу с открытым исходным кодом для сообщества разработчиков.

Подробнее о конференции @Scale см. в статьях Spark & ​​Cassandra и GraphQL.