WebKit
Быстрый движок веб-браузера с открытым исходным кодом. WebKit это движок веб-браузера, используемый в Safari, Mail, App Store и многих других приложениях на macOS, iOS и Linux. Начните вносить свой код или сообщать об ошибках. Веб-разработчики могут следить за развитием, проверять статус функций, загружать Safari Technology Preview, чтобы опробовать новейшие веб-технологии, и сообщать об ошибках.
Проект WebKit с открытым исходным кодом
Введение
WebKit - это движок веб-контента с открытым исходным кодом для браузеров и других приложений. Мы ценим совместимость с реальным миром, соответствие стандартам, стабильность, производительность, время автономной работы, безопасность, конфиденциальность, переносимость, удобство использования и относительную простоту понимания и модификации кода (взламываемость).
Цели проекта
Механизм создания веб-контента
Основным направлением проекта является развертывание контента во Всемирной паутине с использованием основанных на стандартах технологий, таких как HTML, CSS, JavaScript и DOM. Однако мы также хотим сделать возможным встраивание WebKit в другие приложения и использовать его как универсальный механизм отображения и взаимодействия.
Открытый исходный код
WebKit должен оставаться свободно используемым как для приложений с открытым исходным кодом, так и для проприетарных приложений. Для этого мы используем лицензии BSD и LGPL. В частности, мы стремимся к лицензированию, совместимому с LGPL 2.1+. В настоящее время мы не планируем переходить на LGPL 3. Кроме того, мы стремимся создать вежливую, гостеприимную среду, которая будет понятна новичкам. WebKit поддерживает публичный IRC-чат и публичный список рассылки, где идеи новых и старых участников выслушиваются и обсуждаются с равным весом.
Совместимость
Для пользователей, просматривающих веб-страницы, очень важна совместимость с существующими сайтами. Мы стремимся поддерживать и улучшать совместимость с существующим веб-контентом, иногда даже в ущерб стандартам. Для поддержания совместимости мы используем регрессионное тестирование.
Соответствие стандартам
WebKit стремится к соблюдению соответствующих веб-стандартов и поддержке новых стандартов. Помимо улучшения соответствия стандартам, мы участвуем в сообществе веб-стандартов, чтобы ввести новые технологии в стандарты и убедиться, что новые стандарты практически реализуемы в нашем движке. Для поддержания соответствия стандартам мы используем регрессионное тестирование.
Стабильность
Основная кодовая база WebKit должна всегда поддерживать высокую степень стабильности. Это означает, что сбои, зависания и регрессии должны устраняться оперативно, а не позволять им накапливаться.
Производительность
Поддержание и улучшение скорости работы и использования памяти является важной целью. Мы никогда не считаем производительность достаточно хорошей, а стремимся к постоянному улучшению. Поскольку веб-контент становится все более насыщенным и сложным, а веб-браузеры работают на более ограниченных устройствах, повышение производительности имеет значение, даже если обычный просмотр веб-страниц кажется достаточно быстрым. Мы считаем скорость, использование памяти, отзывчивость и частоту кадров важными аспектами производительности.
Время работы от батареи
В дополнение к традиционным показателям производительности мы стремимся минимизировать энергопотребление, чтобы максимально увеличить время автономной работы браузера на портативных устройствах.
Безопасность
Защита пользователей от нарушений безопасности очень важна. Мы оперативно устраняем проблемы безопасности, чтобы защитить пользователей и сохранить их доверие.
Конфиденциальность
Мы считаем, что конфиденциальность - это право человека. Код WebKit не будет отслеживать пользователя или иным образом нарушать его конфиденциальность. И мы будем стремиться к тому, чтобы не позволить веб-сайтам и другим сторонам делать это.
Переносимость
Проект WebKit направлен на удовлетворение различных потребностей. Мы хотим сделать разумным перенос WebKit на различные настольные, мобильные, встроенные и другие платформы. Мы предоставим инфраструктуру для этого с тесной интеграцией платформ, повторным использованием сервисов родной платформы, где это необходимо, и предоставим дружественные API для встраивания.
Юзабилити
В той степени, в которой функции WebKit влияют на пользовательский опыт, мы хотим, чтобы они работали в соответствии с хорошими принципами проектирования человеческого интерфейса и хорошо сочетались с родными для платформы соглашениями HI. Кроме того, мы стремимся к интеграции с функциями доступности платформы, чтобы обеспечить доступ для всех пользователей, включая людей с ограниченными возможностями.
Взломостойкость
Чтобы обеспечить быстрый прогресс, мы стараемся, чтобы код был относительно простым для понимания, несмотря на то, что веб-технологии часто бывают сложными. Мы стараемся использовать простые алгоритмы и структуры данных, когда это возможно, мы стараемся писать понятный, ремонтопригодный код, и мы продолжаем совершенствовать имена и структуру кода, чтобы облегчить понимание. Если для решения какой-то проблемы действительно необходим сложный "ракетостроительный" код, мы стараемся держать его за чистыми интерфейсами. Кроме того, мы активно используем автоматизированные регрессионные тесты в качестве подстраховки, чтобы позволить агрессивные изменения с меньшим риском регрессий.
Чем не является WebKit
Время от времени возникают некоторые моменты, которые мы считаем выходящими за рамки проекта.
WebKit - это движок, а не браузер.
Мы не планируем разрабатывать или размещать полнофункциональный веб-браузер на основе WebKit. Другие, конечно, могут это сделать.
WebKit - это инженерный, а не научный проект.
Для внедрения новых функций в WebKit мы настоятельно рекомендуем, чтобы технология или хотя бы сценарий ее использования были доказаны.
WebKit не является набором максимально общего и многократно используемого кода.
Мы создаем некоторые части общего назначения, но только в той степени, которая необходима для того, чтобы быть хорошим движком веб-контента.
WebKit не является решением всех проблем.
Мы фокусируемся на веб-контенте, а не на готовых решениях для всех мыслимых технологических потребностей.