惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
M
MIT News - Artificial intelligence
大猫的无限游戏
大猫的无限游戏
The Cloudflare Blog
Apple Machine Learning Research
Apple Machine Learning Research
罗磊的独立博客
Last Week in AI
Last Week in AI
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
有赞技术团队
有赞技术团队
博客园 - 叶小钗
酷 壳 – CoolShell
酷 壳 – CoolShell
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
V
Visual Studio Blog
美团技术团队
F
Fortinet All Blogs
I
Intezer
IT之家
IT之家
T
Threat Research - Cisco Blogs
Blog — PlanetScale
Blog — PlanetScale
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
Know Your Adversary
Know Your Adversary
P
Proofpoint News Feed
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
AWS News Blog
AWS News Blog
P
Palo Alto Networks Blog
S
Securelist
L
LINUX DO - 热门话题
Security Archives - TechRepublic
Security Archives - TechRepublic
N
Netflix TechBlog - Medium
TaoSecurity Blog
TaoSecurity Blog
Scott Helme
Scott Helme
Hugging Face - Blog
Hugging Face - Blog
www.infosecurity-magazine.com
www.infosecurity-magazine.com
Project Zero
Project Zero
U
Unit 42
博客园_首页
博客园 - 司徒正美
S
Security Affairs
V
V2EX
T
Threatpost
T
Tailwind CSS Blog
GbyAI
GbyAI
O
OpenAI News
K
Kaspersky official blog
Y
Y Combinator Blog
宝玉的分享
宝玉的分享
H
Hacker News: Front Page
V2EX - 技术
V2EX - 技术
Security Latest
Security Latest

Все публикации подряд на Хабре

Ловим музу за клавиатуру: как айтишнику стать автором Что умеет Midjourney в 2026? Мой немного грустный разбор этого шикарного инструмента Никто не любит писать тесты, но ИИ может исправить это IPv8 выглядит как мечта. Поэтому почти наверняка не взлетит Производители вернули в продажу материнки с DDR3. Что происходит? Управление агентом с телефона через Telegram теперь в KodaCode От координации к лидерству: как меняется роль руководителя разработки Я сделала родителям бизнес вместо пенсии: зарабатываем 70 тысяч, мама не даёт продать В три раза быстрее приемка товара и оптимизация трудозатрат на 73%: как «РСТ-Инвент» помог Gulliver Group ИИ-шечный мир победил? О влиянии искусственного интеллекта на игропром Кремль снижает давление на Телеграмм пока Европа строит интернет по паспорту Как CEO, CTO и CIO за 8 часов собрали ИИ-директора, который умеет держать позицию под давлением Как (не) потерять домен за выходные Вместо 8 разных VPS: как я организовал практику студентам на одном сервере Почему твой Open Source проект не замечают? R&D: искусство управления неопределенностью в разработке AI-дефляция: вакансий для разработчиков больше, а рост зарплат — худший за 15 лет Мы отдали управление роботами OpenClaw. Что из этого вышло Галактический ID: система идентификации для всех форм разумной жизни Шесть основ бизнес-анализа: начинаем с вопроса «Кто в игре?» Код-ревью, в котором дело не в коде Данные переехали. Команда — нет Системной подход к сдаче OSWE в 2025 Почему комната управления реактором покрашена в цвет морской пены 4 YAML-файла вместо PySpark: как аналитикам строить пайплайны без разработчиков LLM-агент для поиска свободных доменов: автоматизируем подбор Когда, зачем и как правильно начинать новую сессию в Claude Code? Как я заставил нейросеть писать макросы для FreeCAD Анатомия ИИ‑агента для подбора персонала. От тысячи резюме к топ‑10 за минуты Опыт разработчика как экономика внимания Автономность как точка невозврата: кто будет субъектом в цифровом будущем Обучение ИИ в «диких» условиях: как рутинные действия превращаются в датасеты Как измерить LLM для задач кибербеза: обзор открытых бенчмарков Где хранить код? Сравнение GitHub, GitLab и Bitbucket Математика объясняет, почему нормальное распределение встречается повсюду Почему ваш FinOps не работает: 12 тезисов от практиков Как подписать проектную документацию УКЭП с использованием бесплатных лицензий Pilot Адаптивное администрирование Sigla Vision Я грузил уран в бочки, а потом 20 лет строил ИТ в атомной отрасли Чем позвонить с Эвереста? История и обзор спутниковой связи. Часть 2 Как языковая модель помогает контролировать качество инструктажей по охране труда в металлургии Как не передать на desktop свой IP в РКН Анатомия SAP Privileges: как устроено управление правами в macOS MoneyDev: Сказка про три главных слова Обновлённый токенизатор видео K-VAE 2.0 от Сбера Как сделать диспетчеризацию дома на 1284 квартиры почти бесплатно Как мы разогнали железную дорогу Мы дали агентам рутину. Теперь надо решить — что делать с освободившимся временем Токсичный контент, промпт-хакинг и защита ИИ — всё о Guardrails для LLM Умный город начинается с точного взгляда: как «Фалькон Тех» меняет пространство к лучшему Навайбкодил приложение для анализа графов Почему Дюну так интересно читать? Упрощаем работу с рутиной или как стать Гендальфом Белым Деконструкция Go: CPU, RAM и что там происходит. Go Assembler база. Часть 1.1 Какие профессии исчезнут из-за ИИ, а какие появятся? И что с этим делать Как мы построили IT-отдел, где хочется расти: архитектурные встречи, прозрачные метрики и книжные подарки Rufler: Делаем из Claude Code автономный рой через один YAML-конфиг Sing-box и белый список приложений Как построить надёжный обмен сообщениями в микросервисах: лучшие практики для enterprise OpenAI строит MLM-пирамиду, а McKinsey и Accenture помогают ей в этом Дом, который не построил Фишер (Часть 2) «Сверхзвуковой математик» против «Вдумчивого логиста»: битва алгоритмов 3D-упаковки Мультимодальные модели – грубый и дорогой инструмент Разговоры ничего не стоят. Код тоже Проверки физических лиц: с кого начнет ФНС Топ-10 бесплатных нейросетей для создания видео в 2026 году Первые слои кода: как наши решения сегодня определяют архитектуру ИИ на десятилетия Разработка нового статического анализатора: PVS-Studio JavaScript Поиск уязвимостей ПО: базовый минимум или роскошный максимум Почему оценка персонала не работает как инструмент управления Как мы разработали ИИ-ассистента и сократили рутину продуктовой команды на 50% Как я ушел из найма, нажарил косточек и продал на маркетплейсах на 168 млн в год Когда 1С:ERP уже внедрена, а нормального производственного плана всё ещё нет Как я сделал Claude мультимодальным, подключив к нему Qwen Omni Как приглашение на вакансию мечты превращается в атаку Infrastructure as Code: философия и лучшие практики IaC Тестируем Yandex Code Assistant на задаче, в которой нужно хранить секреты nxs-universal-chart v3.0: новое поколение универсального Helm-чарта Callback Injection: Техника, которая отправила Microsoft Defender в глухой нокаут «Все идеи на стол»: митап как способ вывести проект из тупика Сегодня я узнал нечто новое о GPU благодаря багу в своей игре Как заставить LLM ̶ ̶г̶а̶л̶л̶ю̶ ̶ эволюционировать Карта событий как фундамент аналитики: практический кейс для E-commerce Что выбрать для AI: x86, ARM или RISC-V? Дайджест железа за март Роль соматических мутаций в развитии аутоиммунных заболеваний: путь к избирательной терапии Mythos от Anthropic — тревожный сигнал для всех, а не только для банков Guardrails для LLM на Java: как приручить промпт‑инъекции и токсичные ответы Green-VLA: как мы собрали VLA-модель для реального антропоморфного робота и не потеряли обобщение Финансовая гонка вооружений: почему умные люди добровольно в ней участвуют Эра ИИ-агентов наступила: выбираем лучшего цифрового сотрудника # Практический опыт внедрения WinCC Redundancy на производственном предприятии Сделал MVP за 3 дня, а потом неделю прикручивал оплату. Оно того стоило? Физика против Маска: почему Starship V3 может оказаться ещё одной катастрофой Нефть Венесуэлы: крупнейшие запасы в мире, но не крупнейшая нефтяная держава JPA 4. Переосмысление Hibernate Почему зеркальная фотокамера Nikon D5 десятилетней давности идеально подошла для миссии «Артемида-2» Проект «Уровень-Спутник» или как мы сделали платформу для гидрологов «Замедлиться, чтобы ускориться»: почему ИИ повышает цену ошибок в требованиях и архитектуре Как с нуля поднять трафик IT-компании на 1657% при бюджете 55 тыс. и выжить Pixel-perfect Downsampling — идеальная отрисовка 50 миллионов точек без потерь
История IDE в Google
PatientZero · 2026-05-22 · via Все публикации подряд на Хабре

Уровень сложностиПростой

Время на прочтение6 мин

Охват и читатели571

Перевод

В предыдущей статье я говорил о том, что основная кодовая база Google обязывает использовать строгий инструментарий и стандарты для обеспечения её масштабирования. В течение многих лет единственным исключением оставались IDE.

Контекст: я работал в Google в 2011 по 2024 год. Часть информации может быть приблизительной, и я буду дополнять её, если мне сообщат об ошибках. В этом посте речь пойдёт об основном монорепозитории Google (google3).

Фрагментированная экосистема

Как и во многих компаниях, в Google разработчики имели возможность самостоятельно выбирать IDE, и из-за этого возникла высокая степень фрагментированности. В 2011 году одним из самых опытных разработчиков-сениоров задали вопрос: «Можно ли как-то сделать так, чтобы все гуглеры пользовались одной хорошей IDE?». Если вкратце, они ответили «Нет». Джефф Дин ответил так:

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

И такое мнение долгие годы оставалось доминирующим. В конце концов, не важно, какими IDE пользуются коллеги, если их код остаётся качественным. Но я двенадцать лет занимался в Google инструментами разработчика, поэтому время от времени задумывался над этим вопросом.

Можно взглянуть на это с точки зрения продуктивности компании: мы не хотим, чтобы каждый разработчик тратил слишком времени на настройку своего редактора. Хотя инженеры пользуются разными IDE, полезные интеграции рано или поздно приходится реализовывать везде: поддержку Bazel, инструментарий Starlarkинструменты автоматического форматирования кода, интеграцию поиска кода и так далее. Эта задача была вполне решаемой благодаря внутренней культуре Google. Разработчики часто органически начинали проекты по созданию инструментария, другие находили их благодаря общей кодовой базе и становились контрибьюторами. В общем случае подобный вклад приветствуется (он мотивируется через систему 20% времени и вознаграждения от коллег). Со временем на критичные проекты официально выделяется штат разработчиков. Например, приблизительно в 2015 году была собрана команда для разработки интеграции с IntelliJ.

Кто-то может задаться вопросом, зачем для этого вообще нужна отдельная команда. Разве IDE изначально не была достаточно качественной? Частично это вызвано тем, что у Google есть набор уникальных инструментов, и обеспечение их удобной интеграции с IDE повышает продуктивность разработчиков. Кроме того, определённые проблемы возникали вследствие самого размера монорепозитория. В традиционных IDE подразумевается, что весь исходный код, метаданные сборки, индексирование и анализ находятся и выполняются локально. В масштабах Google это предположение становится ошибочным.

Cloud IDE

Примерно в 2013 году (?) произошло нечто неожиданное для меня. Группа сотрудников начала писать веб-редактор под названием Cider. Это аббревиатура от «Cloud IDE» с «r» в конце, чтобы имя получилось более запоминающимся.

В компании, где большинство инструментов работает в вебе где ревью кода выполняется в браузере, а навигация по кодовой базе происходит с помощью Code Search… в компании, где работают на Chromebook вполне логично писать удобный инструмент для редактирования файлов из браузера.

Но удивило меня то, что Cider в конечном итоге стал пользоваться популярностью у инженеров. поначалу с ним в основном работали технические писатели, которые хотели редактировать markdown-файлы без заморочек с управления версиями. При исправлении опечаток такой рабочий процесс оказался крайне эффективным. За один щелчок можно было отправить пул-реквест с опцией автоматического слияния после его одобрения. Сегодня подобная фича есть и в GitHub, но в то время она казалась мне новой.

Постепенно команда добавляла всё больше фич, ориентированных на разработчиков. Поворотным моментом стало добавление поддержки автодополнения кода через LSP.

Cider был лёгким клиентом, который открывался гораздо быстрее, чем традиционные IDE. Вся магия происходила в бэкенде, который индексировал всю кодовую базу, поэтому данные были готовы сразу, когда пользователь открывал веб-страницу.

Code intelligence требует связи каждого идентификатора с его типом и ссылками. Это образует огромный языковой граф, который нужно обновлять при каждом коммите. А в кодовую базу за секунду происходит множество коммитов. Но IDE требуется и доступ к историческим данным. Если я работаю над проектом и мой коллега выполняет мердж своего кода, то мне не нужно подхватывать эти изменения мгновенно. То есть моему редактору нужно использовать граф, соответствующий дате моей последней синхронизации... очевидно, дополненный моими локальными изменениями.

Благодаря этой фиче популярность Cider в некоторых областях продолжала расти. Например, убедить перейти на него было гораздо проще разработчиков на Go, чем на Java (потому что они привыкли к гораздо более многофункциональному редактору). Однако удовольствие от возможности поиска и наличия перекрёстных ссылок между миллиардом файлов было реальным.

Cider V: VSCode в качестве фронтенда

Вложения в бэкенд можно оправдать: он решал специфичные для Google задачи, и для него не было подходящей альтернативы. Но фронтенд казался довольно ограниченным: для небольших исправлений он был хорошо, но не мог конкурировать с настоящими IDE.

Направление развития проекта сменилось в 2020 году, когда я присоединился к нему в качестве одного из техлидов. На тот момент Cider уже была доминирующей IDE в компании, поэтому встал вопрос о её будущем. Было решено использовать в ней фронтенд VSCode. Это было абсолютно логично: VSCode уже доминировала в мире IDE, была языконезависимой, расширяемой и рассчитанной на веб.

Переключившись на фронтенд VSCode, мы унаследовали сложившийся редактор, большую экосистему расширений и разрабатывавшиеся годами фичи. Многие фичи, которые требовались в Cider, в VSCode были давно решёнными задачами. Что ещё более важно, система расширений развязывала руки различным командам, убирая команду Cider с критического пути разработки.

Screenshot%202026-05-09%20000254

Cider V, 2022 год

Даже имея дюжину разработчиков в команде фронтенда, для создания полнофункционального потомка Cider нам понадобилось два года. В 2021 году открытой бета-версией пользовались пять тысяч инженеров, но оставалось ещё много работы по интеграции и совершенствованию UX. Команде нужно было реализовать поддержку управления версиями, интегрировать инструмент для ревью кода, добавить фичи автозавершения кода и рефакторинга с использованием бэкенда Cider, изменить способ выпуска и обновления расширений и так далее.

Многие пользователи полюбили редактор Cider и ожидали, что в Cider V сохранятся все его мельчайшие детали. Небольшие изменения рабочего процесса или лишний щелчок могли препятствовать переходу некоторых пользователей, поэтому совершенствование проекта требовало месяцев итераций. Даже цветовые схемы вызывали абсурдно долгие обсуждения. Как сказал в 2011 году Джошуа Блох, «единственное, что вызывает религиозного рвения, чем языки программирования — это текстовые редакторы и IDE».

Я бы мог написать про общение с разработчиками VSCode и о том, как мы контрибьютили изменения обратно в VSCode, но этот пост и так оказался довольно длинным. Когда-нибудь я попробую сочинить об этом отдельный пост. Пока же скажу, что нам нужно было поддерживать наш локальный форк, ежемесячно его обновлять, пытаться минимизировать наши локальные хаки и обеспечивать согласованность с кодом в апстриме.

Screenshot%202026-05-09%20184656

Исследование дизайна для интеграции ревью кода, 2022 год

Общая IDE

Я начал этот пост с вопроса про «общую IDE для всех гуглеров». Процесс ещё не закончен, но к 2023 году 80% разработки в основной кодовой базе Google велось в Cider V (и процент продолжал увеличиваться).

У каждой IDE есть свои плюсы и минусы, но Cider привлёк пользователей наличием лучших интеграций с инструментами компании, например, превосходной поддержки управления версиями и интеграцией ревью кода, при которой комментарии проверяющего отображаются прямо в редакторе.

Больше всего меня восхитили побочные эффекты применения одного и того же инструмента большинством пользователей. Благодаря этому мы могли вкладывать в него больше ресурсов (потому что каждое изменение обладало более сильным влиянием). Я стал техлидом в области расширяемости IDE, и вскоре после этого команды из разных частей компании начали обращаться к нам и разрабатывать собственные расширения для совершенствования своих рабочих процессов. За два года было разработано примерно сто внутренних расширений. Это позволило реализовать множество сценариев, раньше казавшихся невозможными.

В 2023 году руководство стимулировало все команды интегрировать всё больше ИИ-фич. Это привело к появлению таких замечательных фич, как Resolving Code Review Comments with Machine Learning и Smart Paste for context-aware adjustments to pasted code. И, разумеется, автозавершение кода при помощи ИИ.

Чем больше ИИ-фич интегрируется в IDE, тем очевиднее становятся преимущества наличия единой расширяемой платформы. Разумеется, она была крайне дорогой и в очень немногих компаниях подобная работа будет оправдана. Но я считаю, что переход к «стандартной» (пусть и не требуемой руководством) IDE оказал очень сильный эффект.

В конечном итоге, стандартный инструментарий становится движущей силой.