Анализ сайта kerneltrap.org
Основное Готовность: 85%
Домен
kerneltrap.org
Состояние доменного имени
?
Проверяем корректность доменного имени и наличие технических проблем на уровне домена.
Домен второго уровня идеален для продвижения.
Отличный запоминающийся домен.
Ответ сервера
200 Успешный ответ
HTTP-код ответа и цепочка редиректов
?
Код 200 — страница доступна. Коды 3xx — редиректы (цепочки замедляют загрузку и размывают ссылочный вес). Коды 4xx/5xx — ошибки, поисковик не сможет проиндексировать страницу.
Кол-во редиректов 4 слишком большое! Проверьте настройки сайта и веб-сервера!
Цепочка редиректов:
http://kerneltrap.org
302 Found
https://www.tag1consulting.com/blog/interview-linus-torvalds-linux-and-git
301 MovedPermanently
https://www.tag1.com/blog/interview-linus-torvalds-linux-and-git
301 MovedPermanently
https://www.tag1.com/blog/interview-linus-torvalds-linux-and-git/
200 OK
Безопасность
Сайт безопасен
Использование HTTPS и SSL-сертификат
?
HTTPS — обязательный стандарт. Google и Яндекс отдают предпочтение защищённым сайтам. Отсутствие SSL или просроченный сертификат ведут к предупреждениям в браузере и снижению позиций.
На сайте работает защищенный протокол ssl и сайт открывается по https.
Ssl-сертификат действителен до 24.10.2026 20:17:16.
Включён HSTS (Strict-Transport-Security) — защита от подмены на http.
HTTP автоматически перенаправляется на HTTPS.
Поздравляем! Сайт не содержится в реестре РКН.
Кодировка
utf-8
Кодировка символов страницы
?
Стандарт — UTF-8. Неправильная кодировка вызывает нечитаемые символы и мешает поисковику корректно распознать текст страницы.
Указана кодировка на странице utf-8.
Язык
en
Атрибут lang в HTML-теге
?
Атрибут lang (<html lang="ru">) сообщает поисковикам и браузерам, на каком языке написана страница. Помогает при ранжировании в региональном поиске.
Язык документа указан явно: en.
Скорость загрузки
~1,96сек
Время отклика сервера (TTFB)
?
Time To First Byte — время до получения первого байта от сервера. Норма до 200 мс. Медленный отклик ухудшает пользовательский опыт и ранжирование: Яндекс и Google учитывают скорость страниц.
Скорость загрузки сайта 1,96сек превышает 1 секунду. Желательно улучшить работу сайта!
Объем документа
125Кб
Размер HTML-кода страницы
?
Слишком большой HTML замедляет парсинг браузером и сканирование поисковым роботом. Рекомендуется не более 200 Кб.
Объем html-документа 125Кб оптимален.
Структура html-документа корректна.
Ресурсы
Ресурсы: 9
Внешние ресурсы страницы (CSS, JS, изображения)
?
Количество и тип подключённых ресурсов влияют на скорость загрузки. Большое число запросов увеличивает время рендеринга страницы.
Кол-во файлов ресурсов 9 достаточно.
Показать полный список ресурсов
| Тип | Название | Значение |
|---|---|---|
| stylesheet | /css/style.css?v=d5eccfba147decccf2ccd38fd9c33da5 | |
| stylesheet | /css/prism-atom-dark.css?v=634c324893cafe523d44e2620a390ff4 | |
| js | https://app.rybbit.io/api/script.js | |
| js | https://static.addtoany.com/menu/page.js | |
| js | https://static.addtoany.com/menu/page.js | |
| js | /js/search.js?v=9663e854821807c5cbb672f8f14d00bf | |
| js | /js/alpine.js?v=f891a55946cb6efd8713052fe91dca3e | |
| js | https://static.cloudflareinsights.com/beacon.min.js | |
| js | module | https://static.cloudflareinsights.com/beacon.min.js/v4513226cdae34746b4dedf0b4dfa099e1781791509496 |
Серверные заголовки
Кол-во: 12
HTTP-заголовки ответа сервера
?
Заголовки сервера передают браузеру и поисковику служебную информацию: кеширование, безопасность (CSP, HSTS), сжатие (gzip). Правильная настройка ускоряет загрузку и повышает защищённость.
Найдены серверные заголовки 12шт. Подробнее про серверные заголовки.
Показать полный список серверных заголовков
| Ключ | Значение |
|---|---|
| Date | Sun, 23 Aug 2026 18:54:10 GMT |
| X-Content-Type-Options | nosniff |
| report-to | {"group":"cf-nel","max_age":604800,"endpoints":[{"url":"https://a.nel.cloudflare.com/report/v4?s=rm8HDXhSiM7kAB314bAaUVmYTLT%2Bwv5LD4Ec9gunoJziRNqQFUb3li1GaLrc0vXn5CLOJ2LEF04iTkl5GmspwkDZzZF3xfpIGXchRS9%2B8F2446P2v8fd2VzT1ZUqzaY%3D"}]} |
| nel | {"report_to":"cf-nel","success_fraction":0.0,"max_age":604800} |
| Access-Control-Allow-Origin | * |
| Cache-Control | public, must-revalidate, max-age=0 |
| Referrer-Policy | strict-origin-when-cross-origin |
| Strict-Transport-Security | max-age=2592000; includeSubDomains |
| Server | cloudflare |
| Server-Timing | cfCacheStatus;desc="DYNAMIC" |
| cf-cache-status | DYNAMIC |
| cf-ray | a2fc53020abaf115-DME |
CMS
Система управления сайтом (движок)
?
CMS — это движок, на котором работает сайт (WordPress, 1C-Bitrix, Tilda и др.). Знание CMS помогает понять возможности SEO-оптимизации и подобрать подходящие инструменты. «Не определена» — вероятно, самописный сайт или нестандартная сборка.
Сайт работает на CMS Drupal.
Веб-сервер
Программное обеспечение сервера
?
Веб-сервер — это ПО, которое отдаёт страницы посетителям (nginx, Apache, IIS, LiteSpeed и др.). Определяется по серверным заголовкам ответа (Server, X-Powered-By и т.п.). «Не определён» — сервер намеренно скрывает эти заголовки, это нормальная практика безопасности.
Сайт работает на веб-сервере Cloudflare.
Мета-теги Готовность: 23%
Title
An Interview With Linus Torvalds: Linux and Git - Part 1 - Tag1 Insights
Заголовок страницы в браузере и поисковой выдаче
?
Title — главный SEO-заголовок страницы. Влияет на CTR в поиске и ранжирование. Оптимальная длина: 50–70 символов. Ключевые слова — ближе к началу.
Необходимо уменьшить число символов в title (текущее значение: 72, оптимально: от 40 до 45)
Дублей словоформ в title не найдено.
Description
An Interview With Linus Torvalds: Linux and Git - Part 1 30 Years Of Linux Jeremy Andrews - Founding Partner/CEO April 28, 2021 Share /* Hide More...
Описание страницы в поисковой выдаче (сниппет)
?
Meta Description — текст под заголовком в выдаче. Напрямую на позиции не влияет, но влияет на CTR. Оптимальная длина: 120–160 символов.
Необходимо уменьшить число символов в description (текущее значение: 149, оптимально: от 120 до 130)
Keywords
Список ключевых слов страницы (устаревший тег)
?
Meta Keywords не учитывается Яндексом и Google для ранжирования с 2009–2012 годов. Заполнение не обязательно, но не вредит. Конкурент может использовать содержимое для анализа.
Установите мета-тег keywords!
Канонический Url
https://www.tag1.com/blog/interview-linus-torvalds-linux-and-git/
Указывает поисковику основную версию страницы
?
Canonical (rel=canonical) предотвращает проблему дублей страниц. Должен точно совпадать с URL проверяемой страницы. Неправильный canonical может передать ссылочный вес на другую страницу.
Канонический Url прописан корректно.
Robots
index, follow
Директивы для поисковых роботов на уровне страницы
?
Meta Robots управляет индексацией конкретной страницы: index/noindex — индексировать ли, follow/nofollow — следовать ли по ссылкам. Noindex полностью исключает страницу из поиска.
Meta-тег robots со значениями index, follow не накладывает ограничений на индексирование и показ контента.
Адаптивность
width=device-width, initial-scale=1.0
Настройка масштабирования на мобильных устройствах
?
Тег viewport (<meta name="viewport">) сообщает браузеру, как масштабировать страницу на мобильных. Стандарт: width=device-width, initial-scale=1. Отсутствие — признак отсутствия мобильной версии.
Meta-тег viewport со значением-константой width=device-width задаёт ширину страницы в соответствии с размером экрана.
Meta-тег viewport со значением initial-scale=1.0 определяет масштаб 1:1, т.е. «не масштабировать».
Разметка OpenGraph
Кол-во: 6
Мета-теги для красивых превью в соцсетях
?
OpenGraph (og:title, og:description, og:image) управляет тем, как страница выглядит при репосте в социальных сетях и мессенджерах. Отсутствие OG-тегов — невзрачный превью при шеринге.
Разметка OpenGraph задана. Страница оптимизирована под социальные сети.
Показать полный список og мета-тегов
| Тип | Значение |
|---|---|
| og:site_name | Tag1 |
| og:title | An Interview With Linus Torvalds: Linux and Git - Part 1 |
| og:type | article |
| og:url | https://www.tag1.com/blog/interview-linus-torvalds-linux-and-git/ |
| og:description | An Interview With Linus Torvalds: Linux and Git - Part 1 30 Years Of Linux Jeremy Andrews - Founding Partner/CEO April 28, 2021 Share /* Hide More... |
| og:image | https://www.tag1.com/img/built/WyYXSJ8o0T-1020.jpeg |
Все мета-теги
Кол-во: 11
Полный список мета-тегов страницы
?
Таблица всех meta-тегов, включая нестандартные. Позволяет найти опечатки, дубли и лишние теги.
Найдены мета-теги 11шт. Мета-теги не видимы для человека и предназначены для обмена информацией между веб-страницей и поисковыми системами, браузерами и другими веб-службами. С ними роботы 🤖 и устройства ведут себя более ожидаемо.
Показать полный список мета-тегов
| Тип | Название | Значение |
|---|---|---|
| name | description | An Interview With Linus Torvalds: Linux and Git - Part 1 30 Years Of Linux Jeremy Andrews - Founding Partner/CEO April 28, 2021 Share /* Hide More... |
| name | viewport | width=device-width, initial-scale=1.0 |
| name | Generator | Drupal 11 (https://www.drupal.org) |
| name | robots | index, follow |
| name | author | Tag1 |
| property | og:site_name | Tag1 |
| property | og:title | An Interview With Linus Torvalds: Linux and Git - Part 1 |
| property | og:type | article |
| property | og:url | https://www.tag1.com/blog/interview-linus-torvalds-linux-and-git/ |
| property | og:description | An Interview With Linus Torvalds: Linux and Git - Part 1 30 Years Of Linux Jeremy Andrews - Founding Partner/CEO April 28, 2021 Share /* Hide More... |
| property | og:image | https://www.tag1.com/img/built/WyYXSJ8o0T-1020.jpeg |
Оптимизация Готовность: 82%
Структура
Ошибок нет
Семантические HTML-элементы страницы
?
Проверяет наличие основных структурных элементов: nav, header, footer, main. Корректная семантическая структура помогает поисковику понять архитектуру страницы.
Структура документа корректна (теги <html> и <body> присутствуют в единственном экземпляре).
Контент
Ошибок нет
Объём и качество текстового содержимого
?
Анализирует объём полезного текста на странице. Слишком мало — страница может считаться малополезной. Слишком много — ухудшается читаемость и восприятие.
Слова из title 12 встречаются в тексте достаточно.
Абзацев с текстом 145 достаточно.
Среднее число слов в абзаце 52 достаточно.
Кол-во знаков контента 46006 на странице оптимально.
Кол-во слов 8060 на странице оптимально.
Заголовки
Ошибок нет
Иерархия заголовков H1–H6
?
H1 должен быть один и содержать ключевой запрос. H2–H6 описывают подразделы. Пропуск уровней (H1 → H3) и несколько H1 — типичные ошибки, снижающие понятность страницы для поисковика.
На странице присутствуют заголовки <h1> 1. Это прекрасно.
На странице присутствуют заголовки <h2> 17. Это хорошо.
На странице присутствуют заголовки <h3> 1.
Тошнота
6,93
Насколько одно слово доминирует в тексте
?
Классическая тошнота = √(частота самого повторяющегося слова). Норма до 7–8: текст воспринимается естественно. Выше — поисковик может счесть страницу переспамленной.
Тошнота превышает норму 5. Измените текст страницы!
Академич. тошнота
34,76%
Насколько текст перенасыщен ключевыми словами
?
Академическая тошнота = (частота слова / общее количество слов) × 100%. Показывает долю конкретного слова в тексте. Норма 5–15%.
Академическая тошнота превышает норму 5-15%. Измените текст страницы!
Семантическое ядро
20
Наиболее часто встречающиеся слова на странице
?
Топ слов по частоте использования. Показывает, какие слова доминируют в тексте с точки зрения поисковика.
Контент страницы содержит осмысленный текст и слова.
Показать список слов
| Слово | Кол-во | Частота |
|---|---|---|
| people | 48 | 0,60% |
| really | 45 | 0,56% |
| kernel | 41 | 0,51% |
| because | 31 | 0,38% |
| development | 26 | 0,32% |
| source | 23 | 0,29% |
| project | 19 | 0,24% |
| actually | 19 | 0,24% |
| things | 19 | 0,24% |
| release | 16 | 0,20% |
| always | 15 | 0,19% |
| services | 14 | 0,17% |
| hardware | 13 | 0,16% |
| around | 13 | 0,16% |
| system | 12 | 0,15% |
| become | 12 | 0,15% |
| that's | 12 | 0,15% |
| something | 12 | 0,15% |
| license | 12 | 0,15% |
| fairly | 12 | 0,15% |
Индексация Готовность: 0%
Индексирование
Ошибок нет
Разрешено ли индексирование страницы
?
Проверяет, не закрыта ли страница от индексации через robots.txt, meta robots или X-Robots-Tag. Страница, закрытая от индексации, не появится в поисковой выдаче.
Анкоров на странице 105 оптимально. Поисковые роботы обязательно проиндексируют сайт.
Robots.txt
Найден корректный robots.txt
Файл управления сканированием сайта роботами
?
Robots.txt указывает поисковым роботам, какие страницы сканировать, а какие — нет. Ошибки в файле могут случайно закрыть важные разделы от индексации.
Кол-во редиректов для файла robots.txt 4 слишком большое! Это может вызывать затруднение при индексации поисковыми роботами!
Проверяемая страница не запрещена в robots.txt.
Robots.txt доступен по постоянному адресу
Цепочка редиректов для файла robots.txt:
http://kerneltrap.org/robots.txt
302 Found
https://www.tag1consulting.com/blog/interview-linus-torvalds-linux-and-git
301 MovedPermanently
https://www.tag1.com/blog/interview-linus-torvalds-linux-and-git
301 MovedPermanently
https://www.tag1.com/blog/interview-linus-torvalds-linux-and-git/
200 OK
Показать содержимое robots.txt
<!doctype html>
<html lang="en">
<head>
<script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
})(window,document,'script','dataLayer','GTM-KXTHG6W');</script>
<script src="https://app.rybbit.io/api/script.js" data-site-id="f0cfcce7d81b" defer=""></script>
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "TechArticle",
"name": "An Interview With Linus Torvalds: Linux and Git - Part 1",
"author": {
"@type": "Person",
"name": "Jeremy Andrews",
"givenName": "Jeremy",
"familyName": "Andrews",
"jobTitle": "Founding Partner/CEO",
"description": "Jeremy Andrews is the Founding Partner and CEO of Tag1 Consulting, which he established in 2007 and has grown into a worldwide team.",
"sameAs": [
"https://www.linkedin.com/in/jeremyandrews",
"https://www.drupal.org/u/Jeremy"
],
"worksFor": {
"@type": "Organization",
"name": "Tag1",
"legalName": "Tag1 Consulting, Inc.",
"url": "https://www.tag1.com",
"logo": "https://www.tag1.com/img/ui/logos/tag1/logo.svg"
},
"isPartOf": {
"@type": "Collection",
"name": "Tag1 Company Leadership",
"description": "Team members in Company Leadership at Tag1 Consulting",
"collectionSize": 7,
"publisher": {
"@type": "Organization",
"name": "Tag1",
"legalName": "Tag1 Consulting, Inc.",
"url": "https://www.tag1.com",
"logo": "https://www.tag1.com/img/ui/logos/tag1/logo.svg"
},
"url": "https://www.tag1.com/team/#company-leadership",
"isPartOf": {
"@type": "Collection",
"name": "Tag1 Team",
"description": "Team members across all departments at Tag1 Consulting",
"collectionSize": 66,
"publisher": {
"@type": "Organization",
"name": "Tag1",
"legalName": "Tag1 Consulting, Inc.",
"url": "https://www.tag1.com",
"logo": "https://www.tag1.com/img/ui/logos/tag1/logo.svg"
},
"url": "https://www.tag1.com/team/"
}
}
},
"url": "https://www.tag1.com/blog/interview-linus-torvalds-linux-and-git/",
"datePublished": "2021-04-28T00:00:00.000Z",
"isPartOf": {
"@type": "Collection",
"name": "Tag1 Blog Posts",
"description": "Technical articles and insights from Tag1 Consulting",
"collectionSize": 266,
"publisher": {
"@type": "Organization",
"name": "Tag1",
"legalName": "Tag1 Consulting, Inc.",
"url": "https://www.tag1.com",
"logo": "https://www.tag1.com/img/ui/logos/tag1/logo.svg"
},
"dateModified": "2026-08-06T00:00:00.000Z",
"url": "https://www.tag1.com/insights/?type=blogPosts#selected"
}
}
</script>
<title>An Interview With Linus Torvalds: Linux and Git - Part 1 - Tag1 Insights</title>
<meta name="description" content="An Interview With Linus Torvalds: Linux and Git - Part 1 30 Years Of Linux Jeremy Andrews - Founding Partner/CEO April 28, 2021 Share /* Hide More...">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta charset="utf-8">
<meta name="Generator" content="Drupal 11 (https://www.drupal.org)">
<meta name="robots" content="index, follow">
<meta name="author" content="Tag1">
<meta property="og:site_name" content="Tag1">
<meta property="og:title" content="An Interview With Linus Torvalds: Linux and Git - Part 1">
<meta property="og:type" content="article">
<meta property="og:url" content="https://www.tag1.com/blog/interview-linus-torvalds-linux-and-git/">
<meta property="og:description" content="An Interview With Linus Torvalds: Linux and Git - Part 1 30 Years Of Linux Jeremy Andrews - Founding Partner/CEO April 28, 2021 Share /* Hide More...">
<meta property="og:image" content="https://www.tag1.com/img/built/WyYXSJ8o0T-1020.jpeg">
<link rel="icon" href="/favicon.ico?v=73ad330e54b76e6e27f0a11cafa63021" sizes="any">
<link rel="icon" href="/favicon.svg?v=bc525df97536295f9307c87661be0f14" type="image/svg+xml">
<link rel="apple-touch-icon" href="/apple-touch-icon.png?v=76da9023dbe36cb7c416a77a33747a41">
<link rel="manifest" href="/manifest.webmanifest?v=037b9db4e23f061c5df9629abc0082ab">
<link rel="canonical" href="https://www.tag1.com/blog/interview-linus-torvalds-linux-and-git/">
<link rel="stylesheet" href="/css/style.css?v=d5eccfba147decccf2ccd38fd9c33da5">
<link rel="stylesheet" href="/css/prism-atom-dark.css?v=634c324893cafe523d44e2620a390ff4">
<link rel="preload" href="/fonts/StyreneA-Regular-Web.woff2?v=3636510c352aaf06b5e2644841375ca1" as="font" type="font/woff2" crossorigin="">
<link rel="preload" href="/fonts/StyreneB-Regular-Web.woff2?v=e7967329a3e25484f77d6818ec319c68" as="font" type="font/woff2" crossorigin="">
</head>
<body class="font-sans leading-normal tracking-normal text-grey-dark">
<!-- Add skip link here as first element -->
<a href="#main-content" class="sr-only focus:not-sr-only focus:absolute focus:top-0 focus:left-0 focus:z-50 focus:p-4 focus:bg-white focus:text-navy focus:underline focus:shadow-lg">
Skip to main content
</a>
<noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-KXTHG6W" height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "WPHeader",
"name": "Site Header",
"description": "Main site header for Tag1 Consulting",
"url": "https://www.tag1.com",
"hasPart": {
"@type": "SiteNavigationElement",
"name": "Main Navigation",
"url": "https://www.tag1.com",
"hasPart": [
{
"@type": "SiteNavigationElement",
"name": "What We Do",
"url": "https://www.tag1.com/what-we-do/"
},
{
"@type": "SiteNavigationElement",
"name": "Innovations",
"url": "https://www.tag1.com/innovations/"
}
]
}
}
</script>
<header class="border-b border-light-grey" data-pagefind-ignore="">
<div class="container flex flex-row items-start md:items-center py-4 md:py-0 md:h-[70px] relative">
<a href="/" aria-label="Home" class="w-28"><svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 288 80" style="fill: currentColor" xml:space="preserve" class="text-orange">
<polygon points="4.5,18.8 26.3,18.8 26.3,74.4 52.2,74.4 56.5,60.2 42.7,60.2 42.7,18.8 64,18.8 64,5.2 4.5,5.2 "></polygon>
<polygon points="67.3,74.5 84.2,74.5 103.7,5.2 86.8,5.2 "></polygon>
<polygon points="104.9,5.2 124.2,74.5 141.1,74.5 121.9,5.2 "></polygon>
<polygon points="261.4,60.8 261.4,5.2 235.4,5.2 231.2,19.4 245,19.4 245,60.8 223.7,60.8 223.7,74.4 283.2,74.4 283.2,60.8 "></polygon>
<path d="M185.7,48.6H200v9.7c-4.6,2.3-9.7,3.3-14.8,3.1c-14.4,0-22.6-9.3-22.6-22.3c0-12.2,7.5-21.4,19.5-21.5
c5.1-0.3,10.1,1.5,13.9,4.9l6-14.8c-6.1-3.3-13-4.9-19.9-4.7c-21.4,0-36.4,15.1-36.4,36.2c0,22.1,15.3,36.7,39.2,36.7
c16.7,0,27.4-6.4,31.3-9.9V34.9h-24.8L185.7,48.6z"></path>
</svg></a>
<nav id="primary-navigation" aria-label="Primary Navigation" x-data="megaMenuComponent()" x-on:keyup.escape.window="openItems.size == 0 ? (showMenu = false) : openItems.clear()" x-on:click.outside="showMenu = false; openItems.clear()" x-on:click.self="showMenu = false; openItems.clear()" class="flex flex-col h-full justify-center xl:items-center xl:flex-row xl:justify-end font-medium text-[0.875rem] font-headline">
<button aria-label="Toggle Main Menu" aria-expanded="false" x-bind:aria-expanded="showMenu" x-bind:aria-controls="menuId" x-on:click="showMenu = !showMenu" class="self-end xl:hidden">
<template x-if="!showMenu">
<svg fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" aria-hidden="true" class="size-6">
<path stroke-linecap="round" stroke-linejoin="round" d="M3.75 6.75h16.5M3.75 12h16.5m-16.5 5.25h16.5"></path>
</svg>
</template>
<template x-if="showMenu">
<svg width="26" height="26" viewBox="0 0 26 26" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M25 1L1 25M25 1L1 25" stroke="currentColor"></path><path d="M1 1L25 25M1 1L25 25" stroke="currentColor"></path>
</svg>
</template>
</button>
<ul x-bind:id="menuId" x-bind:class="{ 'hidden xl:flex': !showMenu }" class="flex flex-col justify-start items-center absolute top-full w-full h-screen left-0 px-4 z-20 border border-light-grey bg-white xl:px-0 xl:w-auto xl:h-full xl:flex-row xl:justify-end xl:static xl:border-0"><li x-data="{ subMenuId: $id('subMenu-what-we-do') }" class="text-jade xl:text-inherit flex flex-col xl:flex-row justify-center xl:items-center w-full xl:w-auto h-auto xl:h-full min-w-44 min-h-24 xl:min-h-12 static xl:static border-jade border-b xl:border-0"><button aria-label="What We Do" aria-expanded="false" x-bind:id="`${subMenuId}-button`" x-bind:aria-controls="subMenuId" x-bind:aria-expanded="openItems.has(subMenuId)" x-bind:class="{ 'font-bold bg-jade text-white': openItems.has(subMenuId) }" x-on:click="toggle($el, subMenuId)" x-on:keydown.enter.prevent="toggle($el, subMenuId)" x-on:keydown.space.prevent="toggle($el, subMenuId)" x-on:keydown.escape="closeAndFocusTrigger($el, subMenuId)" class="text-2xl xl:text-[0.875rem] font-bold xl:uppercase flex flex-row flex-grow justify-between xl:justify-center items-center w-full h-full">
What We Do
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" class="h-8 w-8 xl:hidden" aria-hidden="true">
<path d="m9,18l6,-6l-6,-6" stroke-linecap="round" stroke-linejoin="round"></path>
</svg>
<svg viewBox="0 0 20 20" fill="currentColor" aria-hidden="true" tabindex="-1" class="transition-transform duration-200 size-5 group-[.is-open]:rotate-180 hidden xl:block">
<path fill-rule="evenodd" clip-rule="evenodd" d="M5.22 8.22a.75.75 0 0 1 1.06 0L10 11.94l3.72-3.72a.75.75 0 1 1 1.06 1.06l-4.25 4.25a.75.75 0 0 1-1.06 0L5.22 9.28a.75.75 0 0 1 0-1.06Z"></path>
</svg>
</button>
<div x-bind:id="subMenuId" x-show="openItems.has(subMenuId)" x-on:keydown.escape="closeAndFocusTrigger($el)" x-transition:enter="transition-all duration-300 ease-out xl:transition-none" x-transition:enter-start="-right-full xl:hidden" x-transition:enter-end="right-0 xl:flex" x-transition:leave="transition-all duration-300 ease-in xl:transition-none" x-transition:leave-start="right-0 xl:flex" x-transition:leave-end="-right-full xl:hidden" class="flex flex-col absolute top-0 xl:top-full gap-12 md:gap-8 border z-10 container w-full xl:left-0 border-[#C9C9C9] bg-[#F6FAFC] py-6 xl:py-10">
<button class="flex flex-row xl:mx-6 items-center font-bold text-2xl text-jade xl:hidden" aria-label="Close What We Do Menu" x-bind:aria-controls="subMenuId" x-on:click="openItems.delete(subMenuId)">
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" class="h-8 w-8 -ml-3 xl:-ml-0" aria-hidden="true"><path d="m15,18l-6,-6l6,-6" stroke-linecap="round" stroke-linejoin="round"></path></svg>
What We Do
</button>
<div class="flex flex-col flex-grow gap-12 xl:grid xl:grid-cols-3">
<section class="flex flex-col gap-4 content-start text-[0.875rem]">
<h2 class="h-12 uppercase font-bold text-navy text-lg">Website & Digital Platform Engineering</h2>
<hr class="my-0 mb-4 border-b text-jade">
<dl class="flex flex-col gap-8">
<div class="relative flex items-center bg-white border border-light-grey p-2 pl-4 -ml-4 gap-2">
<div>
<dt class="mb-1"><a href="/drupal/" class="font-bold font-text text-purple">Expert Drupal Services</a></dt>
<dd class="font-regular hidden xl:block">The Drupal experts behind the world's most demanding digital platforms</dd>
</div>
<div class="shrink-0">
<img src="/img/9NLh4H50J0-63.svg" alt="" class="max-h-20" loading="lazy" decoding="async" width="63" height="80">
</div>
</div>
<div class="relative flex items-center bg-white border border-light-grey p-2 pl-4 -ml-4 gap-2">
<div>
<dt class="mb-1"><a href="/wordpress/" class="font-bold font-text text-purple">Enterprise WordPress Services</a></dt>
<dd class="font-regular hidden xl:block">Expert engineering and uncompromising performance for WordPress at any scale</dd>
</div>
<div class="shrink-0">
<img src="/img/jPmoQ3-_pJ-63.svg" alt="" class="max-h-20" loading="lazy" decoding="async" width="63" height="80">
</div>
</div>
<div class="relative flex items-center">
<div>
<dt class="mb-1"><a href="/infrastructure/" class="font-bold font-text text-jade">Infrastructure & DevOps</a></dt>
<dd class="font-regular hidden xl:block">Mission-critical infrastructure that's secure, scalable, and built for what's next</dd>
</div>
</div>
<div class="relative flex items-center">
<div>
<dt class="mb-1"><a href="/migrations/" class="font-bold font-text text-jade">Migration Services</a></dt>
<dd class="font-regular hidden xl:block">Get moving with the right process and the real-world experience to back it up</dd>
</div>
</div>
<div class="relative flex items-center">
<div>
<dt class="mb-1"><a href="/web-development/" class="font-bold font-text text-jade">Web Development & Architecture</a></dt>
<dd class="font-regular hidden xl:block">Sites and platforms built to tackle the toughest digital challenges</dd>
</div>
</div>
<div class="relative flex items-center">
<div>
<dt class="mb-1"><a href="/continuous-development/" class="font-bold font-text text-jade">Continuous Development</a></dt>
<dd class="font-regular hidden xl:block">Experts who keep your systems fast, secure, and growing</dd>
</div>
</div>
</dl>
</section>
<section class="flex flex-col gap-4 content-start text-[0.875rem]">
<h2 class="h-12 uppercase font-bold text-navy text-lg">Web Performance & Scalability</h2>
<hr class="my-0 mb-4 border-b text-jade">
<dl class="flex flex-col gap-8">
<div class="relative flex items-center">
<div>
<dt class="mb-1"><a href="/audits/" class="font-bold font-text text-jade">Audit Services</a></dt>
<dd class="font-regular hidden xl:block">Comprehensive, end-to-end audits that leave no byte unturned</dd>
</div>
</div>
<div class="relative flex items-center">
<div>
<dt class="mb-1"><a href="/emergency/" class="font-bold font-text text-jade">Emergency Services</a></dt>
<dd class="font-regular hidden xl:block">When downtime threatens your business, every millisecond counts</dd>
</div>
</div>
<div class="relative flex items-center">
<div>
<dt class="mb-1"><a href="/performance/" class="font-bold font-text text-jade">Website Performance Management</a></dt>
<dd class="font-regular hidden xl:block">Confidently meet traffic spikes with fine-tuned scalability</dd>
</div>
</div>
</dl>
</section>
<section class="flex flex-col gap-4 content-start text-[0.875rem]">
<h2 class="h-12 uppercase font-bold text-navy text-lg">Strategic Technology Services</h2>
<hr class="my-0 mb-4 border-b text-jade">
<dl class="flex flex-col gap-8">
<div class="relative flex items-center bg-white border border-light-grey p-2 pl-4 -ml-4 gap-2">
<div>
<dt class="mb-1"><a href="/ai/" class="font-bold font-text text-purple">Artificial Intelligence (AI)</a></dt>
<dd class="font-regular hidden xl:block">Let's cut through the hype and put AI to work</dd>
</div>
<div class="shrink-0">
<img src="/img/Y67IwSHG1A-151.svg" alt="" class="max-h-20" loading="lazy" decoding="async" width="151" height="80">
</div>
</div>
<div class="relative flex items-center">
<div>
<dt class="mb-1"><a href="/architecture-leadership/" class="font-bold font-text text-jade">Architecture Leadership & Advisory Services</a></dt>
<dd class="font-regular hidden xl:block">Elevate your team with executive-level guidance and deep technical expertise</dd>
</div>
</div>
<div class="relative flex items-center">
<div>
<dt class="mb-1"><a href="/experience-design/" class="font-bold font-text text-jade">Experience Design & Strategy</a></dt>
<dd class="font-regular hidden xl:block">Creating human-centered experiences that align design, strategy, and technology</dd>
</div>
</div>
<div class="relative flex items-center">
<div>
<dt class="mb-1"><a href="/data-analytics/" class="font-bold font-text text-jade">Data Analytics</a></dt>
<dd class="font-regular hidden xl:block">Unlock meaningful insights with enterprise data analytics, data engineering, and business intelligence</dd>
</div>
</div>
</dl>
</section>
</div>
</div>
</li><li x-data="{ subMenuId: $id('subMenu-insights') }" class="text-jade xl:text-inherit flex flex-col xl:flex-row justify-center xl:items-center w-full xl:w-auto h-auto xl:h-full min-w-44 min-h-24 xl:min-h-12 static xl:static border-jade border-b xl:border-0"><a href="/insights/" class="text-2xl xl:text-[0.875rem] xl:uppercase flex flex-col justify-center flex-grow items-start xl:items-center xl:w-full h-full">Insights</a></li><li x-data="{ subMenuId: $id('subMenu-innovations') }" class="text-jade xl:text-inherit flex flex-col xl:flex-row justify-center xl:items-center w-full xl:w-auto h-auto xl:h-full min-w-44 min-h-24 xl:min-h-12 static xl:static border-jade border-b xl:border-0"><button aria-label="Innovations" aria-expanded="false" x-bind:id="`${subMenuId}-button`" x-bind:aria-controls="subMenuId" x-bind:aria-expanded="openItems.has(subMenuId)" x-bind:class="{ 'font-bold bg-jade text-white': openItems.has(subMenuId) }" x-on:click="toggle($el, subMenuId)" x-on:keydown.enter.prevent="toggle($el, subMenuId)" x-on:keydown.space.prevent="toggle($el, subMenuId)" x-on:keydown.escape="closeAndFocusTrigger($el, subMenuId)" class="text-2xl xl:text-[0.875rem] font-bold xl:uppercase flex flex-row flex-grow justify-between xl:justify-center items-center w-full h-full">
Innovations
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" class="h-8 w-8 xl:hidden" aria-hidden="true">
<path d="m9,18l6,-6l-6,-6" stroke-linecap="round" stroke-linejoin="round"></path>
</svg>
<svg viewBox="0 0 20 20" fill="currentColor" aria-hidden="true" tabindex="-1" class="transition-transform duration-200 size-5 group-[.is-open]:rotate-180 hidden xl:block">
<path fill-rule="evenodd" clip-rule="evenodd" d="M5.22 8.22a.75.75 0 0 1 1.06 0L10 11.94l3.72-3.72a.75.75 0 1 1 1.06 1.06l-4.25 4.25a.75.75 0 0 1-1.06 0L5.22 9.28a.75.75 0 0 1 0-1.06Z"></path>
</svg>
</button>
<div x-bind:id="subMenuId" x-show="openItems.has(subMenuId)" x-on:keydown.escape="closeAndFocusTrigger($el)" x-transition:enter="transition-all duration-300 ease-out xl:transition-none" x-transition:enter-start="-right-full xl:hidden" x-transition:enter-end="right-0 xl:flex" x-transition:leave="transition-all duration-300 ease-in xl:transition-none" x-transition:leave-start="right-0 xl:flex" x-transition:leave-end="-right-full xl:hidden" class="flex flex-col absolute top-0 xl:top-full gap-12 md:gap-8 border z-10 container w-full xl:left-0 border-[#C9C9C9] bg-[#F6FAFC] py-6 xl:py-10">
<button class="flex flex-row xl:mx-6 items-center font-bold text-2xl text-jade xl:hidden" aria-label="Close Innovations Menu" x-bind:aria-controls="subMenuId" x-on:click="openItems.delete(subMenuId)">
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" class="h-8 w-8 -ml-3 xl:-ml-0" aria-hidden="true"><path d="m15,18l-6,-6l6,-6" stroke-linecap="round" stroke-linejoin="round"></path></svg>
Innovations
</button>
<div class="flex flex-col flex-grow gap-12 xl:grid xl:grid-cols-3">
<section class="flex flex-col flex-shrink gap-4 content-start">
<div class="bg-white border border-light-grey px-8 py-10 gap-10 flex flex-col">
<h2 class="text-purple">Your challenges fuel our innovation</h2>
<p class="text-navy text-xl font-regular">Products, services and open-source contributions built to solve real-world digital challenges</p>
</div>
</section>
<section class="flex flex-col gap-4 content-start text-[0.875rem]">
<h2 class="h-12 uppercase font-bold text-navy text-lg">Drupal Innovations</h2>
<hr class="my-0 mb-4 border-b text-jade">
<dl class="flex flex-col gap-8">
<div class="relative flex items-center">
<div>
<dt class="mb-1"><a href="/workspaces/" class="font-bold font-text text-jade">Workspaces</a></dt>
<dd class="font-regular hidden xl:block">Say good-bye to your staging site and hello to true enterprise content staging for Drupal</dd>
</div>
</div>
<div class="relative flex items-center">
<div>
<dt class="mb-1"><a href="/drupal-migration-tooling/" class="font-bold font-text text-jade">Drupal Migration Tooling</a></dt>
<dd class="font-regular hidden xl:block">Get moving with the right process and the real-world experience to back it up</dd>
</div>
</div>
<div class="relative flex items-center">
<div>
<dt class="mb-1"><a href="/plus-suite/" class="font-bold font-text text-jade">Plus Suite</a></dt>
<dd class="font-regular hidden xl:block">The next-generation page-building experience standing on the shoulders of Layout Builder</dd>
</div>
</div>
<div class="relative flex items-center">
<div>
<dt class="mb-1"><a href="https://d7es.tag1.com" target="_blank" class="font-bold font-text text-jade">Drupal 7 Extended Support</a></dt>
<dd class="font-regular hidden xl:block">Need to keep running Drupal 7 after End of Life? No Problem!</dd>
</div>
</div>
</dl>
</section>
<div class="flex flex-col gap-8">
<section class="flex flex-col gap-4 content-start text-[0.875rem]">
<h2 class="h-12 uppercase font-bold text-navy text-lg">AI Innovations</h2>
<hr class="my-0 mb-4 border-b text-jade">
<dl class="flex flex-col gap-8">
<div class="relative flex items-center">
<div>
<dt class="mb-1"><a href="/scolta/" class="font-bold font-text text-jade">Scolta AI Search</a></dt>
<dd class="font-regular hidden xl:block">Platform-agnostic, open source AI search with no SaaS vendor or search infrastructure</dd>
</div>
</div>
<div class="relative flex items-center">
<div>
<dt class="mb-1"><a href="/transom/" class="font-bold font-text text-jade">Transom AI Site Builder</a></dt>
<dd class="font-regular hidden xl:block">Open source AI site building for CMS.</dd>
</div>
</div>
</dl>
</section>
<section class="flex flex-col gap-4 content-start text-[0.875rem]">
<h2 class="h-12 uppercase font-bold text-navy text-lg">Performance Management Innovations</h2>
<hr class="my-0 mb-4 border-b text-jade">
<dl class="flex flex-col gap-8">
<div class="relative flex items-center">
<div>
<dt class="mb-1"><a href="/gander/" class="font-bold font-text text-jade">Gander</a></dt>
<dd class="font-regular hidden xl:block">Performance tooling to benefit the entire web, built in collaboration with Google Chrome team</dd>
</div>
</div>
<div class="relative flex items-center">
<div>
<dt class="mb-1"><a href="/goose/" class="font-bold font-text text-jade">Goose</a></dt>
<dd class="font-regular hidden xl:block">Open-source load testing tool that simulates real-world usage patterns at the scale enterprise organizations demand</dd>
</div>
</div>
</dl>
</section>
</div>
</div>
</div>
</li><li x-data="{ subMenuId: $id('subMenu-why-tag1') }" class="text-jade xl:text-inherit flex flex-col xl:flex-row justify-center xl:items-center w-full xl:w-auto h-auto xl:h-full min-w-44 min-h-24 xl:min-h-12 static xl:static border-jade border-b xl:border-0"><a href="/why-tag1/" class="text-2xl xl:text-[0.875rem] xl:uppercase flex flex-col justify-center flex-grow items-start xl:items-center xl:w-full h-full">Why Tag1</a></li><li x-data="{ subMenuId: $id('subMenu-contact-us') }" class="text-jade xl:text-inherit flex flex-col xl:flex-row justify-center xl:items-center w-full xl:w-auto h-auto xl:h-full min-w-44 min-h-24 xl:min-h-12 static xl:static border-jade border-b xl:border-0"><a href="/contact/" class="text-2xl xl:text-[0.875rem] xl:uppercase flex flex-col justify-center flex-grow items-start xl:items-center xl:w-full h-full">Contact Us</a></li>
<li class="text-jade xl:text-inherit flex flex-col xl:flex-row justify-center xl:items-center w-full xl:w-auto h-auto xl:h-full min-w-44 min-h-24 xl:min-h-12 static xl:static border-jade border-b xl:border-0">
<a href="/search/" class="text-2xl xl:text-[0.875rem] xl:uppercase flex flex-row gap-2 justify-start xl:justify-center flex-grow items-center xl:w-full h-full" aria-label="Search Tag1">
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" class="size-5" aria-hidden="true">
<path stroke-linecap="round" stroke-linejoin="round" d="m21 21-5.197-5.197m0 0A7.5 7.5 0 1 0 5.196 5.196a7.5 7.5 0 0 0 10.607 10.607Z"></path>
</svg>
<span class="xl:sr-only">Search</span>
</a>
</li>
</ul>
</nav>
<script>
// Define scoped Alpine component before Alpine.js loads
document.addEventListener('alpine:init', () => {
Alpine.data('megaMenuComponent', () => ({
showMenu: false,
openItems: new Set(),
init() {
this.menuId = this.$id('main-menu');
},
toggle(button, subMenuId) {
if (this.openItems.has(subMenuId)) {
this.openItems.delete(subMenuId);
button.focus();
} else {
this.openItems.clear();
this.openItems.add(subMenuId);
}
},
closeAndFocusTrigger(submenu) {
const button = submenu.previousElementSibling;
const subMenuId = submenu.getAttribute('id');
this.openItems.delete(subMenuId);
button?.focus();
}
}));
});
</script>
</div>
</header>
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "BreadcrumbList",
"itemListElement": [
{
"@type": "ListItem",
"position": 1,
"name": "Home",
"item": "https://www.tag1.com/"
},
{
"@type": "ListItem",
"position": 2,
"name": "Insights",
"item": "https://www.tag1.com/insights/"
},
{
"@type": "ListItem",
"position": 3,
"name": "An Interview With Linus Torvalds: Linux and Git - Part 1",
"item": "https://www.tag1.com/blog/interview-linus-torvalds-linux-and-git/"
}
]
}
</script>
<div class="border-b border-light-grey">
<div class="container">
<nav class="my-6" aria-label="Breadcrumb">
<ul class="font-headline font-medium text-sm uppercase flex flex-row flex-wrap">
<li class="after:mx-0.5 after:content-['/'] last:after:content-none ">
<a href="/">Home</a>
</li>
<li class="after:mx-0.5 after:content-['/'] last:after:content-none ">
<a href="/insights/">Insights</a>
</li>
<li class="after:mx-0.5 after:content-['/'] last:after:content-none my-active-class">
<a href="/blog/interview-linus-torvalds-linux-and-git/">An Interview With Linus Torvalds: Linux and Git - Part 1</a>
</li>
</ul>
</nav>
</div>
</div>
<main id="main-content" data-pagefind-body="">
<article>
<meta data-pagefind-meta="date:2021-04-28">
<meta data-pagefind-meta="contentType:Blog">
<meta data-pagefind-filter="contentType:Blog">
<meta data-pagefind-meta="image:/img/built/WyYXSJ8o0T-540.jpeg">
<section class="relative py-16 grid gap-16 md:content-center aspect-landscape text-white fill-white bg-white">
<div class="absolute top-0 right-0 bottom-0 left-0 overflow-hidden">
<picture><source type="image/webp" srcset="/img/WyYXSJ8o0T-1536.webp 1536w, /img/WyYXSJ8o0T-2048.webp 2048w" sizes="(min-width: 1728px) 1728px, (min-width: 1536px) 1536px, (min-width: 1280px) 1280px, (min-width: 1024px) 1024px, (min-width: 768px) 768px, 100vw"><source type="image/png" srcset="/img/WyYXSJ8o0T-1536.png 1536w, /img/WyYXSJ8o0T-2048.png 2048w" sizes="(min-width: 1728px) 1728px, (min-width: 1536px) 1536px, (min-width: 1280px) 1280px, (min-width: 1024px) 1024px, (min-width: 768px) 768px, 100vw"><img loading="lazy" decoding="async" src="/img/WyYXSJ8o0T-1536.jpeg" alt="" class="absolute top-0 right-0 bottom-0 left-0 w-full object-cover h-full" width="2048" height="1024" srcset="/img/WyYXSJ8o0T-1536.jpeg 1536w, /img/WyYXSJ8o0T-2048.jpeg 2048w" sizes="(min-width: 1728px) 1728px, (min-width: 1536px) 1536px, (min-width: 1280px) 1280px, (min-width: 1024px) 1024px, (min-width: 768px) 768px, 100vw"></picture>
</div>
<div class="container grid gap-8">
<div class="grid gap-16 lg:gap-8 grid-cols-1 lg:grid-cols-3">
<div class="grid gap-6 lg:col-span-2 content-center">
<header class="grid gap-10">
<h1 class="text-white">An Interview With Linus Torvalds: Linux and Git - Part 1</h1>
</header>
<p class="text-xl">30 Years Of Linux</p>
<div class="flex gap-4 items-center">
<picture><source type="image/webp" srcset="/img/Cj1X8ZuiUx-128.webp 128w" sizes="64px"><source type="image/png" srcset="/img/Cj1X8ZuiUx-128.png 128w" sizes="64px"><img loading="lazy" decoding="async" src="/img/Cj1X8ZuiUx-128.jpeg" class="max-w-16 aspect-1" alt="Photo of Jeremy Andrews" width="128" height="128"></picture>
<div class="text-lg font-regular leading-tight">
<span class="text-2xl font-medium">Jeremy Andrews -</span> Founding Partner/CEO<br>
April 28, 2021
</div>
</div>
</div>
</div>
</div>
</section>
<div class="bg-gradient-lightest-grey-lighter-grey">
<section class="container">
<div class="bg-white p-8 md:grid md:gap-10 xl:gap-16 md:grid-cols-8 xl:grid-cols-12"><div class="md:col-span-full lg:col-span-6 lg:col-start-2 xl:col-span-8 xl:col-start-3">
<div class="text-formatted">
<div class="mb-8">
<div class="custom-share font-bold share-align-right border-dark-grey border-b pb-4">
<div class="a2a_kit a2a_kit_size_32 a2a_default_style">
<a class="a2a_dd text-[var(--link-color)]" href="https://www.addtoany.com/share">Share</a>
</div>
<style>
/* Hide More button everywhere */
.a2a_more,
.custom-share .a2a_more,
div.a2a_menu a.a2a_more {
display: none !important;
}
.custom-share .a2a_dd {
--link-color: var(--color-jade);
background: none !important;
border: none !important;
padding: 0.5rem 0 !important;
margin: 0 !important;
display: inline-block !important;
width: auto !important;
height: auto !important;
text-decoration: none;
cursor: pointer;
font: inherit;
font-size: 1.125rem;
}
.custom-share .a2a_dd:after {
content: ' ';
background-image: url('/img/ui/icons/ui/external.svg');
background-position: right center;
margin-left: 8px;
margin-bottom: -1px;
width: 24px;
height: 24px;
display: inline-block;
}
.custom-share.share-align-right .a2a_dd {float: right;}
.custom-share .a2a_dd * { display: none !important; }
</style>
<script>
var a2a_config = a2a_config || {};
a2a_config.onclick = 1; // mini menu on click
a2a_config.native = false; // force AddToAny, not device sheet
a2a_config.num_services = 12;
a2a_config.prioritize = [
'copy_link','email','linkedin','x','bluesky','mastodon','reddit','hacker_news','slashdot','print','whatsapp','sms'
];
</script>
<script async="" src="https://static.addtoany.com/menu/page.js"></script>
</div>
</div>
<p>For Part Two, <a href="/blog/interview-linus-torvalds-open-source-and-beyond/" title="click here">click here</a>.
<br></p>
<picture><source type="image/webp" srcset="/img/xvbtCiw2ce-2400.webp 2400w"><source type="image/png" srcset="/img/xvbtCiw2ce-2400.png 2400w"><img loading="lazy" decoding="async" src="/img/xvbtCiw2ce-2400.jpeg" class="pull-right img-responsive img-thumbnail col-lg-4" alt="30 Years Of Linux" width="2400" height="1260"></picture>
<p>Thirty years ago, Linus Torvalds was a 21 year old student at the University of Helsinki when he first released the Linux Kernel. <a href="https://en.wikipedia.org/wiki/History_of_Linux#The_creation_of_Linux">His announcement started</a>, “I’m doing a (free) operating system (just a hobby, won't be big and professional…)”. Three decades later, <a href="https://www.linuxfoundation.org/">the top 500 supercomputers are all running Linux</a>, as are over 70% of all smartphones. Linux is clearly both big and professional.</p>
<p>For three decades, Linus Torvalds has led Linux Kernel development, inspiring countless other developers and open source projects. In 2005, <a href="https://en.wikipedia.org/wiki/Git#History">Linus also created Git</a> to help manage the kernel development process, and it has since become the most popular version control system, trusted by countless open source and proprietary projects.</p>
<p>The following interview continues our series with <a href="/open-source-leaders/">Open Source Leaders</a>. Linus Torvalds replied to our questions via email, reflecting on what he's learned over the years from leading a large open source project. In this first part, we focus on Linux kernel development and Git. "<em>[Linux] was a personal project that grew not out of some big dream to create a new operating system,</em>" Linus explains, "<em>but literally grew kind of haphazardly from me initially just trying to learn the in-and-outs of my new PC hardware.</em>"</p>
<p>Regarding creating Git and then handing it off to Junio Hamano to improve and maintain, Linus noted, "<em>I don't want to claim that programming is an art, because it really is mostly just about 'good engineering'. I'm a big believer in Thomas Edison's 'one percent inspiration and ninety-nine percent perspiration' mantra: it's almost all about the little details and the everyday grunt-work. But there <em>is</em> that occasional 'inspiration' part, that 'good taste' thing that is about more than just solving some problem - solving it cleanly and nicely and yes, even beautifully. And Junio had that 'good taste'.</em>"</p>
<p>Read on for the first in a two-part interview. Check back next week for the second part, where Linus explores the lessons and insights gained from three decades at the helm of the Linux kernel.</p>
<p>Translations: [<a href="https://csdnnews.blog.csdn.net/article/details/116408906" title="Chinese">Chinese</a>], [<a href="https://sjp38.github.io/ko/post/torvalds_interview_for_30th_anniversary_of_linux_kernel_part1/" title="Korean">Korean</a>], [<a href="https://giaiphapso.com/30-nam-ra-doi-linux-phong-van-linus-torvalds-ve-linux-va-git-phan-1/" title="Vietnamese">Vietnamese</a>]: (<em><a href="/contact/" title="_Contact us">Contact us</a> if you'd like to translate this interview into another language.</em>)</p>
<h2>Linux Kernel Development</h2>
<p><strong>Jeremy Andrews: Linux is everywhere, and has been an inspiration to the entire open source world. Of course, it wasn't always that way. You famously released the Linux kernel back in 1991 with a modest Usenet posting on <code>comp.os.minix</code>. A decade later you wrote an engaging and personal book titled, "<a href="https://bookshop.org/books/just-for-fun-the-story-of-an-accidental-revolutionary/9780066620732">Just for Fun: The Story of an Accidental Revolutionary</a>" exploring much of that history. This year, in August, Linux will celebrate its 30th anniversary! That's amazing, congratulations! At what point during this journey did you realize what you'd done, that Linux was so much more than "just a hobby"?</strong></p>
<p>Linus Torvalds: This may sound a bit ridiculous, but that actually happened very early. Already by late '91 (and certainly by early '92) Linux had already become much bigger than I had expected.</p>
<picture><source type="image/webp" srcset="/img/-BwWd2tw4m-1000.webp 1000w"><source type="image/png" srcset="/img/-BwWd2tw4m-1000.png 1000w"><img loading="lazy" decoding="async" src="/img/-BwWd2tw4m-1000.jpeg" class="pull-right img-responsive img-thumbnail col-lg-3" alt="30 Years Of Linux" width="1000" height="1142"></picture>
<p>And yeah, considering that by that point, there were probably just a few hundred users (and even "users" may be too strong - people were tinkering with it), it probably sounds odd considering how Linux then later ended up growing much bigger. But in many ways for me personally, the big inflection point was when I realized that other people are actually using it, and interested in it, and it started to have a life of its own. People started sending patches, and the system was actually starting to do much more than I had initially really envisioned.</p>
<p>I think that X11 was ported to Linux some time in April '92 (don't take my word for the dates - it's a <em>loong</em> time ago), and that was another big step where suddenly there was a GUI and a whole new set of capabilities.</p>
<p>To put this all in perspective - I really didn't start out with any big plans of high expectations. It was a personal project that grew not out of some big dream to create a new operating system, but literally grew kind of haphazardly from me initially just trying to learn the in-and-outs of my new PC hardware.</p>
<p>So when I released the very first version, it was really more of a "look at what I did", and sure, I was hoping that others would find it interesting, but it wasn't a real serious and usable OS. It was more of a proof of concept, and just a personal project I had worked on for several months at that time.</p>
<p>And going from that "personal project" to being something where others used it, sent feedback (and bug reports), and occasional patches, that was the <em>big</em> change for me.</p>
<p>Just to give an example of something really fundamental: the original copyright license was something like "you can distribute this in source form, but not for money".</p>
<p>That was because for me one of the issues had literally been that commercial unix was <em>expensive</em> (well, for a poor student who spent all his money on the new PC it was), and so to me a big important thing was that the source code be available (so that people could tinker with it), and I wanted it to be open to people like me who just couldn't <em>afford</em> the alternatives.</p>
<p>And I changed the license in late '91 (or maybe very early '92) to the <a href="https://opensource.org/licenses/gpl-2.0.php">GPLv2</a> because there were people who wanted to distribute it on floppies to local Unix Users Groups, but wanted to at least recoup the costs of the floppies and their copying time. And I realized that was obviously entirely reasonable, and that the important thing wasn't the "no money", but the "source needs to be openly available" part.</p>
<p>End result: not only did people distribute it at Unix user group meetings, but early floppy distributions like SLS and Slackware happened within months.</p>
<p>Compared to those initial really fundamental changes, everything else was "incremental". Sure, some of the incrementals were pretty big (IBM coming aboard, Oracle DB being ported, Red Hat IPOs, Android becoming big on phones etc), but they were still less personally revolutionary than that early initial "people I don't even know are using Linux''.</p>
<p><strong>JA: Do you ever regret your choice of license, or how much money other people and companies have made off something you created?</strong></p>
<picture><source type="image/webp" srcset="/img/JDlzIEYOMz-600.webp 600w"><source type="image/png" srcset="/img/JDlzIEYOMz-600.png 600w"><img loading="lazy" decoding="async" src="/img/JDlzIEYOMz-600.jpeg" class="pull-right img-responsive img-thumbnail col-lg-4" alt="Linus Torvalds talking" width="600" height="909"></picture>
<p>LT: Absolutely not.</p>
<p>First off, I'm doing quite well. I'm not insanely rich, but I'm a well-paid software engineer, doing what I like to do, on my own schedule. I'm not hurting.</p>
<p>But equally importantly, I'm 100% convinced that the license has been a big part of the success of Linux (and Git, for that matter). I think everybody involved ends up being much happier when they know that everybody has equal rights, and nobody is special with regards to licensing.</p>
<p>There's a fair number of these "dual license" projects where the original owner retains a commercial license ("you can use this in your proprietary product if you pay us license fees") and then on the other hand the project is also available under something like the GPL for open source cases.</p>
<p>And I think it's really hard to build a community around that kind of situation, because the open source side always knows it's "second class". Plus it leads to a lot of just licensing paperwork in order for the special party to always retain their special rights. So it adds a <em>lot</em> of friction to the project.</p>
<p>And on the other hand, I've seen a lot of BSD (or MIT or similar) licensed open source projects that just fragment when they become big enough to be commercially important, and the involved companies inevitably decide to turn their own parts proprietary.</p>
<p>So I think the GPLv2 is pretty much the perfect balance of "everybody works under the same rules", and still requires that people give back to the community ("tit-for-tat"). And everybody knows that all the other people involved are bound by the same rules, so it's all very equitable and fair.</p>
<p>Of course, another part of that is that you also get out what you put in. Sure, you can try to "coast" on the project and be just a user, and that's ok. But if you do that, you also have no control over the project. That can be perfectly fine too, if you really just need a basic operating system, and Linux already does everything you want. But if you have special requirements, the only way to really affect the project is to participate.</p>
<p>This keeps everybody honest. Including me. Anybody can fork the project and go their own way, and say "bye bye Linus, I'm taking over maintenance of my version of Linux". I'm "special" only because - and as long as - people trust me to do a good job. And that's exactly how it should be.</p>
<p>That "anybody can maintain their own version" worried some people about the GPLv2, but I really think it's a strength, not a weakness. Somewhat unintuitively, I think it's actually what has caused Linux to <em>avoid</em> fragmenting: everybody can make their own fork of the project, and that's OK. In fact, that was one of the core design principles of "Git" - every clone of the repository is its own little fork, and people (and companies) forking off their own version is how all development really gets done.</p>
<p>So forking isn't a problem, as long as you can then merge back the good parts. And that's where the GPLv2 comes in. The right to fork and do your own thing is important, but the other side of the coin is <em>equally</em> important - the right to then always join back together when a fork was shown to be successful.</p>
<p>Another issue is that you really want to have the tools to support that workflow, but you also have to have the <em>mindset</em> to support it. A big impediment to joining forks back is not just licensing, but also "bad blood". If the fork starts from very antagonistic reasons, it can be very hard to merge the two forks - not for licensing or technical reasons, but because the fork was so acrimonious. Again, I think Linux has avoided that mainly because we've always seen forking things as natural, and then it's also very natural to try to merge back when some work has shown itself to be successful.</p>
<p>So this answer kind of went off at a tangent, but I think it's an important one - I very much don't regret the choice of license, because I really do think the GPLv2 is a huge part of why Linux has been successful.</p>
<p>Money really isn't that great of a motivator. It doesn't pull people together. Having a common project, and really feeling that you really can be a full partner in that project, <em>that</em> motivates people, I think.</p>
<p><strong>JA: These days when people release source code under the GPLv2, they generally do it because of Linux. How did you find the license, and how much time and effort did you put into reviewing other existing licenses?</strong></p>
<picture><source type="image/webp" srcset="/img/YxwH_8GmZd-288.webp 288w"><img loading="lazy" decoding="async" src="/img/YxwH_8GmZd-288.png" class="pull-right img-responsive img-thumbnail col-lg-3" alt="Open Source" width="288" height="259"></picture>
<p>LT: Back then, people still had fairly big flame wars about BSD vs GPL (I think partly fueled by how rms really has a knack for pissing people off), so I'd seen some of the license discussions just through various usenet newsgroups I was reading (things like <code>comp.arch</code>, <code>comp.os.minix</code> etc).</p>
<p>But the two main reasons were probably simply gcc - which was very much instrumental in getting Linux going, since I absolutely required a C compiler - and Lars Wirzenius ("Lasu"), who was the other Swedish-speaking CS student at University in my year (Swedish being a fairly small minority in Finland).</p>
<p>Lasu was much more into license discussions etc than I was.</p>
<p>To me, the choice of GPLv2 wasn't some huge political issue, it was mainly about the fact that my original license had been so ad-hoc and needed updating, and I felt indebted to gcc, and the GPLv2 matched my "you have to give source back" expectations.</p>
<p>So rather than make up another license (or just edit the original one - just removing the "no money can change hands" clause could have been an option), I wanted to pick one that people already knew about, and had had some lawyers involved.</p>
<p><strong>JA: What is your typical day like? How much of it is spent writing code, versus reviewing code, versus reading and writing emails? And how do you balance personal life and working on the Linux Kernel?</strong></p>
<p>LT: I write very little code these days, and haven't for a long time. And when I do write code, the most common situation is that there's some discussion about some particular problem, and I make changes and send them out as a patch mainly as an explanation of a suggested solution.</p>
<p>In other words, most of the code I write is more of a "look, how about we do it <em>this</em> way" where the patch is a very concrete example. It's easy to get bogged down into some theoretical high-level discussion about how to solve something, and I find that the best way to describe a solution is often to just write the snippet of code - maybe not the whole thing - and just make it very concrete that way.</p>
<p>Because all my real work is spent on reading and writing emails. It's mostly about communication, not coding. In fact, I consider this kind of communication with journalists and tech bloggers etc to literally <em>be</em> part of my workday - it may get lower priority than actual technical discussions, but I do spend a fair amount of time on things like this too.</p>
<p>And yes, I spend time on code reviews too, but honestly, by the time I get a pull request, generally the code in question should already have been reviewed by multiple people already. So while I still look at patches, I actually tend to look more at the explanations, and the history of how the patch came to me. And with the people I've worked the longest with, I don't do even that: they are the maintainers of their subsystem, I'm not there to micro-manage their work.</p>
<p>So quite often, my main job is to "be there", and be the collection point, and be the person who manages and enforces the releases. In other words, my job is generally more about the maintenance process than the low-level code.</p>
<p><strong>JA: What is your work environment like? For example, do you prefer a dark room with no distractions, or a room with a view? Do you tend to work in silence, or while listening to music? What kind of hardware do you typically use? Do you review code with <code>vi</code> in a terminal, or with a fancy IDE? And, do you have a preferred Linux distribution for this work?</strong></p>
<picture><source type="image/webp" srcset="/img/OCuqF0fZ1D-1080.webp 1080w"><img loading="lazy" decoding="async" src="/img/OCuqF0fZ1D-1080.png" class="pull-right img-responsive img-thumbnail col-lg-3" alt="Threadripper" width="1080" height="607"></picture>
<p>LT: My room isn't exactly "dark", but I do have the blinds on the window next to my desk closed, because I don't want bright sunlight (not that it's necessarily very common this time of year in Oregon ;). So no views, just a (messy) desk, with dual 4k monitors and <a href="https://www.google.com/url?q=https://www.youtube.com/watch?v%3DKua9cY8q_EI&sa=D&source=editors&ust=1618318647481000&usg=AOvVaw0JECIVZl4OKUFCkB0UQCsO">a powerful desktop computer under the desk</a>. And a couple of laptops sitting around for testing and for when I'm on the road.</p>
<p>And I want to work in silence. I used to hate the ticking of mechanical disk drives - happily long relegated to the garbage bin as I've used exclusively SSD's for over a decade by now - and noisy CPU fans are unacceptable too.</p>
<p>And it's all done in a traditional terminal, although I don't use 'vi'. I use this abomination called "micro-emacs", which has absolutely nothing to do with GNU emacs except that some of the key bindings are similar. I got used to it at the University of Helsinki when I was a wee lad, and I've not been able to wean myself from it, although I suspect I will have to soon enough. I hacked up (a very limited) utf-8 support for it a few years ago, but it's really showing its age, and showing all the signs of having been written in the 80's and the version I use was a fork that hasn't been maintained since the mid 90's.</p>
<p>University of Helsinki used it because it worked on DOS, VAX/VMS <em>and</em> Unix, which is why I got introduced to it. And now my fingers are hardcoded for it. I really need to switch over to something that is actually maintained and does utf-8 properly. Probably 'nano'. But my hacked-up piece of historical garbage works just barely well enough that I've never been really <em>forced</em> to teach my old fingers new tricks.</p>
<p>So my desktop environment is fairly simple: several text terminals open, and a web browser with email (and several other tabs, mostly news and tech sites). I want to have a fair amount of desktop space, because I'm used to having fairly big terminal windows (100x40 is kind of my default starting size), and I have multiple terminals open side-by side. Thus the dual 4k monitors.</p>
<p>I use Fedora on all my machines, not because it's necessarily "preferred", but because it's what I'm used to. I don't care deeply about the distribution - to me it's mainly a way to get Linux installed on a machine and get all my tools set up, so that I can then replace the kernel and work on just that.</p>
<p><strong>JA: The <a href="https://lore.kernel.org/lkml/">Linux Kernel Mailing List</a> is where kernel development happens publicly, and is extremely high traffic. How do you keep up with so much email? Have you explored other solutions for collaboration and communication outside of a mailing list, or is there something about a simple mailing list that is perfect for what you do?</strong></p>
<p>LT: Oh, I don't read the kernel mailing list directly, and haven't in years. It's much too much.</p>
<p>No, the point of the kernel mailing list is that it basically gets cc'd on all the discussions (well - <em>one</em> of the kernel mailing lists do, there are many - and then the traditional lkml list is the fallback for when there isn't some more targeted list). And that way, when a new person is brought into the discussion, they can see the history and the background by looking at the kernel mailing list.</p>
<p>So what I used to do was to be subscribed to the list, but have all the lkml email that I wasn't cc'd on personally be auto-archived, so I'd not see it by default. But then when some issue escalated to me, all that discussion would show up, because it was there in my email, just not in my inbox until it was needed.</p>
<p>These days, I actually use the <a href="https://lore.kernel.org/">lore.kernel.org</a> functionality instead, because it works so well and we have some other tools built around it. So rather than having it auto-archived in my own mail archives, the discussions end up being visible that way instead. But the basic workflow is conceptually the same.</p>
<p>I do get a fair amount of email still, obviously - but in many ways it has been getting better over the years, rather than worse. A big part of that is Git and how well the kernel release flow works: we used to have many more problems with code flow, and tooling. My email situation was actually much much worse back around the turn of the century, when we still dealt in huge patch-bombs and we had serious scalability problems in the development flow.</p>
<p>And the mailing list (with tooling around it) model really does work very well. That's not to say that people don't use other means of communication in addition to email (both person-to-person, and the mailing lists): there are people who enjoy various realtime chat setups (IRC being the traditional one). And while that has never been my thing, it is clearly what some people like to use for brainstorming. But that "mailing list as an archive" model works very well, and works seamlessly together with the whole "send patches between developers as emails" and "send problem reports as emails".</p>
<p>So email remains the main communication channel, and makes it easy to discuss technical issues, with patches embedded in the same medium. And it works across time zones, which is very important when everybody is so spread out geographically.</p>
<picture><source type="image/webp" srcset="/img/gv18FMjRYt-287.webp 287w"><img loading="lazy" decoding="async" src="/img/gv18FMjRYt-287.png" class="pull-right img-responsive img-thumbnail col-lg-3" alt="KernelTrap logo" width="287" height="100"></picture>
<p><strong>JA: I followed kernel development closely for about a decade, <a href="https://en.wikipedia.org/wiki/KernelTrap">blogging about it on KernelTrap and writing about new features as they evolved</a>. I stopped around the time the 3.0 kernel was released, which had followed 8 years of 2.6.x versions. Is it possible to summarize some of the more interesting things that have happened in the kernel since the 3.0 release?</strong></p>
<p>LT: Heh. That's so long ago that I couldn't even begin to summarize things. It's been a decade since 3.0, and we've had a <em>lot</em> of technical changes in that decade. ARM has grown up and ARM64 has become one of our primary architectures. Lots and lots of new drivers, and new core functionality.</p>
<p>If anything, what is interesting about the last decade is how we've actually kept the actual development model really smooth, and what <em>hasn't</em> changed.</p>
<p>We've gone through many different version number schemes over the decades, we've had different development models, but the 3.0 release was in fact the one that finalized the model we've used ever since. It kind of made official the whole "releases are time-based, version numbers are just numbers, and don't have any feature dependencies".</p>
<p>We'd started the whole time-based releases with a merge window in the 2.6.x days, so that part wasn't new. But 3.0 was when the last vestiges of "the number has meaning" were thrown overboard.</p>
<p>We'd had the random numbering scheme (mainly before 1.0), we'd had the whole "odd minor numbers means development kernel, even means stable production kernel" model, and then in 2.6.x we started doing the time-based release model. But people still had that "what will it take to increase the major number" question. And 3.0 made it official that even the major version number has no meaning, and that we'll just try to keep the numbers easy to deal with and not let them grow too big.</p>
<p>So for the last decade, we've made absolutely huge changes (Git makes it easy to show some statistics in numbers: about three quarters of a million commits by over 17 thousand people). But the development model itself has actually been quite smooth and stable.</p>
<p>And that really hasn't always been the case. The first two decades of kernel development were full of fairly painful development model changes. This last decade has been much more predictable release-wise.</p>
<p><strong>JA: As of now, the latest release is 5.12-rc5. How standardized is the release process? For example, what sorts of changes go into an -rc1, versus an -rc2 and so on? And at what point do you decide a given release is ready to be officially released? What happens if you're wrong and a large regression is found after the final release, and how often does this happen? How has this process evolved over the years?</strong></p>
<p>LT: So I alluded to this earlier: the process itself really is pretty standard, and has stayed so for the last decade. It went through several upheavals before that, but it's actually been almost like clock-work since 3.0 (and in fact a few years before that - the switch to Git in many ways was the beginning of the modern process, and it took a while before everybody got used to it).</p>
<p>So we've had this cadence of "two weeks of merge window" followed by roughly 6-8 weekly release candidates before final release for almost 15 years by now, I think.</p>
<p>And the rules have always been the same, although they haven't always been entirely strictly enforced: the merge window is for new code that is supposedly "tested and ready", and then the subsequent roughly two months are for fixes and to actually make sure all the problems are shaken out. Which doesn't always happen, and sometimes that supposedly "ready" code gets disabled or outright reverted before the release.</p>
<p>And then it repeats - so we have a release roughly every 10 weeks or so.</p>
<p>And the release criteria is me feeling confident enough, which obviously in turn is based on what kinds of problem reports are still coming in. If some area still shows issues late in the rc game, I'm fairly aggressive about just reverting things, and saying "we'll deal with this in a later release once we've figured the thing out fully", but on the whole it's fairly rare that that is needed.</p>
<p>Does it always work out? No. Once the kernel is released - and particularly once a distro picks it up - you get new users, you get people who didn't test it during development that find things that didn't work and we didn't catch during the rc series. That's pretty much inevitable. It's part of why we have the whole "stable kernel" trees, which continue to add fixes after the release. And some stable kernels are maintained for longer than others, and get called LTS ("Long Term Support") kernels.</p>
<p>All of this has remained fairly unchanged in the last ten years, although we do end up having a lot more automation in place. Kernel testing automation is hard in general - partly because so much of the kernel is drivers which then obviously depends on hardware availability - but there are several farms doing both boot and performance testing, and do various randomized load testing. And that has improved a lot over the years.</p>
<p><strong>JA: Last November you were quoted as being impressed by Apple's new ARM64 chips found in some of their new computers. Are you following the development effort to support them with Linux? I see <a href="https://lore.kernel.org/lkml/bdb18e9f-fcd7-1e31-2224-19c0e5090706@marcan.st/">work</a> was <a href="https://git.kernel.org/pub/scm/linux/kernel/git/soc/soc.git/commit/?h=for-next&id=0d5fe4b31785b732b71e764b55cda5c8d6e3bbbf">merged into for-next</a>. Is it likely Linux will boot on Apple's MacBook hardware as early as the upcoming 5.13 kernel? Are you likely to be an early adopter? What is the significance of ARM64?</strong></p>
<picture><source type="image/webp" srcset="/img/_3pNJ-niRQ-1248.webp 1248w"><source type="image/png" srcset="/img/_3pNJ-niRQ-1248.png 1248w"><img loading="lazy" decoding="async" src="/img/_3pNJ-niRQ-1248.jpeg" class="pull-right img-responsive img-thumbnail col-lg-3" alt="Apple M1 ARM64 Chip" width="1248" height="1489"></picture>
<p>LT: I'm checking in on it very occasionally, but it's early days yet. As you note, the very early support will likely be merged into 5.13, but you need to realize that that is really only the beginning, and doesn't make Apple hardware <em>useful</em> with Linux yet.</p>
<p>It's not the arm64 part that ends up being the problem, but all the drivers for the hardware around it (the SSD and GPU in particular). The early work so far gets some of the really low-level stuff working, but doesn't result in anything useful outside of early hardware enablement. It will take some time for it to be a real option for people to try out.</p>
<p>But it's not just the Apple hardware that has improved - the infrastructure for arm64 in general has grown up a lot, and the cores have gone from "Meh" to being much more competitive in the server space. The arm64 server space was pretty sad not that long ago, but Amazon's Graviton2 and Ampere's Altra processors - both based on the much improved ARM Neoverse IP - are much better than what the offerings were a few years ago.</p>
<p>I've been waiting to have a usable ARM machine for over a decade by now, and it's not there yet, but it's clearly much closer than it used to be.</p>
<p>In fact, I guess I could say that I've been wanting an ARM machine for much longer than that - back when I was a teenager, the machine I really wanted was an Acorn Archimedes, but availability and price made me go with a Sinclair QL (M68008 processor) and then obviously a few years later a i386 PC instead.</p>
<p>So it's been kind of brewing for decades, but they still haven't been widely available and price/performance competitive as computers for me. One day. Hopefully in the not <em>too</em> distant future.</p>
<p><strong>JA: Is there anything in the kernel which is not optimal, but would require a complete rewrite to address properly? In other words, the kernel is 30 years old and knowledge, languages and hardware have changed a lot in these 30 years: if you rewrote it from scratch now, what would you change?</strong></p>
<p>LT: We've actually been <em>really</em> good about even completely rewriting things if necessary, so anything that would have been an unmitigated disaster has long since been rewritten.</p>
<p>Sure, we have a fair amount of "compatibility" layers, but they are usually not horrendous. And it's unclear if even those compatibility layers would really go away if rewriting from scratch - they are about backwards compatibility with older binaries (and often backwards compatibility with older architectures, e.g. running 32-bit x86 apps on x86-64). Since I consider backwards compatibility to be very important, I'd want to keep those even in a rewrite.</p>
<p>So there are obviously lots of things that are "not optimal" in the sense that anything can be improved, but the way you phrase the question, I'd have to say that no, there's nothing there that I despise. There's legacy drivers that nobody is ever going to care about enough to clean up, and so they may do ugly things, but a key part of that is "nobody cares enough". It hasn't been a problem, and when it does become a problem we tend to fairly actively remove true legacy support that we can't find anybody that cares about. So we've gotten rid of lots of drivers over the years, and we've gotten rid of whole architecture support when it no longer makes any sense at all to maintain.</p>
<p>No, the only major reason for a "rewrite" would be if you end up having some use-case where the whole structure no longer makes sense. The most likely scenario would be some small embedded system that just doesn't want everything that Linux offers, and has a hardware footprint so small that it simply wants something smaller and simpler than what Linux has become over the years.</p>
<p>Because Linux <em>has</em> grown a lot. Even small hardware (think cell phones etc) today is much more capable than the original machine Linux was developed on was.</p>
<p><strong>JA: What about rewriting at least parts with Rust, a language that was specifically designed for performance and safety? Is there room for improvement in this way? Do you feel it’s ever possible for another language like Rust to replace C in the kernel?</strong></p>
<picture><source type="image/webp" srcset="/img/mjViHbUrIl-1200.webp 1200w"><img loading="lazy" decoding="async" src="/img/mjViHbUrIl-1200.png" class="pull-right img-responsive img-thumbnail col-lg-3" alt="Ferris the crab, unofficial mascot for Rust" width="1200" height="800"></picture>
<p>LT: We'll see. I don't think <a href="https://www.rust-lang.org/">Rust</a> will take over the core kernel, but doing individual drivers (and maybe whole driver subsystems) in it doesn't sound entirely unlikely. Maybe filesystems too. So it's not "replace C", but more of "augment our C code where it makes sense".</p>
<p>Of course, drivers in particular is about half of the actual kernel code, so there's a lot of room for that, but I don't think anybody is really expecting to rewrite existing drivers in Rust wholesale, more of a "some people will do new drivers in Rust, and a couple of drivers might be rewritten where it makes sense".</p>
<p>But right now that's more of a "people are trying it out and playing with it" rather than anything more than that. It's easy to point to advantages, but there are certainly complexities too, so I'm very much taking a wait-and-see approach to see if the promised advantages really do pan out.</p>
<p><strong>JA: Are there any specific parts of the kernel that you are personally most proud of?</strong></p>
<p>LT: The stand-out parts I tend to point to are the VFS ("virtual filesystem") layer (and the pathname lookup in particular) and our VM code. The former because Linux just does some of those fundamental things (looking up a filename really is such a core operation in an operating system) so much better than anything else out there. And the latter mainly because we support 20+ architectures, and we still do it with a largely unified VM layer, which I think is pretty impressive.</p>
<p>But at the same time, this is very much a function of "what part of the kernel do you care about". The kernel is big enough that different developers (and different users) will simply have different opinions of what matters most. Some people think scheduling is the most exciting part of the kernel. Others like the nitty-gritty of device drivers (and we have a lot of those). I personally tend to be more involved in the VM and VFS areas, so I then naturally point to those.</p>
<p><strong>JA: I found <a href="https://www.kernel.org/doc/html/latest/filesystems/path-lookup.html">this description of pathname lookup</a>, and it's more complex than I expected. What makes the Linux implementation so much better than what is done in other operating systems? And what do you mean by "better"?</strong></p>
<p>LT: Pathname lookup is really such a common and fundamental thing that most people outside of kernel developers don't even think about it as a problem: they just open files, and take it all for granted.</p>
<p>But it's actually fairly complicated to do really well. Exactly because absolutely <em>everything</em> does pathname lookups all the time, it's hugely performance-critical, and it's very much one of those areas where you also want to scale well in SMP environments, and it has lots of complexity in locking. And you very much do not want to do any IO, so caching is very important. In fact, pathname lookup is <em>so</em> important that you can't leave it to the low-level filesystem, because we have 20+ different filesystems, and having each of them do their own caching and their own locking would be a complete disaster.</p>
<p>So one of the main things the VFS layer does is really handle all the locking and caching of pathname components, and handle all the serialization and the mount point traversal, and do it all with mostly lock-free algorithms (<a href="https://en.wikipedia.org/wiki/Read-copy-update">RCU</a>), but also with some really clever lock-like things (the Linux kernel "lockref" lock is a very special "spinlock with reference count" which was literally designed <em>for</em> the dcache caching, and it's basically a specialized lock-aware reference count that can do lock elision for certain common situations).</p>
<p>End result: the low-level file systems still need to do the actual lookup for things that aren't cached, but they don't need to worry about caching and all the coherency rules and the atomicity rules that go along with pathname lookups. The VFS handles all that for them.</p>
<p>And it all outperforms anything any other operating system has done, while basically scaling perfectly to even machines with thousands of CPU's. And it does that even when those machines all end up touching the same directories (because things like the root directory, or a project home directory, are things that even heavily threaded applications all touch at the same time, and that don't get distributed to any kind of per-thread behavior).</p>
<p>So it's not just "better", it's "Better" with a capital 'B'. Nothing else out there comes even <em>close</em>. The Linux dcache is simply in a class all its own.</p>
<p><strong>JA: The past year has been difficult all around the world. How has the COVID-19 pandemic affected the kernel development process?</strong></p>
<p>LT: It actually has had very minimal effect, because of how we always worked. Email really ends up being a wonderful tool, and we didn't rely on face-to-face meetings.</p>
<p>Yes, it did affect the yearly kernel summit last year (and this year is still up in the air), and most conferences got cancelled or turned virtual. And people who worked in offices before mostly started working from home (but a lot of the core kernel maintainers already did so). So a lot of things around it changed, but the core development itself worked exactly as before.</p>
<p>And it obviously affected all our lives in other ways - just the social ramifications in general. But on the whole, being a kernel developer who already interacted with people almost entirely over email, we were probably some of the least affected.</p>
<h2>Git Distributed Version Control System</h2>
<p><strong>JA: Linux is only one of your ubiquitous contributions to open source. In 2005 you also created Git, the extremely popular distributed source control system. You quickly migrated the Linux kernel source tree out of the proprietary Bitkeeper and into the newly created and open sourced Git, and in the same year handed off maintainership to <a href="https://github.com/gitster">Junio Hamano</a>. There's a lot of fascinating history there, what led you to handing off leadership on this project so quickly, and how did you find and select Junio?</strong></p>
<p>LT: So there's two parts to this answer.</p>
<picture><source type="image/webp" srcset="/img/8TevYw77SE-512.webp 512w"><img loading="lazy" decoding="async" src="/img/8TevYw77SE-512.png" class="pull-right img-responsive img-thumbnail col-lg-3" alt="Git Logo" width="512" height="214"></picture>
<p>The first part is that I very much did <em>not</em> want to create a new source control system. Linux was created because I find the low-level interface between hardware and software fascinating - it's basically a labor of love and personal interest. In contrast, Git was created out of necessity: not because I found source control interesting, but because I absolutely despised most source control systems out there, and the one that I found most palatable and had really worked fairly well in the Linux development model (BitKeeper) had become untenable.</p>
<p>End result: I've been doing Linux over 30 years (the anniversary of the first <em>release</em> is still a few months away, but I had started on what would become Linux already 30 years ago), and I've been maintaining it the whole time. But Git? I did not ever think I'd really want to maintain it long-term. I love using it, and I obviously think it's the best SCM out there by a huge amount, but it's not my fundamental passion and interest, if you see what I'm trying to say.</p>
<p>So I always wanted somebody else to maintain the SCM for me - in fact I would have been happiest had I not had to write one in the first place.</p>
<p>That's kind of the background.</p>
<p>As to Junio - he was actually one of the very first people who came in as Git developers. His first change came in within days after I had made the very first (and very rough) version of Git public. So Junio has actually been around some since pretty much the beginning of Git.</p>
<p>But it's not like I handed the project off to the first random person to show up. I did maintain Git for a few months, and the thing that made me ask Junio if he wanted to be the maintainer is that very-hard-to-describe notion of "good taste". I don't really have a better description for it: programming is about solving technical problems, but <em>how</em> you solve them, and how you think about them is important too, and it's one of those things you start to recognize over time: certain people have that "good taste" thing and pick the "right" solution.</p>
<p>I don't want to claim that programming is an art, because it really is mostly just about "good engineering". I'm a big believer in Thomas Edison's "one percent inspiration and ninety-nine percent perspiration" mantra: it's almost all about the little details and the everyday grunt-work. But there <em>is</em> that occasional "inspiration" part, that "good taste" thing that is about more than just solving some problem - solving it cleanly and nicely and yes, even beautifully.</p>
<p>And Junio had that "good taste".</p>
<p>And every time Git comes up, I try to remember to really make it very very clear: I may have started and designed the core ideas in Git, but I often get too much credit for that part. It's been 15+ years, and I was really only involved with Git in that first year. Junio has been an exemplary maintainer, and he's the one who has made Git what it is today.</p>
<p>Btw, this whole "good taste" thing and finding people who have it, and trusting them - that's very much not just about Git. It's very much the history of Linux too. Unlike Git, Linux is obviously a project that I still <em>do</em> actively maintain, but very much like Git, it's also a project with lots of other people involved, and I think one of the big successes of Linux is having literally hundreds of maintainers around, all with that hard-to-define "good taste", and all people who maintain parts of the kernel.</p>
<p><strong>JA: Have you ever given control to a maintainer only to later determine it was the wrong decision?</strong></p>
<p>LT: Our maintainership structure has never been so black-and-white and inflexible that that would ever have been an issue. In fact, it's not like we even make maintainership control be something very documented: we do have a MAINTAINERS file, but that's so that you can <em>find</em> the right people, it's not really a sign of some exclusive ownership.</p>
<p>So the whole "who owns what" is more of a fluid guideline, and a "this person is active and is doing a good job" than some "oops, now we gave that person ownership and then he screwed up".</p>
<p>And it's fluid also in the sense that maybe you are the maintainer of one subsystem, but if there's something you then need from another subsystem, you can often cross borders. Usually it's something that people <em>talk</em> about extensively before doing, of course, but the point is that it does happen and it's not some hard "you're only supposed to touch <em>that</em> file" kind of rule.</p>
<p>In fact, this is actually somewhat related to the earlier discussion about the licensing, and another example of how one of the design principles of "Git" was that whole "everybody has their own tree, and no tree is technically special".</p>
<p>Because a lot of other projects have used tooling - like CVS or SVN - that fundamentally <em>does</em> make some people special, and that fundamentally does have a "ownership" that goes along with it. In the BSD world, they call it the "commit bit": giving a maintainer the "commit bit" means that he's now allowed to commit to the central repository (or at least parts of it).</p>
<p>I always detested that model, because it inevitably results in politics and the "clique" model of development, where some people are special and implicitly trusted. And the problem isn't even the "implicitly trusted" part - it's really that the other side of the coin is that <em>other</em> people are <em>not</em> trusted, and are by definition outsiders, and have to go through one of the guardians.</p>
<p>Again, in Git that kind of situation doesn't exist. Everybody is equal. Anybody can do a clone, do their own development, and if they do a good job they can get merged back (and if they do an outstanding job, they become maintainers, and they end up being the ones doing the merging into their trees ;).</p>
<p>So there's no need to give people special privileges - no need for that "commit bit". And that also means that you avoid the politics around it, and you don't need to trust people implicitly. If they end up doing a bad job - or more commonly, just end up fading away and finding another interest - they don't get merged back, and they also don't stand in the way of other people who have fresh new ideas.</p>
<p><strong>JA: Do new features of Git ever impress you, and become part of your workflow? Are there features you'd still like to see added?</strong></p>
<p>LT: My use cases were obviously the first ones to be fulfilled, so for me it has seldom been about new features.</p>
<p>Over the years, Git has certainly improved, and some of it has been noticeable in my workflow too. For example, Git has always been fairly fast - it was one of my design goals, after all - but a lot of it was originally done as shell-script around some core helper programs. Over the years, most of that shell scripting has gone away, and it means that I can apply patch-bombs from Andrew Morton even faster than I could originally. Which is very gratifying, as that was actually one of the early benchmarks I used for performance testing.</p>
<p>So Git has always been good for me, but it's gotten better.</p>
<p>The <em>big</em> improvements have been about how much better it has become to use as a "regular user". A lot of that has been people learning the Git workflow and just getting used to it (it <em>is</em> very different from CVS and other things that people used to be used to), but a lot of it is Git itself having become a lot more pleasant to use.</p>
<h2>Conclusion, Part One</h2>
<p>In the second part of this interview, Linus talks about what he's learned from managing a large open source project. He offers much insight and advice to maintainers about what he's found works best for him, and how he avoids burn out. He also talks about the Linux Foundation, and what he does when he's not focused on developing the Linux kernel.</p>
<hr>
<h5>For Part Two, <a href="/blog/interview-linus-torvalds-open-source-and-beyond/" title="click here">click here</a></h5>
<p><em>Click the link to see what other <a href="/open-source-leaders/" title="Open Source Leaders">Open Source Leaders</a> talk with Tag1 about.</em></p>
<ul class="tags flex flex-wrap gap-1.5 list-none p-0 my-8" aria-label="Tags">
<li>
<a href="/insights/?tag=Architecture#selected" class="block bg-lightest-grey py-2 px-4 text-nowrap text-[14px] font-medium !no-underline !decoration-0 hover:!underline hover:!decoration-2">Architecture</a>
</li>
<li>
<a href="/insights/?tag=Architecture+Leadership#selected" class="block bg-lightest-grey py-2 px-4 text-nowrap text-[14px] font-medium !no-underline !decoration-0 hover:!underline hover:!decoration-2">Architecture Leadership</a>
</li>
<li>
<a href="/insights/?tag=DevOps#selected" class="block bg-lightest-grey py-2 px-4 text-nowrap text-[14px] font-medium !no-underline !decoration-0 hover:!underline hover:!decoration-2">DevOps</a>
</li>
<li>
<a href="/insights/?tag=Drupal#selected" class="block bg-lightest-grey py-2 px-4 text-nowrap text-[14px] font-medium !no-underline !decoration-0 hover:!underline hover:!decoration-2">Drupal</a>
</li>
<li>
<a href="/insights/?tag=Infrastructure#selected" class="block bg-lightest-grey py-2 px-4 text-nowrap text-[14px] font-medium !no-underline !decoration-0 hover:!underline hover:!decoration-2">Infrastructure</a>
</li>
<li>
<a href="/insights/?tag=Open+Source+CMS#selected" class="block bg-lightest-grey py-2 px-4 text-nowrap text-[14px] font-medium !no-underline !decoration-0 hover:!underline hover:!decoration-2">Open Source CMS</a>
</li>
<li>
<a href="/insights/?tag=Performance#selected" class="block bg-lightest-grey py-2 px-4 text-nowrap text-[14px] font-medium !no-underline !decoration-0 hover:!underline hover:!decoration-2">Performance</a>
</li>
<li>
<a href="/insights/?tag=Platforms#selected" class="block bg-lightest-grey py-2 px-4 text-nowrap text-[14px] font-medium !no-underline !decoration-0 hover:!underline hover:!decoration-2">Platforms</a>
</li>
<li>
<a href="/insights/?tag=Scalability#selected" class="block bg-lightest-grey py-2 px-4 text-nowrap text-[14px] font-medium !no-underline !decoration-0 hover:!underline hover:!decoration-2">Scalability</a>
</li>
<li>
<a href="/insights/?tag=User+Experience#selected" class="block bg-lightest-grey py-2 px-4 text-nowrap text-[14px] font-medium !no-underline !decoration-0 hover:!underline hover:!decoration-2">User Experience</a>
</li>
<li>
<a href="/insights/?tag=Web+Development#selected" class="block bg-lightest-grey py-2 px-4 text-nowrap text-[14px] font-medium !no-underline !decoration-0 hover:!underline hover:!decoration-2">Web Development</a>
</li>
</ul>
<div class="mt-8">
<div class="custom-share font-bold border-dark-grey border-t pt-4">
<div class="a2a_kit a2a_kit_size_32 a2a_default_style">
<a class="a2a_dd text-[var(--link-color)]" href="https://www.addtoany.com/share">Share</a>
</div>
<style>
/* Hide More button everywhere */
.a2a_more,
.custom-share .a2a_more,
div.a2a_menu a.a2a_more {
display: none !important;
}
.custom-share .a2a_dd {
--link-color: var(--color-jade);
background: none !important;
border: none !important;
padding: 0.5rem 0 !important;
margin: 0 !important;
display: inline-block !important;
width: auto !important;
height: auto !important;
text-decoration: none;
cursor: pointer;
font: inherit;
font-size: 1.125rem;
}
.custom-share .a2a_dd:after {
content: ' ';
background-image: url('/img/ui/icons/ui/external.svg');
background-position: right center;
margin-left: 8px;
margin-bottom: -1px;
width: 24px;
height: 24px;
display: inline-block;
}
.custom-share.share-align-right .a2a_dd {float: right;}
.custom-share .a2a_dd * { display: none !important; }
</style>
<script>
var a2a_config = a2a_config || {};
a2a_config.onclick = 1; // mini menu on click
a2a_config.native = false; // force AddToAny, not device sheet
a2a_config.num_services = 12;
a2a_config.prioritize = [
'copy_link','email','linkedin','x','bluesky','mastodon','reddit','hacker_news','slashdot','print','whatsapp','sms'
];
</script>
<script async="" src="https://static.addtoany.com/menu/page.js"></script>
</div>
</div>
</div>
</div></div>
</section>
</div>
<section class="relative py-16 grid gap-16 md:content-center border-t border-cream text-black fill-black bg-white">
<div class="absolute top-0 right-0 bottom-0 left-0 overflow-hidden">
<div class="bg-pattern bg-pattern-T1 bg-grey opacity-10"></div>
</div>
<div class="container grid gap-8">
<div x-data='{ cards: [{"id":"interview-linus-torvalds-open-source-and-beyond-part-2","category":"Blog Post","url":"/blog/interview-linus-torvalds-open-source-and-beyond-part-2/","decorativeLandscapeImageHtml":"<picture><source type=\"image/webp\" srcset=\"/img/built/WyYXSJ8o0T-540.webp 540w, /img/built/WyYXSJ8o0T-594.webp 594w, /img/built/WyYXSJ8o0T-764.webp 764w, /img/built/WyYXSJ8o0T-796.webp 796w, /img/built/WyYXSJ8o0T-1020.webp 1020w\" sizes=\"(min-width: 1536px) 382px, (min-width: 1280px) 297px, (min-width: 1024px) 398px, (min-width: 768px) 270px, 510px\"><source type=\"image/png\" srcset=\"/img/built/WyYXSJ8o0T-540.png 540w, /img/built/WyYXSJ8o0T-594.png 594w, /img/built/WyYXSJ8o0T-764.png 764w, /img/built/WyYXSJ8o0T-796.png 796w, /img/built/WyYXSJ8o0T-1020.png 1020w\" sizes=\"(min-width: 1536px) 382px, (min-width: 1280px) 297px, (min-width: 1024px) 398px, (min-width: 768px) 270px, 510px\"><img src=\"/img/built/WyYXSJ8o0T-540.jpeg\" alt=\"\" loading=\"lazy\" decoding=\"async\" class=\"w-full aspect-landscape object-cover\" width=\"1020\" height=\"510\" srcset=\"/img/built/WyYXSJ8o0T-540.jpeg 540w, /img/built/WyYXSJ8o0T-594.jpeg 594w, /img/built/WyYXSJ8o0T-764.jpeg 764w, /img/built/WyYXSJ8o0T-796.jpeg 796w, /img/built/WyYXSJ8o0T-1020.jpeg 1020w\" sizes=\"(min-width: 1536px) 382px, (min-width: 1280px) 297px, (min-width: 1024px) 398px, (min-width: 768px) 270px, 510px\"></picture>","author":"Jeremy Andrews","postDateFull":"May 5, 2021","title":"An Interview With Linus Torvalds: Open Source And Beyond - Part 2","linkButtonHTML":"\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n \n \n\n \n \n\n \n \n \n \n\n \n \n \n \n \n\n \n <a href=\"/blog/interview-linus-torvalds-open-source-and-beyond-part-2/\"\n class=\"group flex items-stretch w-fit font-headline font-medium focus:underline focus:outline-none transition-all duration-200 text-navy\"\n \n \n >\n\n \n <span class=\"pr-4 py-3\">\n Read More\n </span>\n\n \n \n <span class=\"bg-turquoise group-hover:bg-bright-turquoise group-focus:bg-bright-turquoise border-turquoise group-hover:border-bright-turquoise group-focus:border-turquoise box-border border-5 px-1 py-2 ml-[1px] flex items-center justify-center transition-colors duration-200\">\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" class=\"h-6 w-6\" aria-hidden=\"true\"><path d=\"M9 18l6-6-6-6\" stroke-linecap=\"round\" stroke-linejoin=\"round\" /></svg>\n </span>\n \n </a>\n\n"},{"id":"how-grow-support-and-fund-your-open-source-project-dries-buytaert","category":"Tag1 Team Talks","url":"/tag1-team-talks/how-grow-support-and-fund-your-open-source-project-dries-buytaert/","decorativeLandscapeImageHtml":"<picture><source type=\"image/webp\" srcset=\"/img/built/y0Qil-d1D0-540.webp 540w, /img/built/y0Qil-d1D0-594.webp 594w, /img/built/y0Qil-d1D0-764.webp 764w, /img/built/y0Qil-d1D0-796.webp 796w, /img/built/y0Qil-d1D0-1020.webp 1020w\" sizes=\"(min-width: 1536px) 382px, (min-width: 1280px) 297px, (min-width: 1024px) 398px, (min-width: 768px) 270px, 510px\"><source type=\"image/png\" srcset=\"/img/built/y0Qil-d1D0-540.png 540w, /img/built/y0Qil-d1D0-594.png 594w, /img/built/y0Qil-d1D0-764.png 764w, /img/built/y0Qil-d1D0-796.png 796w, /img/built/y0Qil-d1D0-1020.png 1020w\" sizes=\"(min-width: 1536px) 382px, (min-width: 1280px) 297px, (min-width: 1024px) 398px, (min-width: 768px) 270px, 510px\"><img src=\"/img/built/y0Qil-d1D0-540.jpeg\" alt=\"\" loading=\"lazy\" decoding=\"async\" class=\"w-full aspect-landscape object-cover\" width=\"1020\" height=\"510\" srcset=\"/img/built/y0Qil-d1D0-540.jpeg 540w, /img/built/y0Qil-d1D0-594.jpeg 594w, /img/built/y0Qil-d1D0-764.jpeg 764w, /img/built/y0Qil-d1D0-796.jpeg 796w, /img/built/y0Qil-d1D0-1020.jpeg 1020w\" sizes=\"(min-width: 1536px) 382px, (min-width: 1280px) 297px, (min-width: 1024px) 398px, (min-width: 768px) 270px, 510px\"></picture>","author":"Lynette Miles","postDateFull":"March 31, 2021","title":"How to Grow, Support, and Fund your Open Source Project - with Dries Buytaert - Pt. 1","linkButtonHTML":"\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n \n \n\n \n \n\n \n \n \n \n\n \n \n \n \n \n\n \n <a href=\"/tag1-team-talks/how-grow-support-and-fund-your-open-source-project-dries-buytaert/\"\n class=\"group flex items-stretch w-fit font-headline font-medium focus:underline focus:outline-none transition-all duration-200 text-navy\"\n \n \n >\n\n \n <span class=\"pr-4 py-3\">\n Read More\n </span>\n\n \n \n <span class=\"bg-turquoise group-hover:bg-bright-turquoise group-focus:bg-bright-turquoise border-turquoise group-hover:border-bright-turquoise group-focus:border-turquoise box-border border-5 px-1 py-2 ml-[1px] flex items-center justify-center transition-colors duration-200\">\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" class=\"h-6 w-6\" aria-hidden=\"true\"><path d=\"M9 18l6-6-6-6\" stroke-linecap=\"round\" stroke-linejoin=\"round\" /></svg>\n </span>\n \n </a>\n\n"},{"id":"gander_drupal-automated-performance-testing","category":"Tag1 Team Talks","url":"/tag1-team-talks/gander_drupal-automated-performance-testing/","decorativeLandscapeImageHtml":"<picture><source type=\"image/webp\" srcset=\"/img/built/9TeLre8S5g-540.webp 540w, /img/built/9TeLre8S5g-594.webp 594w, /img/built/9TeLre8S5g-764.webp 764w, /img/built/9TeLre8S5g-796.webp 796w, /img/built/9TeLre8S5g-1020.webp 1020w\" sizes=\"(min-width: 1536px) 382px, (min-width: 1280px) 297px, (min-width: 1024px) 398px, (min-width: 768px) 270px, 510px\"><source type=\"image/png\" srcset=\"/img/built/9TeLre8S5g-540.png 540w, /img/built/9TeLre8S5g-594.png 594w, /img/built/9TeLre8S5g-764.png 764w, /img/built/9TeLre8S5g-796.png 796w, /img/built/9TeLre8S5g-1020.png 1020w\" sizes=\"(min-width: 1536px) 382px, (min-width: 1280px) 297px, (min-width: 1024px) 398px, (min-width: 768px) 270px, 510px\"><img src=\"/img/built/9TeLre8S5g-540.jpeg\" alt=\"\" loading=\"lazy\" decoding=\"async\" class=\"w-full aspect-landscape object-cover\" width=\"1020\" height=\"510\" srcset=\"/img/built/9TeLre8S5g-540.jpeg 540w, /img/built/9TeLre8S5g-594.jpeg 594w, /img/built/9TeLre8S5g-764.jpeg 764w, /img/built/9TeLre8S5g-796.jpeg 796w, /img/built/9TeLre8S5g-1020.jpeg 1020w\" sizes=\"(min-width: 1536px) 382px, (min-width: 1280px) 297px, (min-width: 1024px) 398px, (min-width: 768px) 270px, 510px\"></picture>","author":"Michael Meyers","postDateFull":"December 13, 2023","title":"Gander: Performance Testing Made Easy","linkButtonHTML":"\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n \n \n \n\n \n \n\n \n \n \n \n\n \n \n \n \n \n\n \n <a href=\"/tag1-team-talks/gander_drupal-automated-performance-testing/\"\n class=\"group flex items-stretch w-fit font-headline font-medium focus:underline focus:outline-none transition-all duration-200 text-navy\"\n \n \n >\n\n \n <span class=\"pr-4 py-3\">\n Read More\n </span>\n\n \n \n <span class=\"bg-turquoise group-hover:bg-bright-turquoise group-focus:bg-bright-turquoise border-turquoise group-hover:border-bright-turquoise group-focus:border-turquoise box-border border-5 px-1 py-2 ml-[1px] flex items-center justify-center transition-colors duration-200\">\n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" class=\"h-6 w-6\" aria-hidden=\"true\"><path d=\"M9 18l6-6-6-6\" stroke-linecap=\"round\" stroke-linejoin=\"round\" /></svg>\n </span>\n \n </a>\n\n"}] }' class="grid gap-10">
<h2 id="related-insights" class="lg:text-center text-3xl">Related Insights</h2>
<ul class="grid md:grid-cols-2 xl:grid-cols-3 gap-8">
<template x-for="card in cards" x-bind:key="card.id">
<li class="article-card flex flex-col card border border-turquoise">
<div class="bg-[#F5F5F5] p-8 pb-0 border-b border-turquoise grid gap-7">
<span class="eyebrow" x-text="card.category"></span>
<div x-html="card.decorativeLandscapeImageHtml"></div>
</div>
<div class="bg-white flex-grow flex flex-col justify-between p-8 pt-2 gap-2">
<div class="font-bold text-[0.875rem] leading-[2.286] text-jade" x-text="card.postDateFull"></div>
<h3 x-text="card.title" class="font-text text-base text-jade line-clamp-3"></h3>
<div class="font-bold text-[0.875rem] leading-[1.5] text-jade" x-text="card.author"></div>
<div class="flex items-center mt-auto justify-end">
<div x-html="card.linkButtonHTML"></div>
</div>
</div>
</li>
</template>
</ul>
</div>
</div>
</section>
</article>
<div data-pagefind-ignore="">
<section class="relative py-16 grid gap-16 md:content-center text-white fill-white bg-jade">
<div class="absolute top-0 right-0 bottom-0 left-0 overflow-hidden">
<div class="background-svg bg-blue opacity-10" style="mask-image: url('/img/ui/line-art/global-connection.svg'); mask-position: top right;"></div>
</div>
<div class="container grid gap-8">
<div class="mx-auto lg:w-3/4 lg:text-center grid grid-cols-1 gap-8 xl:gap-10">
<header class="grid gap-4 xl:gap-10">
<p class="eyebrow">Work With Tag1</p>
<h2>Be in Capable Digital Hands</h2>
</header>
<div class="mx-auto w-2/3 grid gap-8 xl:gap-18">
<p class="text-xl">Gain confidence and clarity with expert guidance that turns complex technical decisions into clear, informed choices—without the uncertainty.</p>
<div class="mx-auto">
<a href="/contact/" class="group flex items-stretch w-fit font-headline font-medium focus:underline focus:outline-none transition-all duration-200 text-navy">
<span class="bg-turquoise group-hover:bg-bright-turquoise group-focus:bg-bright-turquoise px-4 py-3 flex-1 flex items-center transition-colors duration-200">
Work With Us
</span>
<span class="bg-turquoise group-hover:bg-bright-turquoise group-focus:bg-bright-turquoise border-turquoise group-hover:border-bright-turquoise group-focus:border-turquoise box-border border-5 px-1 py-2 ml-[1px] flex items-center justify-center transition-colors duration-200">
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" class="h-6 w-6" aria-hidden="true"><path d="M9 18l6-6-6-6" stroke-linecap="round" stroke-linejoin="round"></path></svg>
</span>
</a>
</div>
</div>
</div>
</div>
</section>
</div>
</main>
<section class="relative py-16 grid gap-16 md:content-center text-white fill-white bg-gradient-navy-purple">
<div class="absolute top-0 right-0 bottom-0 left-0 overflow-hidden">
<div class="background-svg opacity-30 bg-white left-1/2 transform -translate-x-1/2 w-full max-w-screen-2xl top-8 md:top-0 md:bottom-0 md:my-auto" style="mask-image: url('/img/ui/logos/tag1/tag1-lineart.svg'); mask-position: center; mask-size: calc(100% - 4rem) calc(100% - 4rem); mask-repeat: no-repeat;"></div>
</div>
<div class="container grid gap-8">
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "WPFooter",
"name": "Site Footer",
"description": "Main site footer for Tag1 Consulting",
"url": "https://www.tag1.com",
"hasPart": {
"@type": "SiteNavigationElement",
"name": "Footer Navigation",
"url": "https://www.tag1.com",
"hasPart": [
{
"@type": "SiteNavigationElement",
"name": "What We Do"
},
{
"@type": "SiteNavigationElement",
"name": "Insights",
"url": "https://www.tag1.com/insights/"
},
{
"@type": "SiteNavigationElement",
"name": "Innovations"
},
{
"@type": "SiteNavigationElement",
"name": "Why Tag1",
"url": "https://www.tag1.com/why-tag1/"
},
{
"@type": "SiteNavigationElement",
"name": "Contact Us",
"url": "https://www.tag1.com/contact/"
}
]
}
}
</script>
<footer class="text-sm" data-pagefind-ignore="">
<div>
<a href="/" aria-label="Tag1 Logo" class="block w-[170px] fill-white mb-8">
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 288 80" style="fill: currentColor" xml:space="preserve">
<polygon points="4.5,18.8 26.3,18.8 26.3,74.4 52.2,74.4 56.5,60.2 42.7,60.2 42.7,18.8 64,18.8 64,5.2 4.5,5.2 "></polygon>
<polygon points="67.3,74.5 84.2,74.5 103.7,5.2 86.8,5.2 "></polygon>
<polygon points="104.9,5.2 124.2,74.5 141.1,74.5 121.9,5.2 "></polygon>
<polygon points="261.4,60.8 261.4,5.2 235.4,5.2 231.2,19.4 245,19.4 245,60.8 223.7,60.8 223.7,74.4 283.2,74.4 283.2,60.8 "></polygon>
<path d="M185.7,48.6H200v9.7c-4.6,2.3-9.7,3.3-14.8,3.1c-14.4,0-22.6-9.3-22.6-22.3c0-12.2,7.5-21.4,19.5-21.5
c5.1-0.3,10.1,1.5,13.9,4.9l6-14.8c-6.1-3.3-13-4.9-19.9-4.7c-21.4,0-36.4,15.1-36.4,36.2c0,22.1,15.3,36.7,39.2,36.7
c16.7,0,27.4-6.4,31.3-9.9V34.9h-24.8L185.7,48.6z"></path>
</svg>
</a>
<p class="mb-4">© Copyright <span id="current-year"></span></p>
<p class="mb-4">Tag1 Consulting, Inc.</p>
<p class="mb-8">7901 4th Street N #5853, St. Petersburg, FL 33702</p>
<p class="text-[22px]"><a href="tel:877-875-8824" class="underline hover:no-underline">877-875-8824</a> (toll free) · <a href="tel:561-952-6824" class="underline hover:no-underline">561-952-6824</a></p>
</div>
<div class="mt-16 md:mt-32">
<nav>
<ul role="menubar" class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-5 gap-12 lg:gap-8" aria-label="Footer Navigation">
<li role="presentation" class="col-span-1">
<h2 id="what-we-do" class="text-base uppercase" role="presentation">What We Do</h2>
<ul role="menu" class="mt-4 lg:mt-8 space-y-5" aria-labelledby="what-we-do">
<li role="presentation"><a role="menuitem" href="/architecture-leadership/">Architecture Leadership & Advisory Services</a></li>
<li role="presentation"><a role="menuitem" href="/ai/">Artificial Intelligence (AI)</a></li>
<li role="presentation"><a role="menuitem" href="/audits/">Audit Services</a></li>
<li role="presentation"><a role="menuitem" href="/continuous-development/">Continuous Development</a></li>
<li role="presentation"><a role="menuitem" href="/data-analytics/">Data Analytics</a></li>
<li role="presentation"><a role="menuitem" href="/emergency/">Emergency Services</a></li>
<li role="presentation"><a role="menuitem" href="/wordpress/">Enterprise WordPress Services</a></li>
<li role="presentation"><a role="menuitem" href="/experience-design/">Experience Design & Strategy</a></li>
<li role="presentation"><a role="menuitem" href="/drupal/">Expert Drupal Services</a></li>
<li role="presentation"><a role="menuitem" href="/infrastructure/">Infrastructure & DevOps</a></li>
<li role="presentation"><a role="menuitem" href="/migrations/">Migration Services</a></li>
<li role="presentation"><a role="menuitem" href="/web-development/">Web Development & Architecture</a></li>
<li role="presentation"><a role="menuitem" href="/performance/">Website Performance Management</a></li>
</ul>
</li>
<li role="presentation" class="col-span-1">
<h2 id="insights" class="text-base uppercase" role="presentation"><a role="menuitem" href="/insights/">Insights</a></h2>
</li>
<li role="presentation" class="col-span-1">
<h2 id="innovations" class="text-base uppercase" role="presentation">Innovations</h2>
<ul role="menu" class="mt-4 lg:mt-8 space-y-5" aria-labelledby="innovations">
<li role="presentation"><a role="menuitem" href="/scolta/">Scolta AI Search</a></li>
<li role="presentation"><a role="menuitem" href="/transom/">Transom AI Site Builder</a></li>
<li role="presentation"><a role="menuitem" href="/workspaces/">Workspaces</a></li>
<li role="presentation"><a role="menuitem" href="/drupal-migration-tooling/">Drupal Migration Tooling</a></li>
<li role="presentation"><a role="menuitem" href="/gander/">Gander</a></li>
<li role="presentation"><a role="menuitem" href="/plus-suite/">Plus Suite Page Builder</a></li>
<li role="presentation"><a role="menuitem" href="/goose/">Goose</a></li>
</ul>
</li>
<li role="presentation" class="col-span-1">
<h2 id="why-tag1" class="text-base uppercase" role="presentation"><a role="menuitem" href="/why-tag1/">Why Tag1</a></h2>
<ul role="menu" class="mt-4 lg:mt-8 space-y-5" aria-labelledby="why-tag1">
<li role="presentation"><a role="menuitem" href="/team/">Our Team</a></li>
<li role="presentation"><a role="menuitem" href="/our-work/">Our Work</a></li>
</ul>
</li>
<li role="presentation" class="col-span-1">
<h2 id="contact-us" class="text-base uppercase" role="presentation"><a role="menuitem" href="/contact/">Contact Us</a></h2>
</li>
</ul>
</nav>
</div>
<div class="mt-24 md:mt-48 lg:mt-96 grid grid-cols-1 lg:grid-cols-2">
<div class="col-span-1 mb-8 lg:mb-0">
<p class="mb-4">Drupal is a registered trademark of Dries Buytaert</p>
<nav>
<ul role="menu" aria-label="Legal links" class="flex space-x-2">
<li role="presentation">
<a role="menuitem" href="https://trust.tag1consulting.com/?_gl=1*1nxe9nx*_gcl_au*NTQxMTIzOTkyLjE3NTc2MjI0OTk.*_ga*MTk1OTIxNzk4NS4xNzU3NjIyMTI2*_ga_G09LDSTN94*czE3NTg4MTAyODQkbzEyJGcxJHQxNzU4ODEzMTcyJGo2MCRsMCRoNTIyNzM4Mzc0" target="_blank" class="underline hover:no-underline">Trust Center</a>
<span class="ml-2">|</span>
</li>
<li role="presentation">
<a role="menuitem" href="/terms/" class="underline hover:no-underline">Terms of Use</a>
<span class="ml-2">|</span>
</li>
<li role="presentation">
<a role="menuitem" href="/privacy-policy/" class="underline hover:no-underline">Privacy Policy</a>
</li>
</ul>
</nav>
</div>
<div class="col-span-1">
<nav>
<ul role="menu" aria-label="Social Media links" class="flex space-x-4">
<li role="presentation">
<a href="https://www.linkedin.com/company/tag1consulting/" aria-label="LinkedIn" role="menuitem" target="_blank" class="block w-6 h-6 fill-white">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 640 640"><!--!Font Awesome Free 7.0.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2025 Fonticons, Inc.--><path d="M512 96L127.9 96C110.3 96 96 110.5 96 128.3L96 511.7C96 529.5 110.3 544 127.9 544L512 544C529.6 544 544 529.5 544 511.7L544 128.3C544 110.5 529.6 96 512 96zM231.4 480L165 480L165 266.2L231.5 266.2L231.5 480L231.4 480zM198.2 160C219.5 160 236.7 177.2 236.7 198.5C236.7 219.8 219.5 237 198.2 237C176.9 237 159.7 219.8 159.7 198.5C159.7 177.2 176.9 160 198.2 160zM480.3 480L413.9 480L413.9 376C413.9 351.2 413.4 319.3 379.4 319.3C344.8 319.3 339.5 346.3 339.5 374.2L339.5 480L273.1 480L273.1 266.2L336.8 266.2L336.8 295.4L337.7 295.4C346.6 278.6 368.3 260.9 400.6 260.9C467.8 260.9 480.3 305.2 480.3 362.8L480.3 480z"></path></svg>
</a>
</li>
<li role="presentation">
<a href="https://www.facebook.com/tag1consulting/" aria-label="Facebook" role="menuitem" target="_blank" class="block w-6 h-6 fill-white">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 640 640"><!--!Font Awesome Free 7.0.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2025 Fonticons, Inc.--><path d="M576 320C576 178.6 461.4 64 320 64C178.6 64 64 178.6 64 320C64 440 146.7 540.8 258.2 568.5L258.2 398.2L205.4 398.2L205.4 320L258.2 320L258.2 286.3C258.2 199.2 297.6 158.8 383.2 158.8C399.4 158.8 427.4 162 438.9 165.2L438.9 236C432.9 235.4 422.4 235 409.3 235C367.3 235 351.1 250.9 351.1 292.2L351.1 320L434.7 320L420.3 398.2L351 398.2L351 574.1C477.8 558.8 576 450.9 576 320z"></path></svg>
</a>
</li>
<li role="presentation">
<a href="https://x.com/tag1consulting" aria-label="X" role="menuitem" target="_blank" class="block w-6 h-6 fill-white">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 640 640"><!--!Font Awesome Free 7.0.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2025 Fonticons, Inc.--><path d="M453.2 112L523.8 112L369.6 288.2L551 528L409 528L297.7 382.6L170.5 528L99.8 528L264.7 339.5L90.8 112L236.4 112L336.9 244.9L453.2 112zM428.4 485.8L467.5 485.8L215.1 152L173.1 152L428.4 485.8z"></path></svg>
</a>
</li>
<li role="presentation">
<a href="https://bsky.app/profile/tag1consulting.com" aria-label="Bluesky" role="menuitem" target="_blank" class="block w-6 h-6 fill-white">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 640 640"><!--!Font Awesome Free 7.0.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2025 Fonticons, Inc.--><path d="M439.8 358.7C436.5 358.3 433.1 357.9 429.8 357.4C433.2 357.8 436.5 358.3 439.8 358.7zM320 291.1C293.9 240.4 222.9 145.9 156.9 99.3C93.6 54.6 69.5 62.3 53.6 69.5C35.3 77.8 32 105.9 32 122.4C32 138.9 41.1 258 47 277.9C66.5 343.6 136.1 365.8 200.2 358.6C203.5 358.1 206.8 357.7 210.2 357.2C206.9 357.7 203.6 358.2 200.2 358.6C106.3 372.6 22.9 406.8 132.3 528.5C252.6 653.1 297.1 501.8 320 425.1C342.9 501.8 369.2 647.6 505.6 528.5C608 425.1 533.7 372.5 439.8 358.6C436.5 358.2 433.1 357.8 429.8 357.3C433.2 357.7 436.5 358.2 439.8 358.6C503.9 365.7 573.4 343.5 593 277.9C598.9 258 608 139 608 122.4C608 105.8 604.7 77.7 586.4 69.5C570.6 62.4 546.4 54.6 483.2 99.3C417.1 145.9 346.1 240.4 320 291.1z"></path></svg>
</a>
</li>
<li role="presentation">
<a href="https://drupal.community/@tag1consulting@fosstodon.org" aria-label="Mastodon" role="menuitem" target="_blank" class="block w-6 h-6 fill-white">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 640 640"><!--!Font Awesome Free 7.0.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2025 Fonticons, Inc.--><path d="M529 243.1C529 145.9 465.3 117.4 465.3 117.4C402.8 88.7 236.7 89 174.8 117.4C174.8 117.4 111.1 145.9 111.1 243.1C111.1 358.8 104.5 502.5 216.7 532.2C257.2 542.9 292 545.2 320 543.6C370.8 540.8 399.3 525.5 399.3 525.5L397.6 488.6C397.6 488.6 361.3 500 320.5 498.7C280.1 497.3 237.5 494.3 230.9 444.7C230.3 440.1 230 435.4 230 430.8C315.6 451.7 388.7 439.9 408.7 437.5C464.8 430.8 513.7 396.2 519.9 364.6C529.7 314.8 528.9 243.1 528.9 243.1zM453.9 368.3L407.3 368.3L407.3 254.1C407.3 204.4 343.3 202.5 343.3 261L343.3 323.5L297 323.5L297 261C297 202.5 233 204.4 233 254.1L233 368.3L186.3 368.3C186.3 246.2 181.1 220.4 204.7 193.3C230.6 164.4 284.5 162.5 308.5 199.4L320.1 218.9L331.7 199.4C355.8 162.3 409.8 164.6 435.5 193.3C459.2 220.6 453.9 246.3 453.9 368.3L453.9 368.3z"></path></svg>
</a>
</li>
<li role="presentation">
<a href="https://www.reddit.com/user/Tag1_Consulting/" aria-label="Reddit" role="menuitem" target="_blank" class="block w-6 h-6 fill-white">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 640 640"><!--!Font Awesome Free 7.0.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2025 Fonticons, Inc.--><path d="M64 320C64 178.6 178.6 64 320 64C461.4 64 576 178.6 576 320C576 461.4 461.4 576 320 576L101.1 576C87.4 576 80.6 559.5 90.2 549.8L139 501C92.7 454.7 64 390.7 64 320zM413.6 217.6C437.2 217.6 456.3 198.5 456.3 174.9C456.3 151.3 437.2 132.2 413.6 132.2C393 132.2 375.8 146.8 371.8 166.2C337.3 169.9 310.4 199.2 310.4 234.6L310.4 234.8C272.9 236.4 238.6 247.1 211.4 263.9C201.3 256.1 188.6 251.4 174.9 251.4C141.9 251.4 115.1 278.2 115.1 311.2C115.1 335.2 129.2 355.8 149.5 365.3C151.5 434.7 227.1 490.5 320.1 490.5C413.1 490.5 488.8 434.6 490.7 365.2C510.9 355.6 524.8 335 524.8 311.2C524.8 278.2 498 251.4 465 251.4C451.3 251.4 438.7 256 428.6 263.8C401.2 246.8 366.5 236.1 328.6 234.7L328.6 234.5C328.6 209.1 347.5 188 372 184.6C376.4 203.4 393.3 217.4 413.5 217.4L413.6 217.6zM241.1 310.9C257.8 310.9 270.6 328.5 269.6 350.2C268.6 371.9 256.1 379.8 239.3 379.8C222.5 379.8 207.9 371 208.9 349.3C209.9 327.6 224.3 311 241 311L241.1 310.9zM431.2 349.2C432.2 370.9 417.5 379.7 400.8 379.7C384.1 379.7 371.5 371.8 370.5 350.1C369.5 328.4 382.3 310.8 399 310.8C415.7 310.8 430.2 327.4 431.1 349.1L431.2 349.2zM383.1 405.9C372.8 430.5 348.5 447.8 320.1 447.8C291.7 447.8 267.4 430.5 257.1 405.9C255.9 403 257.9 399.7 261 399.4C279.4 397.5 299.3 396.5 320.1 396.5C340.9 396.5 360.8 397.5 379.2 399.4C382.3 399.7 384.3 403 383.1 405.9z"></path></svg>
</a>
</li>
<li role="presentation">
<a href="https://www.youtube.com/@Tag1ConsultingInc" aria-label="YouTube" role="menuitem" target="_blank" class="block w-6 h-6 fill-white">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 640 640"><!--!Font Awesome Free 7.0.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2025 Fonticons, Inc.--><path d="M581.7 188.1C575.5 164.4 556.9 145.8 533.4 139.5C490.9 128 320.1 128 320.1 128C320.1 128 149.3 128 106.7 139.5C83.2 145.8 64.7 164.4 58.4 188.1C47 231 47 320.4 47 320.4C47 320.4 47 409.8 58.4 452.7C64.7 476.3 83.2 494.2 106.7 500.5C149.3 512 320.1 512 320.1 512C320.1 512 490.9 512 533.5 500.5C557 494.2 575.5 476.3 581.8 452.7C593.2 409.8 593.2 320.4 593.2 320.4C593.2 320.4 593.2 231 581.8 188.1zM264.2 401.6L264.2 239.2L406.9 320.4L264.2 401.6z"></path></svg>
</a>
</li>
</ul>
</nav>
</div>
</div>
</footer>
</div>
</section>
<script>document.getElementById('current-year').textContent = new Date().getFullYear(); </script>
<script src="/js/search.js?v=9663e854821807c5cbb672f8f14d00bf"></script>
<script src="/js/alpine.js?v=f891a55946cb6efd8713052fe91dca3e"></script>
<!-- Cloudflare Pages Analytics --><script defer src='https://static.cloudflareinsights.com/beacon.min.js' data-cf-beacon='{"token": "8fbd9b1ae9ec4dccb7ae4f11d5a212d1"}'></script><!-- Cloudflare Pages Analytics --><script>(function(){function c(){var b=a.contentDocument||(a.contentWindow&&a.contentWindow.document);if(b){var d=b.createElement('script');d.innerHTML="window.__CF$cv$params={r:'a2fc53020b8fe918',t:'MTc4NzUxMTI1MA=='};var a=document.createElement('script');a.src='/cdn-cgi/challenge-platform/scripts/jsd/main.js';document.getElementsByTagName('head')[0].appendChild(a);";b.getElementsByTagName('head')[0].appendChild(d)}}if(document.body){var a=document.createElement('iframe');a.height=1;a.width=1;a.style.position='absolute';a.style.top=0;a.style.left=0;a.style.border='none';a.style.visibility='hidden';document.body.appendChild(a);if('loading'!==document.readyState)c();else if(window.addEventListener)document.addEventListener('DOMContentLoaded',c);else{var e=document.onreadystatechange||function(){};document.onreadystatechange=function(b){e(b);'loading'!==document.readyState&&(document.onreadystatechange=e,c())}}}})();</script><script type="module" src="https://static.cloudflareinsights.com/beacon.min.js/v4513226cdae34746b4dedf0b4dfa099e1781791509496" integrity="sha512-ZE9pZaUXND66v380QUtch/5sE9tPFh2zg45pR2PB0CVkCtOREv2AJKkSidISWkysEuQ0EH8faUU5du78bx87UQ==" data-cf-beacon='{"version":"2024.11.0","token":"c9feafab82a943ceb54cf84e5f04106f"}' crossorigin="anonymous"></script>
</body>
</html>
Sitemap
Кол-во: 0
XML-карта сайта для поисковиков
?
Sitemap.xml помогает поисковику быстрее находить и индексировать страницы. Особенно важен для крупных сайтов и новых страниц, на которые ещё нет входящих ссылок.
Robots.txt не содержит ссылку на карту сайта. Рекомендуется добавить карту сайта и указать ссылку на нее в robots.txt.
Внутренние ссылки
Кол-во: 64
Ссылки на другие страницы своего сайта
?
Внутренние ссылки распределяют ссылочный вес между страницами и помогают поисковику обходить сайт. Пустые анкоры и ссылки на запрещённые robots.txt страницы — типичные ошибки.
Внутренних ссылок на странице 64 оптимально.
Внутренние ссылки не запрещены к индексации в robots.txt.
Показать внутренние ссылки
| Url | Анкор | Состояние | Анализировать |
|---|---|---|---|
| / |
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewbox="0 0 288 80" style="fill: currentColor" xml:space="preserve" class="text-orange">
<polygon points="4.5,18.8 26.3,18.8 26.3,74.4 52.2,74.4 56.5,60.2 42.7,60.2 42.7,18.8 64,18.8 64,5.2 4.5,5.2 "></polygon>
<polygon points="67.3,74.5 84.2,74.5 103.7,5.2 86.8,5.2 "></polygon>
<polygon points="104.9,5.2 124.2,74.5 141.1,74.5 121.9,5.2 "></polygon>
<polygon points="261.4,60.8 261.4,5.2 235.4,5.2 231.2,19.4 245,19.4 245,60.8 223.7,60.8 223.7,74.4 283.2,74.4 283.2,60.8 "></polygon>
<path d="M185.7,48.6H200v9.7c-4.6,2.3-9.7,3.3-14.8,3.1c-14.4,0-22.6-9.3-22.6-22.3c0-12.2,7.5-21.4,19.5-21.5
c5.1-0.3,10.1,1.5,13.9,4.9l6-14.8c-6.1-3.3-13-4.9-19.9-4.7c-21.4,0-36.4,15.1-36.4,36.2c0,22.1,15.3,36.7,39.2,36.7
c16.7,0,27.4-6.4,31.3-9.9V34.9h-24.8L185.7,48.6z"></path>
</svg>
|
|
Анализировать url |
| /drupal/ |
Expert Drupal Services
|
|
Анализировать url |
| /wordpress/ |
Enterprise WordPress Services
|
|
Анализировать url |
| /infrastructure/ |
Infrastructure & DevOps
|
|
Анализировать url |
| /migrations/ |
Migration Services
|
|
Анализировать url |
| /web-development/ |
Web Development & Architecture
|
|
Анализировать url |
| /continuous-development/ |
Continuous Development
|
|
Анализировать url |
| /audits/ |
Audit Services
|
|
Анализировать url |
| /emergency/ |
Emergency Services
|
|
Анализировать url |
| /performance/ |
Website Performance Management
|
|
Анализировать url |
| /ai/ |
Artificial Intelligence (AI)
|
|
Анализировать url |
| /architecture-leadership/ |
Architecture Leadership & Advisory Services
|
|
Анализировать url |
| /experience-design/ |
Experience Design & Strategy
|
|
Анализировать url |
| /data-analytics/ |
Data Analytics
|
|
Анализировать url |
| /insights/ |
Insights
|
|
Анализировать url |
| /workspaces/ |
Workspaces
|
|
Анализировать url |
| /drupal-migration-tooling/ |
Drupal Migration Tooling
|
|
Анализировать url |
| /plus-suite/ |
Plus Suite
|
|
Анализировать url |
| /scolta/ |
Scolta AI Search
|
|
Анализировать url |
| /transom/ |
Transom AI Site Builder
|
|
Анализировать url |
| /gander/ |
Gander
|
|
Анализировать url |
| /goose/ |
Goose
|
|
Анализировать url |
| /why-tag1/ |
Why Tag1
|
|
Анализировать url |
| /contact/ |
Contact Us
|
|
Анализировать url |
| /search/ |
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewbox="0 0 24 24" stroke-width="1.5" stroke="currentColor" class="size-5" aria-hidden="true">
<path stroke-linecap="round" stroke-linejoin="round" d="m21 21-5.197-5.197m0 0A7.5 7.5 0 1 0 5.196 5.196a7.5 7.5 0 0 0 10.607 10.607Z"></path>
</svg>
<span class="xl:sr-only">Search</span>
|
|
Анализировать url |
| / |
Home
|
|
Анализировать url |
| /insights/ |
Insights
|
|
Анализировать url |
| /blog/interview-linus-torvalds-linux-and-git/ |
An Interview With Linus Torvalds: Linux and Git - Part 1
|
|
Анализировать url |
| /blog/interview-linus-torvalds-open-source-and-beyond/ |
click here
|
|
Анализировать url |
| /open-source-leaders/ |
Open Source Leaders
|
|
Анализировать url |
| /contact/ |
Contact us
|
|
Анализировать url |
| /blog/interview-linus-torvalds-open-source-and-beyond/ |
click here
|
|
Анализировать url |
| /open-source-leaders/ |
Open Source Leaders
|
|
Анализировать url |
| /contact/ |
<span class="bg-turquoise group-hover:bg-bright-turquoise group-focus:bg-bright-turquoise px-4 py-3 flex-1 flex items-center transition-colors duration-200">
Work With Us
</span>
<span class="bg-turquoise group-hover:bg-bright-turquoise group-focus:bg-bright-turquoise border-turquoise group-hover:border-bright-turquoise group-focus:border-turquoise box-border border-5 px-1 py-2 ml-[1px] flex items-center justify-center transition-colors duration-200">
<svg viewbox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" class="h-6 w-6" aria-hidden="true"><path d="M9 18l6-6-6-6" stroke-linecap="round" stroke-linejoin="round"></path></svg>
</span>
|
|
Анализировать url |
| / |
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewbox="0 0 288 80" style="fill: currentColor" xml:space="preserve">
<polygon points="4.5,18.8 26.3,18.8 26.3,74.4 52.2,74.4 56.5,60.2 42.7,60.2 42.7,18.8 64,18.8 64,5.2 4.5,5.2 "></polygon>
<polygon points="67.3,74.5 84.2,74.5 103.7,5.2 86.8,5.2 "></polygon>
<polygon points="104.9,5.2 124.2,74.5 141.1,74.5 121.9,5.2 "></polygon>
<polygon points="261.4,60.8 261.4,5.2 235.4,5.2 231.2,19.4 245,19.4 245,60.8 223.7,60.8 223.7,74.4 283.2,74.4 283.2,60.8 "></polygon>
<path d="M185.7,48.6H200v9.7c-4.6,2.3-9.7,3.3-14.8,3.1c-14.4,0-22.6-9.3-22.6-22.3c0-12.2,7.5-21.4,19.5-21.5
c5.1-0.3,10.1,1.5,13.9,4.9l6-14.8c-6.1-3.3-13-4.9-19.9-4.7c-21.4,0-36.4,15.1-36.4,36.2c0,22.1,15.3,36.7,39.2,36.7
c16.7,0,27.4-6.4,31.3-9.9V34.9h-24.8L185.7,48.6z"></path>
</svg>
|
|
Анализировать url |
| /tel:877-875-8824 |
877-875-8824
|
|
|
| /tel:561-952-6824 |
561-952-6824
|
|
|
| /architecture-leadership/ |
Architecture Leadership & Advisory Services
|
|
Анализировать url |
| /ai/ |
Artificial Intelligence (AI)
|
|
Анализировать url |
| /audits/ |
Audit Services
|
|
Анализировать url |
| /continuous-development/ |
Continuous Development
|
|
Анализировать url |
| /data-analytics/ |
Data Analytics
|
|
Анализировать url |
| /emergency/ |
Emergency Services
|
|
Анализировать url |
| /wordpress/ |
Enterprise WordPress Services
|
|
Анализировать url |
| /experience-design/ |
Experience Design & Strategy
|
|
Анализировать url |
| /drupal/ |
Expert Drupal Services
|
|
Анализировать url |
| /infrastructure/ |
Infrastructure & DevOps
|
|
Анализировать url |
| /migrations/ |
Migration Services
|
|
Анализировать url |
| /web-development/ |
Web Development & Architecture
|
|
Анализировать url |
| /performance/ |
Website Performance Management
|
|
Анализировать url |
| /insights/ |
Insights
|
|
Анализировать url |
| /scolta/ |
Scolta AI Search
|
|
Анализировать url |
| /transom/ |
Transom AI Site Builder
|
|
Анализировать url |
| /workspaces/ |
Workspaces
|
|
Анализировать url |
| /drupal-migration-tooling/ |
Drupal Migration Tooling
|
|
Анализировать url |
| /gander/ |
Gander
|
|
Анализировать url |
| /plus-suite/ |
Plus Suite Page Builder
|
|
Анализировать url |
| /goose/ |
Goose
|
|
Анализировать url |
| /why-tag1/ |
Why Tag1
|
|
Анализировать url |
| /team/ |
Our Team
|
|
Анализировать url |
| /our-work/ |
Our Work
|
|
Анализировать url |
| /contact/ |
Contact Us
|
|
Анализировать url |
| /terms/ |
Terms of Use
|
|
Анализировать url |
| /privacy-policy/ |
Privacy Policy
|
|
Анализировать url |
Внешние ссылки
Кол-во: 29
Ссылки на сторонние сайты
?
Исходящие внешние ссылки передают часть ссылочного веса на чужие сайты. Ссылки на авторитетные ресурсы безопасны; ссылки на мусорные сайты могут навредить репутации страницы.
Внешних ссылок на странице 29 слишком много. Спрячьте лишние ссылки в тег noindex или атрибут rel='nofollow'!
Показать внешние ссылки
| Url | Анкор | Анализировать |
|---|---|---|
| d7es.tag1.com |
Drupal 7 Extended Support
|
Анализировать url |
| addtoany.com |
Share
|
Анализировать url |
| en.wikipedia.org |
His announcement started
|
Анализировать url |
| linuxfoundation.org |
the top 500 supercomputers are all running Linux
|
Анализировать url |
| en.wikipedia.org |
Linus also created Git
|
Анализировать url |
| csdnnews.blog.csdn.net |
Chinese
|
Анализировать url |
| sjp38.github.io |
Korean
|
Анализировать url |
| giaiphapso.com |
Vietnamese
|
Анализировать url |
| bookshop.org |
Just for Fun: The Story of an Accidental Revolutionary
|
Анализировать url |
| opensource.org |
GPLv2
|
Анализировать url |
| google.com |
a powerful desktop computer under the desk
|
Анализировать url |
| lore.kernel.org |
Linux Kernel Mailing List
|
Анализировать url |
| lore.kernel.org |
lore.kernel.org
|
Анализировать url |
| en.wikipedia.org |
blogging about it on KernelTrap and writing about new features as they evolved
|
Анализировать url |
| lore.kernel.org |
work
|
Анализировать url |
| git.kernel.org |
merged into for-next
|
Анализировать url |
| rust-lang.org |
Rust
|
Анализировать url |
| kernel.org |
this description of pathname lookup
|
Анализировать url |
| en.wikipedia.org |
RCU
|
Анализировать url |
| github.com |
Junio Hamano
|
Анализировать url |
| addtoany.com |
Share
|
Анализировать url |
| trust.tag1consulting.com |
Trust Center
|
Анализировать url |
| linkedin.com |
<svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 640 640"><!--!Font Awesome Free 7.0.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2025 Fonticons, Inc.--><path d="M512 96L127.9 96C110.3 96 96 110.5 96 128.3L96 511.7C96 529.5 110.3 544 127.9 544L512 544C529.6 544 544 529.5 544 511.7L544 128.3C544 110.5 529.6 96 512 96zM231.4 480L165 480L165 266.2L231.5 266.2L231.5 480L231.4 480zM198.2 160C219.5 160 236.7 177.2 236.7 198.5C236.7 219.8 219.5 237 198.2 237C176.9 237 159.7 219.8 159.7 198.5C159.7 177.2 176.9 160 198.2 160zM480.3 480L413.9 480L413.9 376C413.9 351.2 413.4 319.3 379.4 319.3C344.8 319.3 339.5 346.3 339.5 374.2L339.5 480L273.1 480L273.1 266.2L336.8 266.2L336.8 295.4L337.7 295.4C346.6 278.6 368.3 260.9 400.6 260.9C467.8 260.9 480.3 305.2 480.3 362.8L480.3 480z"></path></svg>
|
Анализировать url |
| facebook.com |
<svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 640 640"><!--!Font Awesome Free 7.0.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2025 Fonticons, Inc.--><path d="M576 320C576 178.6 461.4 64 320 64C178.6 64 64 178.6 64 320C64 440 146.7 540.8 258.2 568.5L258.2 398.2L205.4 398.2L205.4 320L258.2 320L258.2 286.3C258.2 199.2 297.6 158.8 383.2 158.8C399.4 158.8 427.4 162 438.9 165.2L438.9 236C432.9 235.4 422.4 235 409.3 235C367.3 235 351.1 250.9 351.1 292.2L351.1 320L434.7 320L420.3 398.2L351 398.2L351 574.1C477.8 558.8 576 450.9 576 320z"></path></svg>
|
|
| x.com |
<svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 640 640"><!--!Font Awesome Free 7.0.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2025 Fonticons, Inc.--><path d="M453.2 112L523.8 112L369.6 288.2L551 528L409 528L297.7 382.6L170.5 528L99.8 528L264.7 339.5L90.8 112L236.4 112L336.9 244.9L453.2 112zM428.4 485.8L467.5 485.8L215.1 152L173.1 152L428.4 485.8z"></path></svg>
|
Анализировать url |
| bsky.app |
<svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 640 640"><!--!Font Awesome Free 7.0.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2025 Fonticons, Inc.--><path d="M439.8 358.7C436.5 358.3 433.1 357.9 429.8 357.4C433.2 357.8 436.5 358.3 439.8 358.7zM320 291.1C293.9 240.4 222.9 145.9 156.9 99.3C93.6 54.6 69.5 62.3 53.6 69.5C35.3 77.8 32 105.9 32 122.4C32 138.9 41.1 258 47 277.9C66.5 343.6 136.1 365.8 200.2 358.6C203.5 358.1 206.8 357.7 210.2 357.2C206.9 357.7 203.6 358.2 200.2 358.6C106.3 372.6 22.9 406.8 132.3 528.5C252.6 653.1 297.1 501.8 320 425.1C342.9 501.8 369.2 647.6 505.6 528.5C608 425.1 533.7 372.5 439.8 358.6C436.5 358.2 433.1 357.8 429.8 357.3C433.2 357.7 436.5 358.2 439.8 358.6C503.9 365.7 573.4 343.5 593 277.9C598.9 258 608 139 608 122.4C608 105.8 604.7 77.7 586.4 69.5C570.6 62.4 546.4 54.6 483.2 99.3C417.1 145.9 346.1 240.4 320 291.1z"></path></svg>
|
Анализировать url |
| drupal.community |
<svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 640 640"><!--!Font Awesome Free 7.0.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2025 Fonticons, Inc.--><path d="M529 243.1C529 145.9 465.3 117.4 465.3 117.4C402.8 88.7 236.7 89 174.8 117.4C174.8 117.4 111.1 145.9 111.1 243.1C111.1 358.8 104.5 502.5 216.7 532.2C257.2 542.9 292 545.2 320 543.6C370.8 540.8 399.3 525.5 399.3 525.5L397.6 488.6C397.6 488.6 361.3 500 320.5 498.7C280.1 497.3 237.5 494.3 230.9 444.7C230.3 440.1 230 435.4 230 430.8C315.6 451.7 388.7 439.9 408.7 437.5C464.8 430.8 513.7 396.2 519.9 364.6C529.7 314.8 528.9 243.1 528.9 243.1zM453.9 368.3L407.3 368.3L407.3 254.1C407.3 204.4 343.3 202.5 343.3 261L343.3 323.5L297 323.5L297 261C297 202.5 233 204.4 233 254.1L233 368.3L186.3 368.3C186.3 246.2 181.1 220.4 204.7 193.3C230.6 164.4 284.5 162.5 308.5 199.4L320.1 218.9L331.7 199.4C355.8 162.3 409.8 164.6 435.5 193.3C459.2 220.6 453.9 246.3 453.9 368.3L453.9 368.3z"></path></svg>
|
Анализировать url |
| reddit.com |
<svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 640 640"><!--!Font Awesome Free 7.0.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2025 Fonticons, Inc.--><path d="M64 320C64 178.6 178.6 64 320 64C461.4 64 576 178.6 576 320C576 461.4 461.4 576 320 576L101.1 576C87.4 576 80.6 559.5 90.2 549.8L139 501C92.7 454.7 64 390.7 64 320zM413.6 217.6C437.2 217.6 456.3 198.5 456.3 174.9C456.3 151.3 437.2 132.2 413.6 132.2C393 132.2 375.8 146.8 371.8 166.2C337.3 169.9 310.4 199.2 310.4 234.6L310.4 234.8C272.9 236.4 238.6 247.1 211.4 263.9C201.3 256.1 188.6 251.4 174.9 251.4C141.9 251.4 115.1 278.2 115.1 311.2C115.1 335.2 129.2 355.8 149.5 365.3C151.5 434.7 227.1 490.5 320.1 490.5C413.1 490.5 488.8 434.6 490.7 365.2C510.9 355.6 524.8 335 524.8 311.2C524.8 278.2 498 251.4 465 251.4C451.3 251.4 438.7 256 428.6 263.8C401.2 246.8 366.5 236.1 328.6 234.7L328.6 234.5C328.6 209.1 347.5 188 372 184.6C376.4 203.4 393.3 217.4 413.5 217.4L413.6 217.6zM241.1 310.9C257.8 310.9 270.6 328.5 269.6 350.2C268.6 371.9 256.1 379.8 239.3 379.8C222.5 379.8 207.9 371 208.9 349.3C209.9 327.6 224.3 311 241 311L241.1 310.9zM431.2 349.2C432.2 370.9 417.5 379.7 400.8 379.7C384.1 379.7 371.5 371.8 370.5 350.1C369.5 328.4 382.3 310.8 399 310.8C415.7 310.8 430.2 327.4 431.1 349.1L431.2 349.2zM383.1 405.9C372.8 430.5 348.5 447.8 320.1 447.8C291.7 447.8 267.4 430.5 257.1 405.9C255.9 403 257.9 399.7 261 399.4C279.4 397.5 299.3 396.5 320.1 396.5C340.9 396.5 360.8 397.5 379.2 399.4C382.3 399.7 384.3 403 383.1 405.9z"></path></svg>
|
Анализировать url |
| youtube.com |
<svg xmlns="http://www.w3.org/2000/svg" viewbox="0 0 640 640"><!--!Font Awesome Free 7.0.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2025 Fonticons, Inc.--><path d="M581.7 188.1C575.5 164.4 556.9 145.8 533.4 139.5C490.9 128 320.1 128 320.1 128C320.1 128 149.3 128 106.7 139.5C83.2 145.8 64.7 164.4 58.4 188.1C47 231 47 320.4 47 320.4C47 320.4 47 409.8 58.4 452.7C64.7 476.3 83.2 494.2 106.7 500.5C149.3 512 320.1 512 320.1 512C320.1 512 490.9 512 533.5 500.5C557 494.2 575.5 476.3 581.8 452.7C593.2 409.8 593.2 320.4 593.2 320.4C593.2 320.4 593.2 231 581.8 188.1zM264.2 401.6L264.2 239.2L406.9 320.4L264.2 401.6z"></path></svg>
|
Анализировать url |
Конкуренты Готовность: 0%
Конкуренты в Яндексе
Кол-во: 0
Топ сайтов-конкурентов в Яндексе
?
Сайты, чаще всего появляющиеся в ТОПе Яндекса по запросам из семантического ядра этой страницы.
Мы не нашли у вас конкурентов в Яндексе. Сайт или очень молодой или плохо продвигается.
Конкурентов в ТОП-10 Яндекса не нашлось.
Конкуренты в Google
Кол-во: 0
Топ сайтов-конкурентов в Google
?
Сайты, чаще всего появляющиеся в ТОПе Google по запросам из семантического ядра этой страницы.
Конкуренты в Google тоже не найдены. Займитесь продвижением сайта!
Конкурентов в ТОП-10 Google не нашлось.
ЗоЗПП: права потребителей Готовность: 100%
Нарушения
Не выявлены
Признаков дистанционной продажи товаров (интернет-магазина) не обнаружено — требования ЗоЗПП о раскрытии информации продавца к сайту не применяются. Нарушений нет.
ФЗ-149: рекомендательные технологии Готовность: 100%
Нарушения
Не выявлены
Рекомендательные блоки («с этим покупают», «похожие товары» и т.п.) на сайте не обнаружены — требования ст. 10.7 ФЗ-149 к сайту не применяются. Нарушений нет.
ФЗ-38: реклама Готовность: 100%
Нарушения
Не выявлены
Рекламных тематик с обязательными оговорками (медицина, БАД, кредиты и займы, новостройки) на сайте не обнаружено. Нарушений нет.
ФЗ-436: защита детей Готовность: 100%
Нарушения
Не выявлены
Признаков информационной продукции (новости, видео, книги, игры, курсы) не обнаружено — обязательная возрастная маркировка по ФЗ-436 сайту не требуется. Нарушений нет.
Вердикт
Оптимизация сайта kerneltrap.org выполнена всего на 48%. Чтобы исправить ситуацию и попасть в ТОП необходимо:
Исправьте ошибки в мета-тегах.
Исправьте ошибки индексации.
Поделитесь с друзьями: