Статьи

Главные разработчики: Дейв Метвин (руководитель группы jQuery)

Большинство из нас знакомы с библиотекой jQuery JavaScript и, вероятно, используют ее по крайней мере в некоторых наших проектах. Но как много мы знаем о людях, которые неустанно тратят время на поддержку самой популярной библиотеки JavaScript в Интернете? Недавно у меня была возможность взять интервью у лидера jQuery Core Team, Дэйва Метвина , и обсудить, как он стал участвовать в проекте и где он видит развитие фронт-энда. Он участвует в jQuery с 2006 года, а также является президентом Фонда jQuery .


Успех jQuery затруднил нам что-либо изменить.

Я начал свою карьеру в качестве программиста на полный рабочий день C, занимаясь такими встроенными системами, как судовая навигация, робототехника, автоматизация производства и телекоммуникации. После этого я занялся компьютерной журналистикой и написал статью о JavaScript, когда был в журнале Windows. Когда WinMag закрыл свои двери, я стал одним из основателей стартапа, который создал системную утилиту на основе JavaScript и HTML для Windows, которая в основном автоматизировала многие советы, которые мы использовали в журнале.


Когда я был на старте, я искал лучший способ организовать JavaScript и HTML, которые мы писали. Я видел сообщение в блоге Джона Ресига 2005 года, описывающее то, что в итоге стало jQuery. Я отправил ему электронное письмо, и он ответил, что настраивает список рассылки для заинтересованных людей.

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

Многие из них до сих пор работают над проектом. Это один из малоизвестных талантов Джона и основная причина раннего успеха jQuery; он очень инклюзивен и открыт для участия всех.


Ханская академия

Я официально взял бразды правления jQuery Core в июле 2011 года, хотя до этого я довольно много работал над этим. А почему? Я думаю, что Джон искал свой следующий большой вызов, который он, кажется, нашел в Академии Хана .


Успех jQuery затруднил нам что-либо изменить, даже если это изменение в лучшую сторону, например, исправление ошибки или улучшение согласованности API. Поскольку около половины всех интернет-сайтов используют jQuery, мы можем быть уверены, что любое изменение, внесенное в библиотеку, будет для кого-то критическим. Несмотря на то, что мы делаем бета-версии, подавляющему большинству пользователей нравится ждать, пока он не станет окончательным, прежде чем пробовать новый код — это означает, что мы часто теряем сознание, когда дело доходит до понимания последствий изменений.


jQuery Core — это библиотека для упрощения поиска, обработки и поиска документов HTML.

Когда в 2006 году появился jQuery, веб-разработчики знали причуды браузеров и были рады, что jQuery довел их до 90-процентной отметки для кросс-браузерной совместимости. Многие из сегодняшних разработчиков никогда не жили в этом мире и удивляются, что jQuery не может сделать так, чтобы всякая маленькая разница исчезла из браузеров. Но есть пределы тому, насколько хорошо мы можем обойти проблемы браузера; разработчики должны это понимать. Во многих случаях решение использует простое исправление на уровне приложения или использует плагин, который решает какой-то конкретный редкий случай.


Баг трекер

Приоритеты ошибок определяются тем, являются ли они регрессией, их общим влиянием на сообщество, их серьезностью и сложностью исправления. Большинство проблем, не связанных с регрессией, — это крайние случаи или ошибки браузера, которые переходят в API jQuery. Наша задача состоит в том, чтобы исправить их, не создавая массу сложных обходных путей, в которых большинство людей не нуждается, и не допуская дальнейших ошибок в процессе.


Поскольку jQuery позволяет легко объединить несколько удивительных эффектов, используя всего несколько строк кода и некоторые сторонние плагины jQuery, неизбежно, что непрофессионалы попробуют свои силы в его использовании. Иногда они добиваются успеха, а иногда они создают большой беспорядок, в который кто-то должен прийти и навести порядок. Я не вижу никакого решения этой «проблемы», кроме как сделать jQuery более тупым, чтобы это могли понять только профессиональные программисты. Это не произойдет.


Даже если вы используете IE 6/7/8, в jQuery есть много кода для сглаживания ошибок и несоответствий браузера. Я был немного расстроен, увидев, сколько из этих строк должно было остаться для jQuery 2.0. Похоже, что все производители браузеров слишком заняты реализацией блестящих новых функций, таких как CSS3, чтобы вернуться и исправить основные функции. И зачем им это исправлять, так как jQuery это исправляет, и поэтому им никто не жалуется?


угловатый

В инфраструктуре MV * библиотеки DOM появились шесть или семь лет назад, когда появился jQuery. Их подход к дизайну очень разнообразен, и это хорошо. Большинство этих фреймворков с радостью позволяют jQuery решать кросс-браузерные проблемы DOM, чтобы они могли сосредоточиться на более высоком уровне проектирования приложений. Мы определенно дополняем их усилия.


Мне нравится шутить: «Ядро не готово, пока пользовательский интерфейс не запустится».

jQuery Core — это библиотека для упрощения поиска, обработки и поиска документов HTML. Иногда люди хотят раздвинуть границы и спросить, почему мы не поддерживаем SVG, VML или другие веб-технологии, но для этого нужны плагины. Мы хотим, чтобы API jQuery был ориентирован на операции DOM. Если вы выйдете за пределы основной библиотеки, это добавит много раздувания, в котором мало кто нуждается.


jQuery Core может использоваться как модуль с именем AMD и загружаться динамически. В общем, именованные модули не одобряются, но многие плагины jQuery ожидают, что они совместно используют глобальный объект jQuery. Меня не устраивает текущее состояние загрузки модуля JavaScript, и я предпочитаю простой процесс объединения и минимизации для большей части работы, которую я выполняю. Тем не менее, AMD достаточно популярна, поэтому мы хотели, чтобы jQuery Core поддерживал ее, чтобы пользователи AMD могли, например, загружать jQuery из CDN.


На обходные пути для IE 6/7/8 приходится более десяти процентов от общего размера библиотеки jQuery 1.9, и эти обходные пути также влияют на производительность. Есть много мест, где эти обходные пути просто не нужны, такие как приложения для Windows 8, плагины Chrome и Firefox, приложения PhoneGap / Cordova на определенной мобильной платформе или программы node.js, где для загрузки jQuery используется библиотека, такая как Cheerio.

Это основная аудитория для jQuery 2.0 на данный момент; большинство веб-сайтов в Интернете должны продолжать поддерживать эти старые версии IE, используя jQuery 1.9.

Например, я не могу видеть сайты Target или Wal-Mart, использующие jQuery 2.0, по крайней мере несколько лет; У пользователей IE8 тоже есть деньги! Поскольку оба API синхронизированы, можно использовать условные комментарии для включения одного или другого для конкретного браузера, но, честно говоря, я не думаю, что это стоит усилий.


jQuery Mobile

Поскольку jQuery UI и Mobile зависят от Core, мы консультируем их по вопросам дорожной карты, где это необходимо. Эти проекты также запускают свои модульные тесты на нашей последней сборке непосредственно с Github, чтобы мы сразу знали, что мы что-то сломали. Тем не менее, мне нравится шутить, что «ядро не готово до тех пор, пока пользовательский интерфейс не запустится», и обычно есть несколько глюков, которые мы обнаруживаем после каждого выпуска. QUnit немного отличается; мы их клиент. Иногда мы спрашиваем их о возможностях, а иногда их обновления нарушают наши модульные тесты. Таким образом, мы получаем вкус нашего собственного лекарства.


Мы рассматриваем jQuery Conference как собрание для разработчиков, которые создают веб-сайты и веб-приложения. Кое-что из того, что они хотят знать, касается jQuery, но мы не хотим останавливаться на достигнутом. Любой хороший разработчик должен расширить свой кругозор и продолжать изучать инструменты и методы, которые могут помочь им улучшить.


Инновации идут со всех сторон. Войны с фреймворком MV *, вероятно, дадут гораздо лучшие и более быстрые подходы к разработке веб-приложений и сайтов; без сомнения, мы увидим некоторую консолидацию, похожую на ту, которая произошла с jQuery.

Адаптивный дизайн — еще одна важная тема, и я надеюсь, что улучшения в CSS и адаптивных изображениях облегчат реализацию в следующем году.

Что касается последнего пункта, jQuery работает с группами стандартов в W3C и ECMA, чтобы гарантировать, что веб-разработчики в окопах представлены при принятии решений.