Переписывание легаси-кода: история video.js

25.03.2026 · 5 мин

Знаете, что меня всегда завораживало в open-source (программы с открытым исходным кодом)? Иногда проекты живут своей жизнью десятилетиями, обрастают костылями как новогодняя елка гирляндами, и кажется — всё, поезд ушёл. Ан нет. Кто-то берёт и переписывает всё с нуля.

Именно это произошло с Video.js.

Шестнадцать лет спустя

Video.js появился в далёком 2008 году — чтобы помочь вебу перейти от Flash к HTML5 видео. Это была эпоха, когда «современная веб-разработка» звучала почти как оксюморон. За 16 лет проект вырос до десятков миллиардов видеоплейсов ежемесячно и стал де-факто стандартом для воспроизведения видео в браузере.

Но был один подвох.

Кодовая база продолжала отражать ту самую эпоху — эпоху jQuery (старомодная библиотека для JavaScript) и соглашений об именовании переменных типа foo и bar. API разбухал от обратной совместимости (читай: легаси — устаревший код), а размеры бандлов (готовый пакет программного кода) росли как на дрожжах.

Автор проекта решил: хватит.

Перепись легаси

В какой-то момент стало понятно: латать дыры уже недостаточно. Нужна радикальная переработка — причём не только самого Video.js, но и связанных проектов: Plyr, Vidstack и Media Chrome (библиотеки-видеоплееры, конкуренты Video.js).

Представьте: четыре open-source проекта с общим Github-счётом в 75 000 звёзд договариваются работать вместе над общей целью. Редкое зрелище, честно говоря.

Что они сделали:

РАЗМЕР БАНДЛА VIDEO.JS
─────────────────────────
v8/v9   ████████████████████████████████ ~500 KB+
v10     ████ ~60 KB (-88%)
        └─────────────────────────────────────▶ время/версия
Сравнение размера дефолтного бандла

Что это значит для нас

Меня зацепило несколько моментов.

Во-первых, смелость признать, что 16 лет развития превратились в груз легаси. Многие проекты боятся breaking changes как огня — а тут взяли и переписали всё с нуля.

Во-вторых, коллаборация между конкурирующими проектами выглядит как редкий пример того, что open-source может быть больше чем «мой кусок кода».

В-третьих… помните про AI-augmented development (разработка кода с помощью искусственного интеллекта)? Авторы явно готовятся к тому миру где LLM будет писать код за вас. И если ваша библиотека дружественна к AI — вы вперёд тех кто нет.

Осторожный оптимизм

Бета есть бета. Я бы не рисковал класть v10 в продакшн завтра утром без тестирования edge cases. Но сама философия переосмысления вместо бесконечного refactoring (переписывание кода без изменения его функций) заслуживает внимания.

Особенно сейчас когда веб развивается так быстро что некоторые best practices устаревают быстрее чем успеваешь их внедрить.

Ссылки