53 lines
132 KiB
HTML
53 lines
132 KiB
HTML
<!DOCTYPE html><html><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover"/><title>How we lost 54k GitHub stars – HTTPie blog</title><meta itemProp="name" content="How we lost 54k GitHub stars – HTTPie blog"/><meta name="description" content="What we learned from losing a decade of stargazers and watchers, the biggest accidental community loss in open source history."/><meta property="og:title" content="How we lost 54k GitHub stars – HTTPie blog"/><meta property="og:site_name" content="How we lost 54k GitHub stars – HTTPie blog"/><meta property="og:description" content="What we learned from losing a decade of stargazers and watchers, the biggest accidental community loss in open source history."/><meta property="og:type" content="website"/><meta property="og:image" content="https://httpie.io/Images/Share/stardust.png"/><meta name="twitter:card" content="summary_large_image"/><meta name="twitter:site" content="@httpie"/><meta name="twitter:title" content="How we lost 54k GitHub stars – HTTPie blog"/><meta name="twitter:image" content="https://httpie.io/Images/Share/stardust.png"/><meta name="twitter:description" content="What we learned from losing a decade of stargazers and watchers, the biggest accidental community loss in open source history."/><link rel="alternate" type="application/atom+xml" href="https://httpie.io/api/feed/atom"/><link rel="alternate" type="application/rss+xml" href="https://httpie.io/api/feed/rss"/><link rel="alternate" type="application/feed+json" href="https://httpie.io/api/feed/json"/><link rel="preload" as="font" href="/Brand/Fonts/FKScreamer/FKScreamer-Bold.woff2" type="font/woff2" crossorigin="anonymous"/><link rel="apple-touch-icon" sizes="57x57" href="/Brand/Favicons/Black/apple-icon-57x57.png"/><link rel="apple-touch-icon" sizes="60x60" href="/Brand/Favicons/Black/apple-icon-60x60.png"/><link rel="apple-touch-icon" sizes="72x72" href="/Brand/Favicons/Black/apple-icon-72x72.png"/><link rel="apple-touch-icon" sizes="76x76" href="/Brand/Favicons/Black/apple-icon-76x76.png"/><link rel="apple-touch-icon" sizes="114x114" href="/Brand/Favicons/Black/apple-icon-114x114.png"/><link rel="apple-touch-icon" sizes="120x120" href="/Brand/Favicons/Black/apple-icon-120x120.png"/><link rel="apple-touch-icon" sizes="144x144" href="/Brand/Favicons/Black/apple-icon-144x144.png"/><link rel="apple-touch-icon" sizes="152x152" href="/Brand/Favicons/Black/apple-icon-152x152.png"/><link rel="apple-touch-icon" sizes="180x180" href="/Brand/Favicons/Black/apple-icon-180x180.png"/><link rel="icon" type="image/png" sizes="192x192" href="/Brand/Favicons/Black/android-icon-192x192.png"/><link rel="icon" type="image/png" sizes="32x32" href="/Brand/Favicons/Black/favicon-32x32.png"/><link rel="icon" type="image/png" sizes="96x96" href="/Brand/Favicons/Black/favicon-96x96.png"/><link rel="icon" type="image/png" sizes="16x16" href="/Brand/Favicons/Black/favicon-16x16.png"/><meta name="msapplication-TileImage" content="/Brand/Favicons/Black/ms-icon-144x144.png"/><meta name="msapplication-TileColor" content="#F5F5F0"/><meta name="theme-color" content="#F5F5F0"/><meta name="apple-mobile-web-app-status-bar-style" content="black-translucent"/><meta name="next-head-count" content="34"/><script>
|
||
const css = document.createElement('style')
|
||
css.type = 'text/css'
|
||
css.appendChild(
|
||
document.createTextNode(
|
||
`* {
|
||
-webkit-transition: none !important;
|
||
-moz-transition: none !important;
|
||
-o-transition: none !important;
|
||
-ms-transition: none !important;
|
||
transition: none !important;
|
||
}`
|
||
)
|
||
)
|
||
document.head.appendChild(css)
|
||
|
||
function setLightTheme() { document.documentElement.classList.add('light') }
|
||
function setDarkTheme() { document.documentElement.classList.add('dark') }
|
||
|
||
switch(localStorage['theme']) {
|
||
case 'light':
|
||
setLightTheme()
|
||
case 'dark':
|
||
setDarkTheme()
|
||
case 'auto':
|
||
if (window.matchMedia('(prefers-color-scheme: dark)').matches) {
|
||
setDarkTheme()
|
||
} else {
|
||
setLightTheme()
|
||
}
|
||
default:
|
||
setDarkTheme()
|
||
}
|
||
|
||
// Calling getComputedStyle forces the browser to redraw
|
||
const _ = window.getComputedStyle(css).opacity
|
||
document.head.removeChild(css)
|
||
</script><link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css"/><script async="" src="https://www.googletagmanager.com/gtag/js?id=G-9F2N2J68WF"></script><script>
|
||
window.dataLayer = window.dataLayer || [];
|
||
function gtag(){dataLayer.push(arguments);}
|
||
gtag('js', new Date());
|
||
gtag('config', 'G-9F2N2J68WF', {
|
||
page_path: window.location.pathname,
|
||
});
|
||
</script><link rel="preload" href="/_next/static/css/87b1a1699b1d5e1b.css" as="style" crossorigin=""/><link rel="stylesheet" href="/_next/static/css/87b1a1699b1d5e1b.css" crossorigin="" data-n-g=""/><link rel="preload" href="/_next/static/css/6c35351ee5f80017.css" as="style" crossorigin=""/><link rel="stylesheet" href="/_next/static/css/6c35351ee5f80017.css" crossorigin="" data-n-p=""/><link rel="preload" href="/_next/static/css/5c7ebbd09bed217b.css" as="style" crossorigin=""/><link rel="stylesheet" href="/_next/static/css/5c7ebbd09bed217b.css" crossorigin="" data-n-p=""/><link rel="preload" href="/_next/static/css/35804f593bcb7298.css" as="style" crossorigin=""/><link rel="stylesheet" href="/_next/static/css/35804f593bcb7298.css" crossorigin=""/><link rel="preload" href="/_next/static/css/e2843ea851a87428.css" as="style" crossorigin=""/><link rel="stylesheet" href="/_next/static/css/e2843ea851a87428.css" crossorigin=""/><link rel="preload" href="/_next/static/css/8b579761013866fe.css" as="style" crossorigin=""/><link rel="stylesheet" href="/_next/static/css/8b579761013866fe.css" crossorigin=""/><link rel="preload" href="/_next/static/css/9b9dd01fd6e79e4b.css" as="style" crossorigin=""/><link rel="stylesheet" href="/_next/static/css/9b9dd01fd6e79e4b.css" crossorigin=""/><noscript data-n-css=""></noscript><script defer="" crossorigin="" nomodule="" src="/_next/static/chunks/polyfills-c67a75d1b6f99dc8.js"></script><script defer="" src="/_next/static/chunks/1093.12fc8dc47a938147.js" crossorigin=""></script><script defer="" src="/_next/static/chunks/5518-581118b3d85dfa4a.js" crossorigin=""></script><script defer="" src="/_next/static/chunks/5794-41824b4c5a86f3fa.js" crossorigin=""></script><script defer="" src="/_next/static/chunks/843-735d4a01f0c24fbc.js" crossorigin=""></script><script defer="" src="/_next/static/chunks/2913.4a697124f165c808.js" crossorigin=""></script><script defer="" src="/_next/static/chunks/1815-2cbc9b68295c89aa.js" crossorigin=""></script><script src="/_next/static/chunks/webpack-4107ed8cc13bb655.js" defer="" crossorigin=""></script><script src="/_next/static/chunks/framework-718c19c2ad092da3.js" defer="" crossorigin=""></script><script src="/_next/static/chunks/main-2265f4cfdc2e3741.js" defer="" crossorigin=""></script><script src="/_next/static/chunks/pages/_app-a64f2430d594eb99.js" defer="" crossorigin=""></script><script src="/_next/static/chunks/6036-1368c5769b42d8c5.js" defer="" crossorigin=""></script><script src="/_next/static/chunks/1664-87654279d7c9186a.js" defer="" crossorigin=""></script><script src="/_next/static/chunks/9755-1e5684bd47fb2382.js" defer="" crossorigin=""></script><script src="/_next/static/chunks/4804-4bab617b86226b5b.js" defer="" crossorigin=""></script><script src="/_next/static/chunks/pages/blog/%5Bslug%5D-7fb4a92b220ee770.js" defer="" crossorigin=""></script><script src="/_next/static/JvJQ0O-QW9QoHeZjg5YBp/_buildManifest.js" defer="" crossorigin=""></script><script src="/_next/static/JvJQ0O-QW9QoHeZjg5YBp/_ssgManifest.js" defer="" crossorigin=""></script></head><body><div id="__next"> <nav class="Navigation_navigation__grwld site-container"><div class="flex items-center"><a class="Link_link__58k5P Navigation_logo__dO01U" role="link" tabindex="0" data-track="nav:logo-click" href="/"><div style="width:140px;height:40px" class="hidden md:block"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1635.31 470" fill="currentColor"><g data-name="Layer 2"><g data-name="Layer 1"><path class="cls-1" d="M1322.19 73.91a36.56 36.56 0 0 1 36.56-36.29h3.41a36.56 36.56 0 0 1 36.56 36.83 36.56 36.56 0 0 1-36.56 36.29h-3.41a36.56 36.56 0 0 1-36.56-36.83Zm6.16 276.93V142.35a7.94 7.94 0 0 1 8-7.94h48.32a7.93 7.93 0 0 1 7.94 7.94v208.49a7.94 7.94 0 0 1-7.94 7.94h-48.37a8 8 0 0 1-7.95-7.94ZM1635.31 233.34c0-61.06-33.28-105.09-101.71-105.09-72.17 0-114.82 45.45-114.82 123.08 0 74.79 46.86 113.6 113.89 113.6 56.83 0 85.93-27.17 98.33-63.86a8 8 0 0 0-5.34-10.28l-40.32-11.39a8 8 0 0 0-9.54 4.73c-5.77 14.37-16.57 25.42-42.2 25.42-29.32 0-46.06-13.62-50.74-44.29a7.17 7.17 0 0 0 .81.08h143.7a8 8 0 0 0 7.94-7.94v-24.06Zm-103.58-51.6c28.59 0 43.12 15.15 45 45H1483c4.21-31.74 20.61-45 48.73-45ZM581.91 358.75h-48.35a7.93 7.93 0 0 1-7.94-7.94V76.39a7.93 7.93 0 0 1 7.94-7.94h48.35a7.93 7.93 0 0 1 7.94 7.94v84.66a6 6 0 0 0 11.22 2.77c13.45-25.56 34.68-35.33 60.42-35.69 38.66-.55 70 31.45 70 70.12v152.56a7.94 7.94 0 0 1-7.94 7.94h-47.92a7.94 7.94 0 0 1-7.94-7.94V227.1c0-23.21-10.32-40.73-37-40.73-25.79 0-40.8 15.15-40.8 40.73v123.71a7.93 7.93 0 0 1-7.98 7.94ZM1052.84 306.12a7.94 7.94 0 0 0-9.77-6.78c-6.47 1.55-13.73 3.05-20.35 3.05-19.23 0-25.79-8.52-25.79-26.52v-87.61h50.67a7.94 7.94 0 0 0 7.94-7.94v-38.1a8 8 0 0 0-7.94-7.95h-50.67V85.86a7.94 7.94 0 0 0-7.93-7.94h-47.9a7.93 7.93 0 0 0-7.94 7.94v48.41h-90.49V85.86a7.94 7.94 0 0 0-7.94-7.94h-47.89a7.93 7.93 0 0 0-7.94 7.94v48.41h-17.85a7.94 7.94 0 0 0-7.94 7.95v38.1a7.93 7.93 0 0 0 7.94 7.94h17.85v99.93c0 42.62 21.57 77.19 73.15 77.19 21.16 0 32.43-2.5 46.08-6.56a8 8 0 0 0 5.65-8.56l-5.2-44.14a7.94 7.94 0 0 0-9.77-6.78c-6.47 1.55-13.73 3.05-20.35 3.05-19.23 0-25.79-8.52-25.79-26.52v-87.61h90.49v99.93c0 42.62 21.57 77.19 73.14 77.19 21.17 0 32.44-2.5 46.09-6.56a8 8 0 0 0 5.65-8.56ZM1219.14 365.27c-28.49 0-49.51-10.92-62.87-35.86a6 6 0 0 0-11.19 2.84v82.83a7.93 7.93 0 0 1-7.94 7.94h-48.32a7.94 7.94 0 0 1-8-7.94V142.21a8 8 0 0 1 8-7.94h48.32a7.94 7.94 0 0 1 7.94 7.94v18.95c0 6.13 8.21 8.3 11.15 2.92 13.74-25.16 35.63-36 64.31-36 53.43 0 81.08 44 81.08 116.92 0 75.78-28.62 120.27-82.48 120.27Zm19.21-119.76c0-37.39-14.06-59.17-46.4-59.17-29.53 0-46.87 20.35-46.87 57.28v4.26c0 36.45 17.34 59.17 46.87 59.17 31.87 0 46.4-22.72 46.4-61.54ZM394.41 102.12C394 45.31 346.61 0 289.8 0H104.69C48.31 0 1.09 44.6 0 101a103.07 103.07 0 0 0 103 104.92h82.7a6 6 0 0 1 2.39 11.42L61.31 272.91A103.09 103.09 0 0 0 0 367.83C.43 424.65 47.79 470 104.62 470H148c57.23 0 104.88-45.9 104.79-103.13a103.1 103.1 0 0 0-64.49-95.31 5.94 5.94 0 0 1-.1-10.94l145-63.58a103.08 103.08 0 0 0 61.21-94.92Z"></path></g></g></svg></div><div style="width:92px;height:26px" class="block md:hidden"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1635.31 470" fill="currentColor"><g data-name="Layer 2"><g data-name="Layer 1"><path class="cls-1" d="M1322.19 73.91a36.56 36.56 0 0 1 36.56-36.29h3.41a36.56 36.56 0 0 1 36.56 36.83 36.56 36.56 0 0 1-36.56 36.29h-3.41a36.56 36.56 0 0 1-36.56-36.83Zm6.16 276.93V142.35a7.94 7.94 0 0 1 8-7.94h48.32a7.93 7.93 0 0 1 7.94 7.94v208.49a7.94 7.94 0 0 1-7.94 7.94h-48.37a8 8 0 0 1-7.95-7.94ZM1635.31 233.34c0-61.06-33.28-105.09-101.71-105.09-72.17 0-114.82 45.45-114.82 123.08 0 74.79 46.86 113.6 113.89 113.6 56.83 0 85.93-27.17 98.33-63.86a8 8 0 0 0-5.34-10.28l-40.32-11.39a8 8 0 0 0-9.54 4.73c-5.77 14.37-16.57 25.42-42.2 25.42-29.32 0-46.06-13.62-50.74-44.29a7.17 7.17 0 0 0 .81.08h143.7a8 8 0 0 0 7.94-7.94v-24.06Zm-103.58-51.6c28.59 0 43.12 15.15 45 45H1483c4.21-31.74 20.61-45 48.73-45ZM581.91 358.75h-48.35a7.93 7.93 0 0 1-7.94-7.94V76.39a7.93 7.93 0 0 1 7.94-7.94h48.35a7.93 7.93 0 0 1 7.94 7.94v84.66a6 6 0 0 0 11.22 2.77c13.45-25.56 34.68-35.33 60.42-35.69 38.66-.55 70 31.45 70 70.12v152.56a7.94 7.94 0 0 1-7.94 7.94h-47.92a7.94 7.94 0 0 1-7.94-7.94V227.1c0-23.21-10.32-40.73-37-40.73-25.79 0-40.8 15.15-40.8 40.73v123.71a7.93 7.93 0 0 1-7.98 7.94ZM1052.84 306.12a7.94 7.94 0 0 0-9.77-6.78c-6.47 1.55-13.73 3.05-20.35 3.05-19.23 0-25.79-8.52-25.79-26.52v-87.61h50.67a7.94 7.94 0 0 0 7.94-7.94v-38.1a8 8 0 0 0-7.94-7.95h-50.67V85.86a7.94 7.94 0 0 0-7.93-7.94h-47.9a7.93 7.93 0 0 0-7.94 7.94v48.41h-90.49V85.86a7.94 7.94 0 0 0-7.94-7.94h-47.89a7.93 7.93 0 0 0-7.94 7.94v48.41h-17.85a7.94 7.94 0 0 0-7.94 7.95v38.1a7.93 7.93 0 0 0 7.94 7.94h17.85v99.93c0 42.62 21.57 77.19 73.15 77.19 21.16 0 32.43-2.5 46.08-6.56a8 8 0 0 0 5.65-8.56l-5.2-44.14a7.94 7.94 0 0 0-9.77-6.78c-6.47 1.55-13.73 3.05-20.35 3.05-19.23 0-25.79-8.52-25.79-26.52v-87.61h90.49v99.93c0 42.62 21.57 77.19 73.14 77.19 21.17 0 32.44-2.5 46.09-6.56a8 8 0 0 0 5.65-8.56ZM1219.14 365.27c-28.49 0-49.51-10.92-62.87-35.86a6 6 0 0 0-11.19 2.84v82.83a7.93 7.93 0 0 1-7.94 7.94h-48.32a7.94 7.94 0 0 1-8-7.94V142.21a8 8 0 0 1 8-7.94h48.32a7.94 7.94 0 0 1 7.94 7.94v18.95c0 6.13 8.21 8.3 11.15 2.92 13.74-25.16 35.63-36 64.31-36 53.43 0 81.08 44 81.08 116.92 0 75.78-28.62 120.27-82.48 120.27Zm19.21-119.76c0-37.39-14.06-59.17-46.4-59.17-29.53 0-46.87 20.35-46.87 57.28v4.26c0 36.45 17.34 59.17 46.87 59.17 31.87 0 46.4-22.72 46.4-61.54ZM394.41 102.12C394 45.31 346.61 0 289.8 0H104.69C48.31 0 1.09 44.6 0 101a103.07 103.07 0 0 0 103 104.92h82.7a6 6 0 0 1 2.39 11.42L61.31 272.91A103.09 103.09 0 0 0 0 367.83C.43 424.65 47.79 470 104.62 470H148c57.23 0 104.88-45.9 104.79-103.13a103.1 103.1 0 0 0-64.49-95.31 5.94 5.94 0 0 1-.1-10.94l145-63.58a103.08 103.08 0 0 0 61.21-94.92Z"></path></g></g></svg></div></a><div class="hidden xl:flex"><ul class="Navigation_links__1iGhl"><li><p class="Text_base__4755h Text_smallBody__zKyrD" style="font-size:18px"><a class="Link_link__58k5P Navigation_link__hMCGF" role="link" tabindex="0" data-track="nav:go-to-desktop" href="/desktop">Desktop</a></p></li><li><p class="Text_base__4755h Text_smallBody__zKyrD" style="font-size:18px"><a class="Link_link__58k5P Navigation_link__hMCGF" role="link" tabindex="0" data-track="nav:go-to-cli" href="/cli">Terminal</a></p></li><li><p class="Text_base__4755h Text_smallBody__zKyrD" style="font-size:18px"><a class="Link_link__58k5P Navigation_link__hMCGF" role="link" tabindex="0" data-track="nav:go-to-ai" href="/ai">AI</a></p></li><li><p class="Text_base__4755h Text_smallBody__zKyrD" style="font-size:18px"><a class="Link_link__58k5P Navigation_link__hMCGF" role="link" tabindex="0" data-track="nav:go-to-docs" href="/docs">Docs</a></p></li><li><p class="Text_base__4755h Text_smallBody__zKyrD" style="font-size:18px"><a class="Link_link__58k5P Navigation_link__hMCGF" role="link" tabindex="0" data-track="nav:go-to-jobs" href="/jobs">Jobs<span class="Count_count__p9ULf Navigation_count__CXLW6">5</span></a></p></li><li><p class="Text_base__4755h Text_smallBody__zKyrD" style="font-size:18px"><a class="Link_link__58k5P Navigation_link__hMCGF Navigation_linkActivePage__pITLy" role="link" tabindex="0" data-track="nav:go-to-blog" href="/blog">Blog</a></p></li></ul></div></div><div class="flex items-center"><div class="hidden xl:flex"><ul class="Navigation_socialIcons__TKHzs"><li><a class="Link_link__58k5P" role="link" tabindex="0" target="_blank" rel="noopener noreferrer" data-track="social:go-to-twitter:from-nav" title="Twitter" href="https://twitter.com/httpie"><div class="SocialIcon_socialIconWrapper__vGyuo"><svg viewBox="0 0 16 13" fill="currentColor" xmlns="http://www.w3.org/2000/svg" class="fill-current SocialIcon_socialIcon__URJJI"><path d="M5.033 12.571c6.037 0 9.34-4.837 9.34-9.03 0-.136-.004-.275-.01-.411A6.55 6.55 0 0 0 16 1.487a6.646 6.646 0 0 1-1.884.498A3.213 3.213 0 0 0 15.559.23c-.644.37-1.349.63-2.083.77a3.323 3.323 0 0 0-1.863-.958 3.385 3.385 0 0 0-2.081.334 3.225 3.225 0 0 0-1.443 1.488 3.082 3.082 0 0 0-.21 2.03 9.574 9.574 0 0 1-3.746-.962A9.272 9.272 0 0 1 1.115.58a3.087 3.087 0 0 0-.358 2.313A3.18 3.18 0 0 0 2.13 4.816 3.373 3.373 0 0 1 .644 4.42v.04c0 .733.261 1.443.742 2.01.48.568 1.148.957 1.891 1.102a3.37 3.37 0 0 1-1.48.054c.21.631.617 1.182 1.167 1.578.55.395 1.213.615 1.898.628A6.728 6.728 0 0 1 0 11.146a9.545 9.545 0 0 0 5.033 1.425Z"></path></svg></div></a></li><li><a class="Link_link__58k5P" role="link" tabindex="0" target="_blank" rel="noopener noreferrer" data-track="social:go-to-github:from-nav" title="GitHub" href="https://github.com/httpie"><div class="SocialIcon_socialIconWrapper__vGyuo"><svg viewBox="0 0 16 16" fill="currentColor" xmlns="http://www.w3.org/2000/svg" class="fill-current SocialIcon_socialIcon__URJJI"><path d="M8 0C3.583 0 0 3.673 0 8.202c0 3.624 2.292 6.699 5.471 7.784.4.075.529-.179.529-.395v-1.527c-2.225.496-2.689-.968-2.689-.968-.364-.948-.888-1.2-.888-1.2-.726-.51.055-.498.055-.498.803.057 1.226.845 1.226.845.713 1.254 1.871.891 2.328.682.071-.53.279-.892.508-1.097-1.777-.208-3.645-.912-3.645-4.054 0-.896.313-1.627.824-2.201-.082-.207-.356-1.042.078-2.171 0 0 .672-.22 2.201.84A7.495 7.495 0 0 1 8 3.967c.68.004 1.365.095 2.004.277 1.527-1.061 2.198-.841 2.198-.841.435 1.13.161 1.964.079 2.17.513.575.823 1.307.823 2.202 0 3.15-1.871 3.844-3.653 4.048.287.254.549.753.549 1.518v2.251c0 .218.128.475.534.394C13.711 14.899 16 11.825 16 8.202 16 3.672 12.418 0 8 0Z"></path></svg></div></a></li><li><a class="Link_link__58k5P" role="link" tabindex="0" target="_blank" rel="noopener noreferrer" data-track="social:go-to-discord:from-nav" title="Discord" href="/discord"><div class="SocialIcon_socialIconWrapper__vGyuo"><svg viewBox="0 0 16 19" fill="currentColor" xmlns="http://www.w3.org/2000/svg" class="fill-current SocialIcon_socialIcon__URJJI"><path fill-rule="evenodd" clip-rule="evenodd" d="M1.873 0h12.245C15.15 0 15.99.848 16 1.89v16.396l-1.974-1.725-1.105-1.023-1.17-1.088.484 1.687H1.873A1.884 1.884 0 0 1 0 14.247V1.89C0 .848.84 0 1.873 0Zm8.114 11.204c.275.341.604.737.604.737 1.913-.06 2.702-1.256 2.78-1.373a.062.062 0 0 1 .006-.01c0-2.941-1.315-5.33-1.315-5.33-1.307-.986-2.559-.959-2.559-.959l-.128.148c1.554.47 2.275 1.162 2.275 1.162a7.547 7.547 0 0 0-2.75-.876 7.662 7.662 0 0 0-1.846.018c-.048 0-.089.007-.135.015l-.02.004a7.108 7.108 0 0 0-2.074.58c-.338.148-.54.259-.54.259s.75-.729 2.395-1.199l-.092-.11s-1.242-.028-2.558.958c0 0-1.316 2.389-1.316 5.33 0 0 .767 1.328 2.787 1.393 0 0 .338-.406.612-.756-1.16-.35-1.599-1.08-1.599-1.08s.091.065.256.158c.005 0 .011.003.019.008l.017.01c.014.01.028.016.042.023.013.007.027.014.04.023.23.13.458.23.668.313.374.157.822.296 1.343.397.685.13 1.49.175 2.367.01.429-.084.868-.204 1.325-.397a5.21 5.21 0 0 0 1.05-.544s-.457.747-1.654 1.088ZM8.745 8.686c0-.562.411-1.014.932-1.014.512 0 .932.452.932 1.014 0 .563-.411 1.015-.932 1.015-.512 0-.932-.452-.932-1.015Zm-3.335 0c0-.562.41-1.014.932-1.014.52 0 .94.452.932 1.014 0 .563-.411 1.015-.932 1.015-.512 0-.932-.452-.932-1.015Z"></path></svg></div></a></li></ul></div><div class="hidden xl:flex"><a class="Link_link__58k5P Button_link__w0dcp Navigation_ctaButton__ZpWDJ" role="link" tabindex="0" href="/app"><button class="Button_button__mg_cR Button_primary__PFIP8" data-track="cta:go-to-app:from-nav">Go to App →</button></a></div><div class="flex xl:hidden"><div class="Navigation_featuredIconCircle__n4aZN" role="button" tabindex="0" data-track="nav:toggle-nav"><svg viewBox="0 0 16 9" fill="currentColor" xmlns="http://www.w3.org/2000/svg" class="fill-current Navigation_featuredIcon__oyE4o"><path fill-rule="evenodd" clip-rule="evenodd" d="M1.067 0a1.067 1.067 0 1 0 0 2.133h13.866a1.067 1.067 0 1 0 0-2.133H1.067Zm0 6.4a1.067 1.067 0 1 0 0 2.133h13.866a1.067 1.067 0 1 0 0-2.133H1.067Z"></path></svg></div></div></div></nav><div class="xl:hidden"><div class="Navigation_mobileMenu___XX5L"><a class="Link_link__58k5P" role="link" tabindex="0" data-track="nav:logo-click:from-mobile-nav" href="/"><div style="width:92px;height:26px" class="Navigation_logo__dO01U"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1635.31 470" fill="currentColor"><g data-name="Layer 2"><g data-name="Layer 1"><path class="cls-1" d="M1322.19 73.91a36.56 36.56 0 0 1 36.56-36.29h3.41a36.56 36.56 0 0 1 36.56 36.83 36.56 36.56 0 0 1-36.56 36.29h-3.41a36.56 36.56 0 0 1-36.56-36.83Zm6.16 276.93V142.35a7.94 7.94 0 0 1 8-7.94h48.32a7.93 7.93 0 0 1 7.94 7.94v208.49a7.94 7.94 0 0 1-7.94 7.94h-48.37a8 8 0 0 1-7.95-7.94ZM1635.31 233.34c0-61.06-33.28-105.09-101.71-105.09-72.17 0-114.82 45.45-114.82 123.08 0 74.79 46.86 113.6 113.89 113.6 56.83 0 85.93-27.17 98.33-63.86a8 8 0 0 0-5.34-10.28l-40.32-11.39a8 8 0 0 0-9.54 4.73c-5.77 14.37-16.57 25.42-42.2 25.42-29.32 0-46.06-13.62-50.74-44.29a7.17 7.17 0 0 0 .81.08h143.7a8 8 0 0 0 7.94-7.94v-24.06Zm-103.58-51.6c28.59 0 43.12 15.15 45 45H1483c4.21-31.74 20.61-45 48.73-45ZM581.91 358.75h-48.35a7.93 7.93 0 0 1-7.94-7.94V76.39a7.93 7.93 0 0 1 7.94-7.94h48.35a7.93 7.93 0 0 1 7.94 7.94v84.66a6 6 0 0 0 11.22 2.77c13.45-25.56 34.68-35.33 60.42-35.69 38.66-.55 70 31.45 70 70.12v152.56a7.94 7.94 0 0 1-7.94 7.94h-47.92a7.94 7.94 0 0 1-7.94-7.94V227.1c0-23.21-10.32-40.73-37-40.73-25.79 0-40.8 15.15-40.8 40.73v123.71a7.93 7.93 0 0 1-7.98 7.94ZM1052.84 306.12a7.94 7.94 0 0 0-9.77-6.78c-6.47 1.55-13.73 3.05-20.35 3.05-19.23 0-25.79-8.52-25.79-26.52v-87.61h50.67a7.94 7.94 0 0 0 7.94-7.94v-38.1a8 8 0 0 0-7.94-7.95h-50.67V85.86a7.94 7.94 0 0 0-7.93-7.94h-47.9a7.93 7.93 0 0 0-7.94 7.94v48.41h-90.49V85.86a7.94 7.94 0 0 0-7.94-7.94h-47.89a7.93 7.93 0 0 0-7.94 7.94v48.41h-17.85a7.94 7.94 0 0 0-7.94 7.95v38.1a7.93 7.93 0 0 0 7.94 7.94h17.85v99.93c0 42.62 21.57 77.19 73.15 77.19 21.16 0 32.43-2.5 46.08-6.56a8 8 0 0 0 5.65-8.56l-5.2-44.14a7.94 7.94 0 0 0-9.77-6.78c-6.47 1.55-13.73 3.05-20.35 3.05-19.23 0-25.79-8.52-25.79-26.52v-87.61h90.49v99.93c0 42.62 21.57 77.19 73.14 77.19 21.17 0 32.44-2.5 46.09-6.56a8 8 0 0 0 5.65-8.56ZM1219.14 365.27c-28.49 0-49.51-10.92-62.87-35.86a6 6 0 0 0-11.19 2.84v82.83a7.93 7.93 0 0 1-7.94 7.94h-48.32a7.94 7.94 0 0 1-8-7.94V142.21a8 8 0 0 1 8-7.94h48.32a7.94 7.94 0 0 1 7.94 7.94v18.95c0 6.13 8.21 8.3 11.15 2.92 13.74-25.16 35.63-36 64.31-36 53.43 0 81.08 44 81.08 116.92 0 75.78-28.62 120.27-82.48 120.27Zm19.21-119.76c0-37.39-14.06-59.17-46.4-59.17-29.53 0-46.87 20.35-46.87 57.28v4.26c0 36.45 17.34 59.17 46.87 59.17 31.87 0 46.4-22.72 46.4-61.54ZM394.41 102.12C394 45.31 346.61 0 289.8 0H104.69C48.31 0 1.09 44.6 0 101a103.07 103.07 0 0 0 103 104.92h82.7a6 6 0 0 1 2.39 11.42L61.31 272.91A103.09 103.09 0 0 0 0 367.83C.43 424.65 47.79 470 104.62 470H148c57.23 0 104.88-45.9 104.79-103.13a103.1 103.1 0 0 0-64.49-95.31 5.94 5.94 0 0 1-.1-10.94l145-63.58a103.08 103.08 0 0 0 61.21-94.92Z"></path></g></g></svg></div></a><div role="button" tabindex="0"><svg viewBox="0 0 12 12" fill="currentColor" xmlns="http://www.w3.org/2000/svg" class="fill-current Navigation_closeIcon__ACdRb"><path d="M.293 9.485A1 1 0 0 0 1.707 10.9l3.89-3.89 3.888 3.89A1 1 0 0 0 10.9 9.485L7.01 5.596l3.89-3.889A1 1 0 0 0 9.485.293L5.596 4.182 1.707.293A1 1 0 0 0 .293 1.707l3.889 3.89-3.89 3.888Z"></path></svg></div><ul class="Navigation_mobileLinks__Ic_qE"><li><p class="Text_base__4755h Text_smallBody__zKyrD Navigation_mobileLink__cKE2n" style="font-size:28px"><a class="Link_link__58k5P" role="link" tabindex="0" data-track="nav:go-to-desktop:from-mobile-nav" href="/desktop">Desktop</a></p></li><li><p class="Text_base__4755h Text_smallBody__zKyrD Navigation_mobileLink__cKE2n" style="font-size:28px"><a class="Link_link__58k5P" role="link" tabindex="0" data-track="nav:go-to-cli:from-mobile-nav" href="/cli">Terminal</a></p></li><li><p class="Text_base__4755h Text_smallBody__zKyrD Navigation_mobileLink__cKE2n" style="font-size:28px"><a class="Link_link__58k5P" role="link" tabindex="0" data-track="nav:go-to-ai:from-mobile-nav" href="/ai">AI</a></p></li><li><p class="Text_base__4755h Text_smallBody__zKyrD Navigation_mobileLink__cKE2n" style="font-size:28px"><a class="Link_link__58k5P" role="link" tabindex="0" data-track="nav:go-to-docs:from-mobile-nav" href="/docs">Docs</a></p></li><li><p class="Text_base__4755h Text_smallBody__zKyrD Navigation_mobileLink__cKE2n" style="font-size:28px"><a class="Link_link__58k5P" role="link" tabindex="0" data-track="nav:go-to-jobs:from-mobile-nav" href="/jobs">Jobs<span class="Count_count__p9ULf Navigation_count__CXLW6">5</span></a></p></li><li><p class="Text_base__4755h Text_smallBody__zKyrD Navigation_mobileLink__cKE2n" style="font-size:28px"><a class="Link_link__58k5P" role="link" tabindex="0" data-track="nav:go-to-blog:from-mobile-nav" href="/blog">Blog</a></p></li></ul><footer class="Navigation_mobileMenuFooter__Q49UJ"><ul class="Navigation_mobileSocialIcons__Wgymv"><li><a class="Link_link__58k5P" role="link" tabindex="0" target="_blank" rel="noopener noreferrer" data-track="social:go-to-twitter:from-mobile-nav" title="Twitter" href="https://twitter.com/httpie"><div class="SocialIcon_socialIconWrapper__vGyuo"><svg viewBox="0 0 16 13" fill="currentColor" xmlns="http://www.w3.org/2000/svg" class="fill-current SocialIcon_socialIcon__URJJI"><path d="M5.033 12.571c6.037 0 9.34-4.837 9.34-9.03 0-.136-.004-.275-.01-.411A6.55 6.55 0 0 0 16 1.487a6.646 6.646 0 0 1-1.884.498A3.213 3.213 0 0 0 15.559.23c-.644.37-1.349.63-2.083.77a3.323 3.323 0 0 0-1.863-.958 3.385 3.385 0 0 0-2.081.334 3.225 3.225 0 0 0-1.443 1.488 3.082 3.082 0 0 0-.21 2.03 9.574 9.574 0 0 1-3.746-.962A9.272 9.272 0 0 1 1.115.58a3.087 3.087 0 0 0-.358 2.313A3.18 3.18 0 0 0 2.13 4.816 3.373 3.373 0 0 1 .644 4.42v.04c0 .733.261 1.443.742 2.01.48.568 1.148.957 1.891 1.102a3.37 3.37 0 0 1-1.48.054c.21.631.617 1.182 1.167 1.578.55.395 1.213.615 1.898.628A6.728 6.728 0 0 1 0 11.146a9.545 9.545 0 0 0 5.033 1.425Z"></path></svg></div></a></li><li><a class="Link_link__58k5P" role="link" tabindex="0" target="_blank" rel="noopener noreferrer" data-track="social:go-to-github:from-mobile-nav" title="GitHub" href="https://github.com/httpie"><div class="SocialIcon_socialIconWrapper__vGyuo"><svg viewBox="0 0 16 16" fill="currentColor" xmlns="http://www.w3.org/2000/svg" class="fill-current SocialIcon_socialIcon__URJJI"><path d="M8 0C3.583 0 0 3.673 0 8.202c0 3.624 2.292 6.699 5.471 7.784.4.075.529-.179.529-.395v-1.527c-2.225.496-2.689-.968-2.689-.968-.364-.948-.888-1.2-.888-1.2-.726-.51.055-.498.055-.498.803.057 1.226.845 1.226.845.713 1.254 1.871.891 2.328.682.071-.53.279-.892.508-1.097-1.777-.208-3.645-.912-3.645-4.054 0-.896.313-1.627.824-2.201-.082-.207-.356-1.042.078-2.171 0 0 .672-.22 2.201.84A7.495 7.495 0 0 1 8 3.967c.68.004 1.365.095 2.004.277 1.527-1.061 2.198-.841 2.198-.841.435 1.13.161 1.964.079 2.17.513.575.823 1.307.823 2.202 0 3.15-1.871 3.844-3.653 4.048.287.254.549.753.549 1.518v2.251c0 .218.128.475.534.394C13.711 14.899 16 11.825 16 8.202 16 3.672 12.418 0 8 0Z"></path></svg></div></a></li><li><a class="Link_link__58k5P" role="link" tabindex="0" target="_blank" rel="noopener noreferrer" data-track="social:go-to-discord:from-mobile-nav" title="Discord" href="/discord"><div class="SocialIcon_socialIconWrapper__vGyuo"><svg viewBox="0 0 16 19" fill="currentColor" xmlns="http://www.w3.org/2000/svg" class="fill-current SocialIcon_socialIcon__URJJI"><path fill-rule="evenodd" clip-rule="evenodd" d="M1.873 0h12.245C15.15 0 15.99.848 16 1.89v16.396l-1.974-1.725-1.105-1.023-1.17-1.088.484 1.687H1.873A1.884 1.884 0 0 1 0 14.247V1.89C0 .848.84 0 1.873 0Zm8.114 11.204c.275.341.604.737.604.737 1.913-.06 2.702-1.256 2.78-1.373a.062.062 0 0 1 .006-.01c0-2.941-1.315-5.33-1.315-5.33-1.307-.986-2.559-.959-2.559-.959l-.128.148c1.554.47 2.275 1.162 2.275 1.162a7.547 7.547 0 0 0-2.75-.876 7.662 7.662 0 0 0-1.846.018c-.048 0-.089.007-.135.015l-.02.004a7.108 7.108 0 0 0-2.074.58c-.338.148-.54.259-.54.259s.75-.729 2.395-1.199l-.092-.11s-1.242-.028-2.558.958c0 0-1.316 2.389-1.316 5.33 0 0 .767 1.328 2.787 1.393 0 0 .338-.406.612-.756-1.16-.35-1.599-1.08-1.599-1.08s.091.065.256.158c.005 0 .011.003.019.008l.017.01c.014.01.028.016.042.023.013.007.027.014.04.023.23.13.458.23.668.313.374.157.822.296 1.343.397.685.13 1.49.175 2.367.01.429-.084.868-.204 1.325-.397a5.21 5.21 0 0 0 1.05-.544s-.457.747-1.654 1.088ZM8.745 8.686c0-.562.411-1.014.932-1.014.512 0 .932.452.932 1.014 0 .563-.411 1.015-.932 1.015-.512 0-.932-.452-.932-1.015Zm-3.335 0c0-.562.41-1.014.932-1.014.52 0 .94.452.932 1.014 0 .563-.411 1.015-.932 1.015-.512 0-.932-.452-.932-1.015Z"></path></svg></div></a></li></ul><a class="Link_link__58k5P Button_link__w0dcp Navigation_mobileCtaButton__N0Gcw" role="link" tabindex="0" href="/app"><button class="Button_button__mg_cR Button_primary__PFIP8" data-track="cta:go-to-app:from-mobile-nav">Go to App →</button></a></footer></div></div><div class="PostArticle_article__lJ8Y1 site-container site-grid"><div class="col-span-full lg:col-start-4 lg:col-end-10"><header class="PostArticle_header__4KAiB"><span class="Text_base__4755h Text_smallCaption__bYTBX" style="font-size:12px">Two years ago</span><h1 class="Text_base__4755h Text_smallSubheading__Ylu0h PostArticle_title__sOZnt" style="font-size:30px">How we lost 54k GitHub stars</h1><div class="PostArticle_authors__mCCM8"><a class="PostArticle_author__IBRbK" href="https://twitter.com/jkbrzt" target="_blank" rel="noopener noreferrer" data-track="external:go-to-author-twitter:@jkbrzt"><div><span style="box-sizing:border-box;display:inline-block;overflow:hidden;width:40px;height:40px;background:none;opacity:1;border:0;margin:0;padding:0;position:relative"><img alt="Jakub Roztocil" src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" decoding="async" data-nimg="fixed" class="PostArticle_authorImage__lVBIu" style="position:absolute;top:0;left:0;bottom:0;right:0;box-sizing:border-box;padding:0;border:none;margin:auto;display:block;width:0;height:0;min-width:100%;max-width:100%;min-height:100%;max-height:100%"/><noscript><img alt="Jakub Roztocil" loading="lazy" decoding="async" data-nimg="fixed" style="position:absolute;top:0;left:0;bottom:0;right:0;box-sizing:border-box;padding:0;border:none;margin:auto;display:block;width:0;height:0;min-width:100%;max-width:100%;min-height:100%;max-height:100%" class="PostArticle_authorImage__lVBIu" srcSet="/_next/image?url=%2FImages%2FTeam%2FJakub.jpg&w=48&q=75 1x, /_next/image?url=%2FImages%2FTeam%2FJakub.jpg&w=96&q=75 2x" src="/_next/image?url=%2FImages%2FTeam%2FJakub.jpg&w=96&q=75"/></noscript></span></div><div class="PostArticle_authorText__SrYgv"><p class="Text_base__4755h Text_smallBody__zKyrD PostArticle_authorName__UzGbN" style="font-size:16px">Jakub Roztocil</p><span class="Text_base__4755h Text_smallCaption__bYTBX PostArticle_authorTwitter__0Yxfi" style="font-size:12px">@<!-- -->jkbrzt</span></div></a></div><a class="Link_link__58k5P Button_link__w0dcp PostArticle_shareButton__feixL" role="link" tabindex="0" target="_blank" rel="noopener noreferrer" href="https://twitter.com/intent/tweet?text=%E2%80%9CHow+we+lost+54k+GitHub+stars%E2%80%9D+by+%40jkbrzt&via=httpie&url=https%3A%2F%2Fhttpie.io%2Fblog%2Fstardust&related=jkbrzt"><button class="Button_button__mg_cR Button_share__Z0BDa Button_sharePost__dkMu8" data-track="cta:share-post:/blog/stardust@twitter"><div class="Button_iconWrapper__bWJcK"><svg viewBox="0 0 16 13" fill="currentColor" xmlns="http://www.w3.org/2000/svg" class="fill-current text-black"><path d="M5.033 12.571c6.037 0 9.34-4.837 9.34-9.03 0-.136-.004-.275-.01-.411A6.55 6.55 0 0 0 16 1.487a6.646 6.646 0 0 1-1.884.498A3.213 3.213 0 0 0 15.559.23c-.644.37-1.349.63-2.083.77a3.323 3.323 0 0 0-1.863-.958 3.385 3.385 0 0 0-2.081.334 3.225 3.225 0 0 0-1.443 1.488 3.082 3.082 0 0 0-.21 2.03 9.574 9.574 0 0 1-3.746-.962A9.272 9.272 0 0 1 1.115.58a3.087 3.087 0 0 0-.358 2.313A3.18 3.18 0 0 0 2.13 4.816 3.373 3.373 0 0 1 .644 4.42v.04c0 .733.261 1.443.742 2.01.48.568 1.148.957 1.891 1.102a3.37 3.37 0 0 1-1.48.054c.21.631.617 1.182 1.167 1.578.55.395 1.213.615 1.898.628A6.728 6.728 0 0 1 0 11.146a9.545 9.545 0 0 0 5.033 1.425Z"></path></svg></div>Share</button></a> <a class="Link_link__58k5P Button_link__w0dcp PostArticle_shareButton__feixL" role="link" tabindex="0" target="_blank" rel="noopener noreferrer" href="https://github.com/httpie/cli"><button class="Button_button__mg_cR Button_share__Z0BDa Button_sharePost__dkMu8" data-track="cta:share-post:/blog/stardust@github"><div class="Button_iconWrapper__bWJcK"><svg viewBox="0 0 16 16" fill="currentColor" xmlns="http://www.w3.org/2000/svg" class="fill-current text-black"><path d="M8 0C3.583 0 0 3.673 0 8.202c0 3.624 2.292 6.699 5.471 7.784.4.075.529-.179.529-.395v-1.527c-2.225.496-2.689-.968-2.689-.968-.364-.948-.888-1.2-.888-1.2-.726-.51.055-.498.055-.498.803.057 1.226.845 1.226.845.713 1.254 1.871.891 2.328.682.071-.53.279-.892.508-1.097-1.777-.208-3.645-.912-3.645-4.054 0-.896.313-1.627.824-2.201-.082-.207-.356-1.042.078-2.171 0 0 .672-.22 2.201.84A7.495 7.495 0 0 1 8 3.967c.68.004 1.365.095 2.004.277 1.527-1.061 2.198-.841 2.198-.841.435 1.13.161 1.964.079 2.17.513.575.823 1.307.823 2.202 0 3.15-1.871 3.844-3.653 4.048.287.254.549.753.549 1.518v2.251c0 .218.128.475.534.394C13.711 14.899 16 11.825 16 8.202 16 3.672 12.418 0 8 0Z"></path></svg></div>Star</button></a> </header><main class="PostContent_content__qvNFR" data-testid="blog-post-content"><p class="Text_base__4755h Text_smallBody__zKyrD MarkdownTags_paragraph__nzI8S PostContent_paragraph__ezkfN" style="font-size:18px">Community translations: <a class="Link_link__58k5P MarkdownTags_a__OchUv" role="link" tabindex="0" target="_blank" rel="noopener noreferrer" href="https://qiita.com/rana_kualu/items/50337d2b4de47d2e994b">Japanese</a>, <a class="Link_link__58k5P MarkdownTags_a__OchUv" role="link" tabindex="0" target="_blank" rel="noopener noreferrer" href="https://habr.com/ru/company/skillfactory/blog/662155/">Russian</a></p>
|
||
<section class="MarkdownTags_section__le2sp PostContent_section__0PMYc"><h2 class="Text_base__4755h Text_smallSubheading__Ylu0h MarkdownTags_heading__icsI6" style="font-size:25px" id="gaining-54k-github-stars">Gaining 54k GitHub stars</h2><p class="Text_base__4755h Text_smallBody__zKyrD MarkdownTags_paragraph__nzI8S PostContent_paragraph__ezkfN" style="font-size:18px">HTTPie for Terminal is celebrating <a class="Link_link__58k5P MarkdownTags_a__OchUv" role="link" tabindex="0" target="_blank" rel="noopener noreferrer" href="https://github.com/httpie/cli/commit/b966efa17">10 years since the first commit</a>.</p><p class="Text_base__4755h Text_smallBody__zKyrD MarkdownTags_paragraph__nzI8S PostContent_paragraph__ezkfN" style="font-size:18px">If you’re unfamiliar with the project, it’s an open-source CLI HTTP client. What makes HTTPie different is that we build it from the ground up to make API interaction from the terminal as human-friendly as possible.</p><p class="Text_base__4755h Text_smallBody__zKyrD MarkdownTags_paragraph__nzI8S PostContent_paragraph__ezkfN" style="font-size:18px">Starting with the first public release, published on the 25th of February 2012 from a rainy Copenhagen, we’ve hosted the project on GitHub.</p><p class="Text_base__4755h Text_smallBody__zKyrD MarkdownTags_paragraph__nzI8S PostContent_paragraph__ezkfN" style="font-size:18px">I’ve been a GitHub fan ever since I became a member a couple of years earlier (the type that wears Octocat-decorated t-shirts, no less). It was back in the day when GitHub’s <a class="Link_link__58k5P MarkdownTags_a__OchUv" role="link" tabindex="0" target="_blank" rel="noopener noreferrer" href="https://web.archive.org/web/20120202143615/https:/github.com/about">about page</a> proudly proclaimed they took $0.00 in VC funding and informed you about the number of delicious beers on tap in their SF office.</p><p class="Text_base__4755h Text_smallBody__zKyrD MarkdownTags_paragraph__nzI8S PostContent_paragraph__ezkfN" style="font-size:18px">So GitHub was an obvious choice when I realized that the result of scratching my own API testing itch might be of interest to the wider developer community. And of interest it was.</p><p class="Text_base__4755h Text_smallBody__zKyrD MarkdownTags_paragraph__nzI8S PostContent_paragraph__ezkfN" style="font-size:18px">I remember the rush of HTTPie becoming the top link on Hacker News for the first time and seeing the GitHub community build up. Over the years as we continued to improve the project it kept attracting widespread adoption. It became the most popular API tool on the platform, and the GitHub community grew to 54k stargazers and 1k+ watchers.</p><div class="Text_base__4755h Text_smallBody__zKyrD MarkdownTags_paragraph__nzI8S MarkdownTags_imageWrapper__knwC_ PostContent_paragraph__ezkfN" style="font-size:18px;padding-bottom:68.17063166529942%" data-image-wrapper="true" data-image-width="1219" data-image-height="831"><span style="box-sizing:border-box;display:block;overflow:hidden;width:initial;height:initial;background:none;opacity:1;border:0;margin:0;padding:0;position:absolute;top:0;left:0;bottom:0;right:0"><img alt="Growing GitHub stars" src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" decoding="async" data-nimg="fill" class="MarkdownTags_img__2vuLc" style="position:absolute;top:0;left:0;bottom:0;right:0;box-sizing:border-box;padding:0;border:none;margin:auto;display:block;width:0;height:0;min-width:100%;max-width:100%;min-height:100%;max-height:100%;object-fit:cover"/><noscript><img alt="Growing GitHub stars" loading="lazy" decoding="async" data-nimg="fill" style="position:absolute;top:0;left:0;bottom:0;right:0;box-sizing:border-box;padding:0;border:none;margin:auto;display:block;width:0;height:0;min-width:100%;max-width:100%;min-height:100%;max-height:100%;object-fit:cover" class="MarkdownTags_img__2vuLc" sizes="100vw" srcSet="/_next/image?url=%2FImages%2FBlog%2Fstardust%2Fgithub-stars.png&w=640&q=95 640w, /_next/image?url=%2FImages%2FBlog%2Fstardust%2Fgithub-stars.png&w=750&q=95 750w, /_next/image?url=%2FImages%2FBlog%2Fstardust%2Fgithub-stars.png&w=828&q=95 828w, /_next/image?url=%2FImages%2FBlog%2Fstardust%2Fgithub-stars.png&w=1080&q=95 1080w, /_next/image?url=%2FImages%2FBlog%2Fstardust%2Fgithub-stars.png&w=1200&q=95 1200w, /_next/image?url=%2FImages%2FBlog%2Fstardust%2Fgithub-stars.png&w=1920&q=95 1920w, /_next/image?url=%2FImages%2FBlog%2Fstardust%2Fgithub-stars.png&w=2048&q=95 2048w, /_next/image?url=%2FImages%2FBlog%2Fstardust%2Fgithub-stars.png&w=3840&q=95 3840w" src="/_next/image?url=%2FImages%2FBlog%2Fstardust%2Fgithub-stars.png&w=3840&q=95"/></noscript></span></div><p class="Text_base__4755h Text_smallBody__zKyrD MarkdownTags_paragraph__nzI8S PostContent_paragraph__ezkfN" style="font-size:18px">There are <a class="Link_link__58k5P MarkdownTags_a__OchUv" role="link" tabindex="0" target="_blank" rel="noopener noreferrer" href="https://github.com/search">289M public repos</a> so HTTPie was among the top 80 most popular public repos on GitHub overall; in the 99.99997203 percentile. In short, It was incredible to see this humble tool attract a community of that magnitude. And GitHub played an important role in that.</p><p class="Text_base__4755h Text_smallBody__zKyrD MarkdownTags_paragraph__nzI8S PostContent_paragraph__ezkfN" style="font-size:18px">In the same way that we benefited from GitHub’s “social coding” features, GitHub benefited from our hosting this popular project on their platform. Over the past decade, possibly millions of developers visited our GitHub page. That’s helped reinforce GitHub (Microsoft) as a company that cares about open source and community. It was a symbiotic relationship.</p></section>
|
||
<section class="MarkdownTags_section__le2sp PostContent_section__0PMYc"><h2 class="Text_base__4755h Text_smallSubheading__Ylu0h MarkdownTags_heading__icsI6" style="font-size:25px" id="losing-54k-github-stars">Losing 54k GitHub stars</h2><p class="Text_base__4755h Text_smallBody__zKyrD MarkdownTags_paragraph__nzI8S PostContent_paragraph__ezkfN" style="font-size:18px">However, if you are one of our 55k stargazers and watchers, as of a few weeks ago you no longer are 💔</p><section class="MarkdownTags_section__le2sp PostContent_section__0PMYc"><h3 class="Text_base__4755h Text_smallSubheading__Ylu0h MarkdownTags_heading__icsI6" style="font-size:20px" id="what-happened">What happened?</h3><p class="Text_base__4755h Text_smallBody__zKyrD MarkdownTags_paragraph__nzI8S PostContent_paragraph__ezkfN" style="font-size:18px">Due to an unfortunate sequence of events, I accidentally made the project’s repository private for a moment. And GitHub cascade-deleted our community that took 10 years to build.</p><div class="Text_base__4755h Text_smallBody__zKyrD MarkdownTags_paragraph__nzI8S MarkdownTags_imageWrapper__knwC_ PostContent_paragraph__ezkfN" style="font-size:18px;padding-bottom:68.17063166529942%" data-image-wrapper="true" data-image-width="1219" data-image-height="831"><span style="box-sizing:border-box;display:block;overflow:hidden;width:initial;height:initial;background:none;opacity:1;border:0;margin:0;padding:0;position:absolute;top:0;left:0;bottom:0;right:0"><img alt="Loosing GitHub stars" src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" decoding="async" data-nimg="fill" class="MarkdownTags_img__2vuLc" style="position:absolute;top:0;left:0;bottom:0;right:0;box-sizing:border-box;padding:0;border:none;margin:auto;display:block;width:0;height:0;min-width:100%;max-width:100%;min-height:100%;max-height:100%;object-fit:cover"/><noscript><img alt="Loosing GitHub stars" loading="lazy" decoding="async" data-nimg="fill" style="position:absolute;top:0;left:0;bottom:0;right:0;box-sizing:border-box;padding:0;border:none;margin:auto;display:block;width:0;height:0;min-width:100%;max-width:100%;min-height:100%;max-height:100%;object-fit:cover" class="MarkdownTags_img__2vuLc" sizes="100vw" srcSet="/_next/image?url=%2FImages%2FBlog%2Fstardust%2Fgithub-stars2.png&w=640&q=95 640w, /_next/image?url=%2FImages%2FBlog%2Fstardust%2Fgithub-stars2.png&w=750&q=95 750w, /_next/image?url=%2FImages%2FBlog%2Fstardust%2Fgithub-stars2.png&w=828&q=95 828w, /_next/image?url=%2FImages%2FBlog%2Fstardust%2Fgithub-stars2.png&w=1080&q=95 1080w, /_next/image?url=%2FImages%2FBlog%2Fstardust%2Fgithub-stars2.png&w=1200&q=95 1200w, /_next/image?url=%2FImages%2FBlog%2Fstardust%2Fgithub-stars2.png&w=1920&q=95 1920w, /_next/image?url=%2FImages%2FBlog%2Fstardust%2Fgithub-stars2.png&w=2048&q=95 2048w, /_next/image?url=%2FImages%2FBlog%2Fstardust%2Fgithub-stars2.png&w=3840&q=95 3840w" src="/_next/image?url=%2FImages%2FBlog%2Fstardust%2Fgithub-stars2.png&w=3840&q=95"/></noscript></span></div></section><section class="MarkdownTags_section__le2sp PostContent_section__0PMYc"><h3 class="Text_base__4755h Text_smallSubheading__Ylu0h MarkdownTags_heading__icsI6" style="font-size:20px" id="what-does-it-mean">What does it mean?</h3><p class="Text_base__4755h Text_smallBody__zKyrD MarkdownTags_paragraph__nzI8S PostContent_paragraph__ezkfN" style="font-size:18px">If you’re a downstream maintainer or anyone previously watching <a class="Link_link__58k5P MarkdownTags_a__OchUv" role="link" tabindex="0" target="_blank" rel="noopener noreferrer" href="https://github.com/httpie/cli">httpie/cli</a> for notifications, for example, you’ll need to re-watch the repo. Incidentally, we’ve recently published <a class="Link_link__58k5P MarkdownTags_a__OchUv" role="link" tabindex="0" href="/blog/httpie-3.1.0">a security release</a>.</p><p class="Text_base__4755h Text_smallBody__zKyrD MarkdownTags_paragraph__nzI8S PostContent_paragraph__ezkfN" style="font-size:18px">The same goes for stars. If you’re one of those 54K people who’ve starred the repo any time in the past decade, the repo is no longer among your starred projects.</p></section><section class="MarkdownTags_section__le2sp PostContent_section__0PMYc"><h3 class="Text_base__4755h Text_smallSubheading__Ylu0h MarkdownTags_heading__icsI6" style="font-size:20px" id="why-did-you-make-the-repo-private">Why did you make the repo private‽</h3><p class="Text_base__4755h Text_smallBody__zKyrD MarkdownTags_paragraph__nzI8S PostContent_paragraph__ezkfN" style="font-size:18px">It’s a peculiarity of GitHub, to put it mildly, that making a repo private permanently deletes all watchers and stars. I was even aware of this, and I obviously had no intention to make <code class="CodeInline_wrapper__1mNHX MarkdownTags_code__OOnn0">httpie/cli</code> private. So, why then?</p><div class="Text_base__4755h Text_smallBody__zKyrD MarkdownTags_paragraph__nzI8S MarkdownTags_imageWrapper__knwC_ PostContent_paragraph__ezkfN" style="font-size:18px;padding-bottom:28.896321070234116%" data-image-wrapper="true" data-image-width="1495" data-image-height="432"><span style="box-sizing:border-box;display:block;overflow:hidden;width:initial;height:initial;background:none;opacity:1;border:0;margin:0;padding:0;position:absolute;top:0;left:0;bottom:0;right:0"><img alt="visibility" src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" decoding="async" data-nimg="fill" class="MarkdownTags_img__2vuLc" style="position:absolute;top:0;left:0;bottom:0;right:0;box-sizing:border-box;padding:0;border:none;margin:auto;display:block;width:0;height:0;min-width:100%;max-width:100%;min-height:100%;max-height:100%;object-fit:cover"/><noscript><img alt="visibility" loading="lazy" decoding="async" data-nimg="fill" style="position:absolute;top:0;left:0;bottom:0;right:0;box-sizing:border-box;padding:0;border:none;margin:auto;display:block;width:0;height:0;min-width:100%;max-width:100%;min-height:100%;max-height:100%;object-fit:cover" class="MarkdownTags_img__2vuLc" sizes="100vw" srcSet="/_next/image?url=%2FImages%2FBlog%2Fstardust%2Fvisibility.png&w=640&q=95 640w, /_next/image?url=%2FImages%2FBlog%2Fstardust%2Fvisibility.png&w=750&q=95 750w, /_next/image?url=%2FImages%2FBlog%2Fstardust%2Fvisibility.png&w=828&q=95 828w, /_next/image?url=%2FImages%2FBlog%2Fstardust%2Fvisibility.png&w=1080&q=95 1080w, /_next/image?url=%2FImages%2FBlog%2Fstardust%2Fvisibility.png&w=1200&q=95 1200w, /_next/image?url=%2FImages%2FBlog%2Fstardust%2Fvisibility.png&w=1920&q=95 1920w, /_next/image?url=%2FImages%2FBlog%2Fstardust%2Fvisibility.png&w=2048&q=95 2048w, /_next/image?url=%2FImages%2FBlog%2Fstardust%2Fvisibility.png&w=3840&q=95 3840w" src="/_next/image?url=%2FImages%2FBlog%2Fstardust%2Fvisibility.png&w=3840&q=95"/></noscript></span></div><p class="Text_base__4755h Text_smallBody__zKyrD MarkdownTags_paragraph__nzI8S PostContent_paragraph__ezkfN" style="font-size:18px">The proximate cause was that I thought I was inside a different repo; one with no content and zero stars. What I actually intended to do was to hide the <a class="Link_link__58k5P MarkdownTags_a__OchUv" role="link" tabindex="0" target="_blank" rel="noopener noreferrer" href="https://github.com/httpie">HTTPie organization’s</a> profile README, which I had created the week before but had no opportunity to populate.</p><p class="Text_base__4755h Text_smallBody__zKyrD MarkdownTags_paragraph__nzI8S PostContent_paragraph__ezkfN" style="font-size:18px">What put me on the wrong path was an otherwise completely unrelated action: I had just done the same (i.e., hidden an empty README) on my personal profile by making <code class="CodeInline_wrapper__1mNHX MarkdownTags_code__OOnn0">jkbrzt/jkbrzt</code> private.</p><p class="Text_base__4755h Text_smallBody__zKyrD MarkdownTags_paragraph__nzI8S PostContent_paragraph__ezkfN" style="font-size:18px">GitHub’s conceptual model treats users and organizations as very similar entities when it comes to profiles and repos. In this context, and since I just wanted to repeat the same benign action on our organization’s profile, my brain switched to auto-pilot mode.</p><p class="Text_base__4755h Text_smallBody__zKyrD MarkdownTags_paragraph__nzI8S PostContent_paragraph__ezkfN" style="font-size:18px">I didn’t realize at the moment there’s an inconsistency in the naming of this special repo containing profile READMEs and that it differs for users and organizations: <code class="CodeInline_wrapper__1mNHX MarkdownTags_code__OOnn0">name/name</code> vs. <code class="CodeInline_wrapper__1mNHX MarkdownTags_code__OOnn0">name/.github</code>.</p><p class="Text_base__4755h Text_smallBody__zKyrD MarkdownTags_paragraph__nzI8S PostContent_paragraph__ezkfN" style="font-size:18px">That’s why I proceeded to make <code class="CodeInline_wrapper__1mNHX MarkdownTags_code__OOnn0">httpie/cli</code> private instead of <code class="CodeInline_wrapper__1mNHX MarkdownTags_code__OOnn0">httpie/.github</code> without realizing my mistake.</p></section><section class="MarkdownTags_section__le2sp PostContent_section__0PMYc"><h3 class="Text_base__4755h Text_smallSubheading__Ylu0h MarkdownTags_heading__icsI6" style="font-size:20px" id="but-theres-a-confirmation-right">But there’s a confirmation, right‽</h3><p class="Text_base__4755h Text_smallBody__zKyrD MarkdownTags_paragraph__nzI8S PostContent_paragraph__ezkfN" style="font-size:18px">There’s a confirmation box. It’s designed to stop users in a situation like mine from doing something stupid. It tells you that <em>“You will permanently lose all stars and watchers of this repository.”</em> That’s pretty scary.</p><p class="Text_base__4755h Text_smallBody__zKyrD MarkdownTags_paragraph__nzI8S PostContent_paragraph__ezkfN" style="font-size:18px">The problem is that the box looks exactly the same for repos with no commits and stars and for repos with a decade-long history and 55k stargazers and watchers. And it says <em>“Warning: this is a <strong>potentially destructive</strong> action.”</em></p><p class="Text_base__4755h Text_smallBody__zKyrD MarkdownTags_paragraph__nzI8S PostContent_paragraph__ezkfN" style="font-size:18px">To paraphrase, the box tells you <em>“You’re about to demolish a house. <strong>If</strong> there are any people inside, they will all die”</em>.</p><p class="Text_base__4755h Text_smallBody__zKyrD MarkdownTags_paragraph__nzI8S PostContent_paragraph__ezkfN" style="font-size:18px">But it doesn’t include anything specific to break you out of your auto-pilot mode if you’ve confused the address and think you’re looking at an empty house.</p><p class="Text_base__4755h Text_smallBody__zKyrD MarkdownTags_paragraph__nzI8S PostContent_paragraph__ezkfN" style="font-size:18px">A 54k-star question: Which one of these two dialogs is safe to confirm and which one deletes a 10-year-old community?</p><div class="Text_base__4755h Text_smallBody__zKyrD MarkdownTags_paragraph__nzI8S MarkdownTags_imageWrapper__knwC_ PostContent_paragraph__ezkfN" style="font-size:18px;padding-bottom:72.60490894695171%" data-image-wrapper="true" data-image-width="1263" data-image-height="917"><span style="box-sizing:border-box;display:block;overflow:hidden;width:initial;height:initial;background:none;opacity:1;border:0;margin:0;padding:0;position:absolute;top:0;left:0;bottom:0;right:0"><img alt="confirm" src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" decoding="async" data-nimg="fill" class="MarkdownTags_img__2vuLc" style="position:absolute;top:0;left:0;bottom:0;right:0;box-sizing:border-box;padding:0;border:none;margin:auto;display:block;width:0;height:0;min-width:100%;max-width:100%;min-height:100%;max-height:100%;object-fit:cover"/><noscript><img alt="confirm" loading="lazy" decoding="async" data-nimg="fill" style="position:absolute;top:0;left:0;bottom:0;right:0;box-sizing:border-box;padding:0;border:none;margin:auto;display:block;width:0;height:0;min-width:100%;max-width:100%;min-height:100%;max-height:100%;object-fit:cover" class="MarkdownTags_img__2vuLc" sizes="100vw" srcSet="/_next/image?url=%2FImages%2FBlog%2Fstardust%2Fconfirm.jpg&w=640&q=95 640w, /_next/image?url=%2FImages%2FBlog%2Fstardust%2Fconfirm.jpg&w=750&q=95 750w, /_next/image?url=%2FImages%2FBlog%2Fstardust%2Fconfirm.jpg&w=828&q=95 828w, /_next/image?url=%2FImages%2FBlog%2Fstardust%2Fconfirm.jpg&w=1080&q=95 1080w, /_next/image?url=%2FImages%2FBlog%2Fstardust%2Fconfirm.jpg&w=1200&q=95 1200w, /_next/image?url=%2FImages%2FBlog%2Fstardust%2Fconfirm.jpg&w=1920&q=95 1920w, /_next/image?url=%2FImages%2FBlog%2Fstardust%2Fconfirm.jpg&w=2048&q=95 2048w, /_next/image?url=%2FImages%2FBlog%2Fstardust%2Fconfirm.jpg&w=3840&q=95 3840w" src="/_next/image?url=%2FImages%2FBlog%2Fstardust%2Fconfirm.jpg&w=3840&q=95"/></noscript></span></div><p class="Text_base__4755h Text_smallBody__zKyrD MarkdownTags_paragraph__nzI8S PostContent_paragraph__ezkfN" style="font-size:18px">The dialog should be more contextual and, paraphrasing again, it should say <em>“You’re about to kill 55,000 people.”</em> That would’ve certainly made me pause.</p></section><section class="MarkdownTags_section__le2sp PostContent_section__0PMYc"><h3 class="Text_base__4755h Text_smallSubheading__Ylu0h MarkdownTags_heading__icsI6" style="font-size:20px" id="so-you-made-it-private-just-flip-the-switch">So you made it private, just flip the switch!</h3><p class="Text_base__4755h Text_smallBody__zKyrD MarkdownTags_paragraph__nzI8S PostContent_paragraph__ezkfN" style="font-size:18px">You can imagine my confusion when I went back to the organization page and not only could I still see the empty README but our most popular repo was nowhere to be found. After a moment I realized what happened. So I went back to the repo’s settings to flip the switch. But GitHub didn’t allow me to do that—for an entire half an hour.</p><div class="Text_base__4755h Text_smallBody__zKyrD MarkdownTags_paragraph__nzI8S MarkdownTags_imageWrapper__knwC_ PostContent_paragraph__ezkfN" style="font-size:18px;padding-bottom:48.98360655737705%" data-image-wrapper="true" data-image-width="1525" data-image-height="747"><span style="box-sizing:border-box;display:block;overflow:hidden;width:initial;height:initial;background:none;opacity:1;border:0;margin:0;padding:0;position:absolute;top:0;left:0;bottom:0;right:0"><img alt="delete" src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" decoding="async" data-nimg="fill" class="MarkdownTags_img__2vuLc" style="position:absolute;top:0;left:0;bottom:0;right:0;box-sizing:border-box;padding:0;border:none;margin:auto;display:block;width:0;height:0;min-width:100%;max-width:100%;min-height:100%;max-height:100%;object-fit:cover"/><noscript><img alt="delete" loading="lazy" decoding="async" data-nimg="fill" style="position:absolute;top:0;left:0;bottom:0;right:0;box-sizing:border-box;padding:0;border:none;margin:auto;display:block;width:0;height:0;min-width:100%;max-width:100%;min-height:100%;max-height:100%;object-fit:cover" class="MarkdownTags_img__2vuLc" sizes="100vw" srcSet="/_next/image?url=%2FImages%2FBlog%2Fstardust%2Fdelete.jpg&w=640&q=95 640w, /_next/image?url=%2FImages%2FBlog%2Fstardust%2Fdelete.jpg&w=750&q=95 750w, /_next/image?url=%2FImages%2FBlog%2Fstardust%2Fdelete.jpg&w=828&q=95 828w, /_next/image?url=%2FImages%2FBlog%2Fstardust%2Fdelete.jpg&w=1080&q=95 1080w, /_next/image?url=%2FImages%2FBlog%2Fstardust%2Fdelete.jpg&w=1200&q=95 1200w, /_next/image?url=%2FImages%2FBlog%2Fstardust%2Fdelete.jpg&w=1920&q=95 1920w, /_next/image?url=%2FImages%2FBlog%2Fstardust%2Fdelete.jpg&w=2048&q=95 2048w, /_next/image?url=%2FImages%2FBlog%2Fstardust%2Fdelete.jpg&w=3840&q=95 3840w" src="/_next/image?url=%2FImages%2FBlog%2Fstardust%2Fdelete.jpg&w=3840&q=95"/></noscript></span></div><p class="Text_base__4755h Text_smallBody__zKyrD MarkdownTags_paragraph__nzI8S PostContent_paragraph__ezkfN" style="font-size:18px">If you’re wondering why so long, it’s because 🥁 that’s how long it took GitHub to cascade-delete our decade of stargazers and watchers. And there was no way to stop the process. All I could do was start writing to GitHub support, refresh the page and wait for the number of stars to reach zero before I could make it public again.</p></section><section class="MarkdownTags_section__le2sp PostContent_section__0PMYc"><h3 class="Text_base__4755h Text_smallSubheading__Ylu0h MarkdownTags_heading__icsI6" style="font-size:20px" id="why-doesnt-github-restore-it">Why doesn’t GitHub restore it‽</h3><p class="Text_base__4755h Text_smallBody__zKyrD MarkdownTags_paragraph__nzI8S PostContent_paragraph__ezkfN" style="font-size:18px">GitHub obviously has backups. And it is indeed possible to undo the damage done by accidentally making a repo private. The GitHub team themselves accidentally made the <a class="Link_link__58k5P MarkdownTags_a__OchUv" role="link" tabindex="0" target="_blank" rel="noopener noreferrer" href="https://github.com/desktop/desktop">GitHub Desktop app repo</a> private once. And they restored everything for themselves within hours. Here’s the former GitHub CEO <a class="Link_link__58k5P MarkdownTags_a__OchUv" role="link" tabindex="0" target="_blank" rel="noopener noreferrer" href="https://twitter.com/natfriedman/status/1328410589291446274">explaining the situation</a>:</p><div class="Text_base__4755h Text_smallBody__zKyrD MarkdownTags_paragraph__nzI8S MarkdownTags_imageWrapper__knwC_ PostContent_paragraph__ezkfN" style="font-size:18px;padding-bottom:53.598645215918715%" data-image-wrapper="true" data-image-width="1181" data-image-height="633"><span style="box-sizing:border-box;display:block;overflow:hidden;width:initial;height:initial;background:none;opacity:1;border:0;margin:0;padding:0;position:absolute;top:0;left:0;bottom:0;right:0"><img alt="tweet" src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" decoding="async" data-nimg="fill" class="MarkdownTags_img__2vuLc" style="position:absolute;top:0;left:0;bottom:0;right:0;box-sizing:border-box;padding:0;border:none;margin:auto;display:block;width:0;height:0;min-width:100%;max-width:100%;min-height:100%;max-height:100%;object-fit:cover"/><noscript><img alt="tweet" loading="lazy" decoding="async" data-nimg="fill" style="position:absolute;top:0;left:0;bottom:0;right:0;box-sizing:border-box;padding:0;border:none;margin:auto;display:block;width:0;height:0;min-width:100%;max-width:100%;min-height:100%;max-height:100%;object-fit:cover" class="MarkdownTags_img__2vuLc" sizes="100vw" srcSet="/_next/image?url=%2FImages%2FBlog%2Fstardust%2Ftweet.png&w=640&q=95 640w, /_next/image?url=%2FImages%2FBlog%2Fstardust%2Ftweet.png&w=750&q=95 750w, /_next/image?url=%2FImages%2FBlog%2Fstardust%2Ftweet.png&w=828&q=95 828w, /_next/image?url=%2FImages%2FBlog%2Fstardust%2Ftweet.png&w=1080&q=95 1080w, /_next/image?url=%2FImages%2FBlog%2Fstardust%2Ftweet.png&w=1200&q=95 1200w, /_next/image?url=%2FImages%2FBlog%2Fstardust%2Ftweet.png&w=1920&q=95 1920w, /_next/image?url=%2FImages%2FBlog%2Fstardust%2Ftweet.png&w=2048&q=95 2048w, /_next/image?url=%2FImages%2FBlog%2Fstardust%2Ftweet.png&w=3840&q=95 3840w" src="/_next/image?url=%2FImages%2FBlog%2Fstardust%2Ftweet.png&w=3840&q=95"/></noscript></span></div><p class="Text_base__4755h Text_smallBody__zKyrD MarkdownTags_paragraph__nzI8S PostContent_paragraph__ezkfN" style="font-size:18px">In our case, however, they refuse to do that, citing undesirable side effects and the cost of resources. We even offered GitHub financial compensation for any resources required. But, sadly, they declined. They have other priorities than resurrecting the community of one of the oldest and most popular community projects on their platform.</p><p class="Text_base__4755h Text_smallBody__zKyrD MarkdownTags_paragraph__nzI8S PostContent_paragraph__ezkfN" style="font-size:18px">So the answer to the question is, unfortunately, the following: GitHub will restore a repo damaged by making it private. But only if it’s one of their own projects, not a community one. The latter gets a <a class="Link_link__58k5P MarkdownTags_a__OchUv" role="link" tabindex="0" target="_blank" rel="noopener noreferrer" href="https://twitter.com/github/status/1493329046708670475">tweet</a>, at best.</p></section></section>
|
||
<section class="MarkdownTags_section__le2sp PostContent_section__0PMYc"><h2 class="Text_base__4755h Text_smallSubheading__Ylu0h MarkdownTags_heading__icsI6" style="font-size:25px" id="lessons-learned">Lessons learned</h2><p class="Text_base__4755h Text_smallBody__zKyrD MarkdownTags_paragraph__nzI8S PostContent_paragraph__ezkfN" style="font-size:18px">One should never let a good crisis go to waste. Our options are limited, but there are at least a few lessons learned that might be valuable to share.</p><section class="MarkdownTags_section__le2sp PostContent_section__0PMYc"><h3 class="Text_base__4755h Text_smallSubheading__Ylu0h MarkdownTags_heading__icsI6" style="font-size:20px" id="lesson-1-ui-ux-design">Lesson #1: UI/UX design</h3><p class="Text_base__4755h Text_smallBody__zKyrD MarkdownTags_paragraph__nzI8S PostContent_paragraph__ezkfN" style="font-size:18px">Show, don’t tell. Design confirmation dialogs in a don’t-make-me-think fashion. When the user is about to destroy something, don’t describe that as a potential scenario in abstract words that the user needs to convert to mental images and put values on. Especially when cascade-deleting as a side effect of the primary action. For example, here’s how we approach that in <a class="Link_link__58k5P MarkdownTags_a__OchUv" role="link" tabindex="0" href="/product">HTTPie for Desktop</a>:</p><div class="Text_base__4755h Text_smallBody__zKyrD MarkdownTags_paragraph__nzI8S MarkdownTags_imageWrapper__knwC_ PostContent_paragraph__ezkfN" style="font-size:18px;padding-bottom:61.46645865834633%" data-image-wrapper="true" data-image-width="1282" data-image-height="788"><span style="box-sizing:border-box;display:block;overflow:hidden;width:initial;height:initial;background:none;opacity:1;border:0;margin:0;padding:0;position:absolute;top:0;left:0;bottom:0;right:0"><img alt="delete2" src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" decoding="async" data-nimg="fill" class="MarkdownTags_img__2vuLc" style="position:absolute;top:0;left:0;bottom:0;right:0;box-sizing:border-box;padding:0;border:none;margin:auto;display:block;width:0;height:0;min-width:100%;max-width:100%;min-height:100%;max-height:100%;object-fit:cover"/><noscript><img alt="delete2" loading="lazy" decoding="async" data-nimg="fill" style="position:absolute;top:0;left:0;bottom:0;right:0;box-sizing:border-box;padding:0;border:none;margin:auto;display:block;width:0;height:0;min-width:100%;max-width:100%;min-height:100%;max-height:100%;object-fit:cover" class="MarkdownTags_img__2vuLc" sizes="100vw" srcSet="/_next/image?url=%2FImages%2FBlog%2Fstardust%2Fdelete2.png&w=640&q=95 640w, /_next/image?url=%2FImages%2FBlog%2Fstardust%2Fdelete2.png&w=750&q=95 750w, /_next/image?url=%2FImages%2FBlog%2Fstardust%2Fdelete2.png&w=828&q=95 828w, /_next/image?url=%2FImages%2FBlog%2Fstardust%2Fdelete2.png&w=1080&q=95 1080w, /_next/image?url=%2FImages%2FBlog%2Fstardust%2Fdelete2.png&w=1200&q=95 1200w, /_next/image?url=%2FImages%2FBlog%2Fstardust%2Fdelete2.png&w=1920&q=95 1920w, /_next/image?url=%2FImages%2FBlog%2Fstardust%2Fdelete2.png&w=2048&q=95 2048w, /_next/image?url=%2FImages%2FBlog%2Fstardust%2Fdelete2.png&w=3840&q=95 3840w" src="/_next/image?url=%2FImages%2FBlog%2Fstardust%2Fdelete2.png&w=3840&q=95"/></noscript></span></div><p class="Text_base__4755h Text_smallBody__zKyrD MarkdownTags_paragraph__nzI8S PostContent_paragraph__ezkfN" style="font-size:18px">And, of course, the dialog should reflect the severity of the side-effect. It should be quiet when there are no side effects at all. Otherwise, we risk desensitizing the user by wasting their limited attention capital:</p><div class="Text_base__4755h Text_smallBody__zKyrD MarkdownTags_paragraph__nzI8S MarkdownTags_imageWrapper__knwC_ PostContent_paragraph__ezkfN" style="font-size:18px;padding-bottom:45.70982839313572%" data-image-wrapper="true" data-image-width="1282" data-image-height="586"><span style="box-sizing:border-box;display:block;overflow:hidden;width:initial;height:initial;background:none;opacity:1;border:0;margin:0;padding:0;position:absolute;top:0;left:0;bottom:0;right:0"><img alt="delete3" src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" decoding="async" data-nimg="fill" class="MarkdownTags_img__2vuLc" style="position:absolute;top:0;left:0;bottom:0;right:0;box-sizing:border-box;padding:0;border:none;margin:auto;display:block;width:0;height:0;min-width:100%;max-width:100%;min-height:100%;max-height:100%;object-fit:cover"/><noscript><img alt="delete3" loading="lazy" decoding="async" data-nimg="fill" style="position:absolute;top:0;left:0;bottom:0;right:0;box-sizing:border-box;padding:0;border:none;margin:auto;display:block;width:0;height:0;min-width:100%;max-width:100%;min-height:100%;max-height:100%;object-fit:cover" class="MarkdownTags_img__2vuLc" sizes="100vw" srcSet="/_next/image?url=%2FImages%2FBlog%2Fstardust%2Fdelete3.png&w=640&q=95 640w, /_next/image?url=%2FImages%2FBlog%2Fstardust%2Fdelete3.png&w=750&q=95 750w, /_next/image?url=%2FImages%2FBlog%2Fstardust%2Fdelete3.png&w=828&q=95 828w, /_next/image?url=%2FImages%2FBlog%2Fstardust%2Fdelete3.png&w=1080&q=95 1080w, /_next/image?url=%2FImages%2FBlog%2Fstardust%2Fdelete3.png&w=1200&q=95 1200w, /_next/image?url=%2FImages%2FBlog%2Fstardust%2Fdelete3.png&w=1920&q=95 1920w, /_next/image?url=%2FImages%2FBlog%2Fstardust%2Fdelete3.png&w=2048&q=95 2048w, /_next/image?url=%2FImages%2FBlog%2Fstardust%2Fdelete3.png&w=3840&q=95 3840w" src="/_next/image?url=%2FImages%2FBlog%2Fstardust%2Fdelete3.png&w=3840&q=95"/></noscript></span></div></section><section class="MarkdownTags_section__le2sp PostContent_section__0PMYc"><h3 class="Text_base__4755h Text_smallSubheading__Ylu0h MarkdownTags_heading__icsI6" style="font-size:20px" id="lesson-2-database-design">Lesson #2: Database design</h3><p class="Text_base__4755h Text_smallBody__zKyrD MarkdownTags_paragraph__nzI8S PostContent_paragraph__ezkfN" style="font-size:18px">Use soft-deletes. People are human and they make mistakes. For hard-deletes, delay the process.</p><div class="Text_base__4755h Text_smallBody__zKyrD MarkdownTags_paragraph__nzI8S MarkdownTags_imageWrapper__knwC_ PostContent_paragraph__ezkfN" style="font-size:18px;padding-bottom:55.14754098360656%" data-image-wrapper="true" data-image-width="1525" data-image-height="841"><span style="box-sizing:border-box;display:block;overflow:hidden;width:initial;height:initial;background:none;opacity:1;border:0;margin:0;padding:0;position:absolute;top:0;left:0;bottom:0;right:0"><img alt="soft" src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" decoding="async" data-nimg="fill" class="MarkdownTags_img__2vuLc" style="position:absolute;top:0;left:0;bottom:0;right:0;box-sizing:border-box;padding:0;border:none;margin:auto;display:block;width:0;height:0;min-width:100%;max-width:100%;min-height:100%;max-height:100%;object-fit:cover"/><noscript><img alt="soft" loading="lazy" decoding="async" data-nimg="fill" style="position:absolute;top:0;left:0;bottom:0;right:0;box-sizing:border-box;padding:0;border:none;margin:auto;display:block;width:0;height:0;min-width:100%;max-width:100%;min-height:100%;max-height:100%;object-fit:cover" class="MarkdownTags_img__2vuLc" sizes="100vw" srcSet="/_next/image?url=%2FImages%2FBlog%2Fstardust%2Fsoft.jpg&w=640&q=95 640w, /_next/image?url=%2FImages%2FBlog%2Fstardust%2Fsoft.jpg&w=750&q=95 750w, /_next/image?url=%2FImages%2FBlog%2Fstardust%2Fsoft.jpg&w=828&q=95 828w, /_next/image?url=%2FImages%2FBlog%2Fstardust%2Fsoft.jpg&w=1080&q=95 1080w, /_next/image?url=%2FImages%2FBlog%2Fstardust%2Fsoft.jpg&w=1200&q=95 1200w, /_next/image?url=%2FImages%2FBlog%2Fstardust%2Fsoft.jpg&w=1920&q=95 1920w, /_next/image?url=%2FImages%2FBlog%2Fstardust%2Fsoft.jpg&w=2048&q=95 2048w, /_next/image?url=%2FImages%2FBlog%2Fstardust%2Fsoft.jpg&w=3840&q=95 3840w" src="/_next/image?url=%2FImages%2FBlog%2Fstardust%2Fsoft.jpg&w=3840&q=95"/></noscript></span></div></section><section class="MarkdownTags_section__le2sp PostContent_section__0PMYc"><h3 class="Text_base__4755h Text_smallSubheading__Ylu0h MarkdownTags_heading__icsI6" style="font-size:20px" id="lesson-3-relationship-with-github">Lesson #3: Relationship with GitHub</h3><p class="Text_base__4755h Text_smallBody__zKyrD MarkdownTags_paragraph__nzI8S PostContent_paragraph__ezkfN" style="font-size:18px">It was a human error on our side and GitHub made it clear they’re not legally obliged to help us. The tone of our decade-long mutually-beneficial relationship is set by GitHub’s Terms of Service. Thinking there was more to it was naive.</p><p class="Text_base__4755h Text_smallBody__zKyrD MarkdownTags_paragraph__nzI8S PostContent_paragraph__ezkfN" style="font-size:18px">After all, GitHub has a history of taking <a class="Link_link__58k5P MarkdownTags_a__OchUv" role="link" tabindex="0" target="_blank" rel="noopener noreferrer" href="https://news.ycombinator.com/item?id=24872911">controversial actions</a> that go against the spirit of open source and community and then <a class="Link_link__58k5P MarkdownTags_a__OchUv" role="link" tabindex="0" target="_blank" rel="noopener noreferrer" href="https://github.blog/2020-11-16-standing-up-for-developers-youtube-dl-is-back/">reverting them</a> only based on public outrage. And Microsoft (which now owns GitHub), despite its newly-found affection for open source, has not always had exactly a <a class="Link_link__58k5P MarkdownTags_a__OchUv" role="link" tabindex="0" target="_blank" rel="noopener noreferrer" href="https://www.reddit.com/r/OutOfTheLoop/comments/2v4ses/why_is_microsoft_so_widely_considered_evil/">great</a> <a class="Link_link__58k5P MarkdownTags_a__OchUv" role="link" tabindex="0" target="_blank" rel="noopener noreferrer" href="https://en.wikipedia.org/wiki/Embrace,_extend,_and_extinguish">reputation</a>.</p></section></section>
|
||
<section class="MarkdownTags_section__le2sp PostContent_section__0PMYc"><h2 class="Text_base__4755h Text_smallSubheading__Ylu0h MarkdownTags_heading__icsI6" style="font-size:25px" id="whats-next">What’s next?</h2><p class="Text_base__4755h Text_smallBody__zKyrD MarkdownTags_paragraph__nzI8S PostContent_paragraph__ezkfN" style="font-size:18px">We continue to hope GitHub/Microsoft change their machine-like attitude and restore the project’s community one day. They still have all the data and the means to do that. We also hope they improve the UI and database design to prevent this from happening to <a class="Link_link__58k5P MarkdownTags_a__OchUv" role="link" tabindex="0" target="_blank" rel="noopener noreferrer" href="https://twitter.com/sourcegraph/status/1070201585102274561">other teams</a> in the future.</p><p class="Text_base__4755h Text_smallBody__zKyrD MarkdownTags_paragraph__nzI8S PostContent_paragraph__ezkfN" style="font-size:18px">In the meantime, you can help us by sharing this story and <a class="Link_link__58k5P MarkdownTags_a__OchUv" role="link" tabindex="0" target="_blank" rel="noopener noreferrer" href="https://github.com/httpie/cli">re-watching/starring the repo</a>.</p><p class="Text_base__4755h Text_smallBody__zKyrD MarkdownTags_paragraph__nzI8S PostContent_paragraph__ezkfN" style="font-size:18px">As for me, I will probably take a break from wearing Octocat-decorated t-shirts.</p></section>
|
||
<section class="MarkdownTags_section__le2sp PostContent_section__0PMYc"><h2 class="Text_base__4755h Text_smallSubheading__Ylu0h MarkdownTags_heading__icsI6" style="font-size:25px" id="epilogue">Epilogue</h2><p class="Text_base__4755h Text_smallBody__zKyrD MarkdownTags_paragraph__nzI8S PostContent_paragraph__ezkfN" style="font-size:18px">Despite our GitHub stars turning into dust, HTTPie has never been doing better. What started as a side project has recently become a company, and our team is growing HTTPie into an API development platform (one as delightful as you’d expect from HTTPie). The private beta of <a class="Link_link__58k5P MarkdownTags_a__OchUv" role="link" tabindex="0" href="/product">HTTPie for Web & Desktop</a> has been receiving great feedback, and we cannot wait to launch it to the public in the upcoming weeks.</p><p class="Text_base__4755h Text_smallBody__zKyrD MarkdownTags_paragraph__nzI8S PostContent_paragraph__ezkfN" style="font-size:18px">If you’d like to stay up-to-date, you can join our <a class="Link_link__58k5P MarkdownTags_a__OchUv" role="link" tabindex="0" href="/discord">Discord community</a> or follow <a class="Link_link__58k5P MarkdownTags_a__OchUv" role="link" tabindex="0" target="_blank" rel="noopener noreferrer" href="https://twitter.com/httpie">@httpie</a>.</p></section>
|
||
<section class="MarkdownTags_section__le2sp PostContent_section__0PMYc"><h2 class="Text_base__4755h Text_smallSubheading__Ylu0h MarkdownTags_heading__icsI6" style="font-size:25px" id="update-after-four-months">✏️ Update after four months</h2><p class="Text_base__4755h Text_smallBody__zKyrD MarkdownTags_paragraph__nzI8S PostContent_paragraph__ezkfN" style="font-size:18px">The interest in this story blew us away. As of August ’22, the post has been read by more than a hundred thousand people and has been <a class="Link_link__58k5P MarkdownTags_a__OchUv" role="link" tabindex="0" target="_blank" rel="noopener noreferrer" href="https://twitter.com/search?q=https%3A%2F%2Fhttpie.io%2Fblog%2Fstardust&src=typed_query">shared</a> thousands of times on Twitter and elsewhere, and was the <a class="Link_link__58k5P MarkdownTags_a__OchUv" role="link" tabindex="0" target="_blank" rel="noopener noreferrer" href="https://news.ycombinator.com/item?id=31033758">top post</a> on Hacker News for days.</p><p class="Text_base__4755h Text_smallBody__zKyrD MarkdownTags_paragraph__nzI8S PostContent_paragraph__ezkfN" style="font-size:18px">We’ve also received a ton of empathy and public calls for support from the open source community, and we couldn’t be more grateful. As a result, HTTPie for Terminal has regained an incredible 23k stargazers within a few months.</p><div class="Text_base__4755h Text_smallBody__zKyrD MarkdownTags_paragraph__nzI8S MarkdownTags_imageWrapper__knwC_ PostContent_paragraph__ezkfN" style="font-size:18px;padding-bottom:68.17063166529942%" data-image-wrapper="true" data-image-width="1219" data-image-height="831"><span style="box-sizing:border-box;display:block;overflow:hidden;width:initial;height:initial;background:none;opacity:1;border:0;margin:0;padding:0;position:absolute;top:0;left:0;bottom:0;right:0"><img alt="Regaining GitHub stars" src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" decoding="async" data-nimg="fill" class="MarkdownTags_img__2vuLc" style="position:absolute;top:0;left:0;bottom:0;right:0;box-sizing:border-box;padding:0;border:none;margin:auto;display:block;width:0;height:0;min-width:100%;max-width:100%;min-height:100%;max-height:100%;object-fit:cover"/><noscript><img alt="Regaining GitHub stars" loading="lazy" decoding="async" data-nimg="fill" style="position:absolute;top:0;left:0;bottom:0;right:0;box-sizing:border-box;padding:0;border:none;margin:auto;display:block;width:0;height:0;min-width:100%;max-width:100%;min-height:100%;max-height:100%;object-fit:cover" class="MarkdownTags_img__2vuLc" sizes="100vw" srcSet="/_next/image?url=%2FImages%2FBlog%2Fstardust%2Fgithub-stars3.png&w=640&q=95 640w, /_next/image?url=%2FImages%2FBlog%2Fstardust%2Fgithub-stars3.png&w=750&q=95 750w, /_next/image?url=%2FImages%2FBlog%2Fstardust%2Fgithub-stars3.png&w=828&q=95 828w, /_next/image?url=%2FImages%2FBlog%2Fstardust%2Fgithub-stars3.png&w=1080&q=95 1080w, /_next/image?url=%2FImages%2FBlog%2Fstardust%2Fgithub-stars3.png&w=1200&q=95 1200w, /_next/image?url=%2FImages%2FBlog%2Fstardust%2Fgithub-stars3.png&w=1920&q=95 1920w, /_next/image?url=%2FImages%2FBlog%2Fstardust%2Fgithub-stars3.png&w=2048&q=95 2048w, /_next/image?url=%2FImages%2FBlog%2Fstardust%2Fgithub-stars3.png&w=3840&q=95 3840w" src="/_next/image?url=%2FImages%2FBlog%2Fstardust%2Fgithub-stars3.png&w=3840&q=95"/></noscript></span></div><p class="Text_base__4755h Text_smallBody__zKyrD MarkdownTags_paragraph__nzI8S PostContent_paragraph__ezkfN" style="font-size:18px">We never heard from GitHub. But at least they’ve quietly improved the UI of the destructive “Change repository visibility” dialog shortly after this post went out.</p><div class="Text_base__4755h Text_smallBody__zKyrD MarkdownTags_paragraph__nzI8S MarkdownTags_imageWrapper__knwC_ PostContent_paragraph__ezkfN" style="font-size:18px;padding-bottom:72.60490894695171%" data-image-wrapper="true" data-image-width="1263" data-image-height="917"><span style="box-sizing:border-box;display:block;overflow:hidden;width:initial;height:initial;background:none;opacity:1;border:0;margin:0;padding:0;position:absolute;top:0;left:0;bottom:0;right:0"><img alt="New GitHub repo visibility confirmation dialog" src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" decoding="async" data-nimg="fill" class="MarkdownTags_img__2vuLc" style="position:absolute;top:0;left:0;bottom:0;right:0;box-sizing:border-box;padding:0;border:none;margin:auto;display:block;width:0;height:0;min-width:100%;max-width:100%;min-height:100%;max-height:100%;object-fit:cover"/><noscript><img alt="New GitHub repo visibility confirmation dialog" loading="lazy" decoding="async" data-nimg="fill" style="position:absolute;top:0;left:0;bottom:0;right:0;box-sizing:border-box;padding:0;border:none;margin:auto;display:block;width:0;height:0;min-width:100%;max-width:100%;min-height:100%;max-height:100%;object-fit:cover" class="MarkdownTags_img__2vuLc" sizes="100vw" srcSet="/_next/image?url=%2FImages%2FBlog%2Fstardust%2Fconfirm2.png&w=640&q=95 640w, /_next/image?url=%2FImages%2FBlog%2Fstardust%2Fconfirm2.png&w=750&q=95 750w, /_next/image?url=%2FImages%2FBlog%2Fstardust%2Fconfirm2.png&w=828&q=95 828w, /_next/image?url=%2FImages%2FBlog%2Fstardust%2Fconfirm2.png&w=1080&q=95 1080w, /_next/image?url=%2FImages%2FBlog%2Fstardust%2Fconfirm2.png&w=1200&q=95 1200w, /_next/image?url=%2FImages%2FBlog%2Fstardust%2Fconfirm2.png&w=1920&q=95 1920w, /_next/image?url=%2FImages%2FBlog%2Fstardust%2Fconfirm2.png&w=2048&q=95 2048w, /_next/image?url=%2FImages%2FBlog%2Fstardust%2Fconfirm2.png&w=3840&q=95 3840w" src="/_next/image?url=%2FImages%2FBlog%2Fstardust%2Fconfirm2.png&w=3840&q=95"/></noscript></span></div></section>
|
||
<section class="MarkdownTags_section__le2sp PostContent_section__0PMYc"><h2 class="Text_base__4755h Text_smallSubheading__Ylu0h MarkdownTags_heading__icsI6" style="font-size:25px" id="update-ii">✏️ Update II.</h2><p class="Text_base__4755h Text_smallBody__zKyrD MarkdownTags_paragraph__nzI8S PostContent_paragraph__ezkfN" style="font-size:18px">Since the last update, a person from Microsoft who led the acquisition of GitHub has personally reached out to me on Twitter. He even claims to have found our stars!</p><div class="Text_base__4755h Text_smallBody__zKyrD MarkdownTags_paragraph__nzI8S MarkdownTags_imageWrapper__knwC_ PostContent_paragraph__ezkfN" style="font-size:18px;padding-bottom:44.87722269263336%" data-image-wrapper="true" data-image-width="1181" data-image-height="530"><span style="box-sizing:border-box;display:block;overflow:hidden;width:initial;height:initial;background:none;opacity:1;border:0;margin:0;padding:0;position:absolute;top:0;left:0;bottom:0;right:0"><img alt="Our stars have been supposedly found" src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" decoding="async" data-nimg="fill" class="MarkdownTags_img__2vuLc" style="position:absolute;top:0;left:0;bottom:0;right:0;box-sizing:border-box;padding:0;border:none;margin:auto;display:block;width:0;height:0;min-width:100%;max-width:100%;min-height:100%;max-height:100%;object-fit:cover"/><noscript><img alt="Our stars have been supposedly found" loading="lazy" decoding="async" data-nimg="fill" style="position:absolute;top:0;left:0;bottom:0;right:0;box-sizing:border-box;padding:0;border:none;margin:auto;display:block;width:0;height:0;min-width:100%;max-width:100%;min-height:100%;max-height:100%;object-fit:cover" class="MarkdownTags_img__2vuLc" sizes="100vw" srcSet="/_next/image?url=%2FImages%2FBlog%2Fstardust%2Ffound.png&w=640&q=95 640w, /_next/image?url=%2FImages%2FBlog%2Fstardust%2Ffound.png&w=750&q=95 750w, /_next/image?url=%2FImages%2FBlog%2Fstardust%2Ffound.png&w=828&q=95 828w, /_next/image?url=%2FImages%2FBlog%2Fstardust%2Ffound.png&w=1080&q=95 1080w, /_next/image?url=%2FImages%2FBlog%2Fstardust%2Ffound.png&w=1200&q=95 1200w, /_next/image?url=%2FImages%2FBlog%2Fstardust%2Ffound.png&w=1920&q=95 1920w, /_next/image?url=%2FImages%2FBlog%2Fstardust%2Ffound.png&w=2048&q=95 2048w, /_next/image?url=%2FImages%2FBlog%2Fstardust%2Ffound.png&w=3840&q=95 3840w" src="/_next/image?url=%2FImages%2FBlog%2Fstardust%2Ffound.png&w=3840&q=95"/></noscript></span></div><p class="Text_base__4755h Text_smallBody__zKyrD MarkdownTags_paragraph__nzI8S PostContent_paragraph__ezkfN" style="font-size:18px">Sadly enough, however, we haven’t heard from him since. But we’re happy for T3, whose deleted repo GitHub successfully <a class="Link_link__58k5P MarkdownTags_a__OchUv" role="link" tabindex="0" target="_blank" rel="noopener noreferrer" href="https://twitter.com/t3dotgg/status/1556009443548094465">restored</a> including all forks and stars.</p><div class="Text_base__4755h Text_smallBody__zKyrD MarkdownTags_paragraph__nzI8S MarkdownTags_imageWrapper__knwC_ PostContent_paragraph__ezkfN" style="font-size:18px;padding-bottom:47.50211685012701%" data-image-wrapper="true" data-image-width="1181" data-image-height="561"><span style="box-sizing:border-box;display:block;overflow:hidden;width:initial;height:initial;background:none;opacity:1;border:0;margin:0;padding:0;position:absolute;top:0;left:0;bottom:0;right:0"><img alt="GitHub restored T3 repo" src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" decoding="async" data-nimg="fill" class="MarkdownTags_img__2vuLc" style="position:absolute;top:0;left:0;bottom:0;right:0;box-sizing:border-box;padding:0;border:none;margin:auto;display:block;width:0;height:0;min-width:100%;max-width:100%;min-height:100%;max-height:100%;object-fit:cover"/><noscript><img alt="GitHub restored T3 repo" loading="lazy" decoding="async" data-nimg="fill" style="position:absolute;top:0;left:0;bottom:0;right:0;box-sizing:border-box;padding:0;border:none;margin:auto;display:block;width:0;height:0;min-width:100%;max-width:100%;min-height:100%;max-height:100%;object-fit:cover" class="MarkdownTags_img__2vuLc" sizes="100vw" srcSet="/_next/image?url=%2FImages%2FBlog%2Fstardust%2Ft3.png&w=640&q=95 640w, /_next/image?url=%2FImages%2FBlog%2Fstardust%2Ft3.png&w=750&q=95 750w, /_next/image?url=%2FImages%2FBlog%2Fstardust%2Ft3.png&w=828&q=95 828w, /_next/image?url=%2FImages%2FBlog%2Fstardust%2Ft3.png&w=1080&q=95 1080w, /_next/image?url=%2FImages%2FBlog%2Fstardust%2Ft3.png&w=1200&q=95 1200w, /_next/image?url=%2FImages%2FBlog%2Fstardust%2Ft3.png&w=1920&q=95 1920w, /_next/image?url=%2FImages%2FBlog%2Fstardust%2Ft3.png&w=2048&q=95 2048w, /_next/image?url=%2FImages%2FBlog%2Fstardust%2Ft3.png&w=3840&q=95 3840w" src="/_next/image?url=%2FImages%2FBlog%2Fstardust%2Ft3.png&w=3840&q=95"/></noscript></span></div><p class="Text_base__4755h Text_smallBody__zKyrD MarkdownTags_paragraph__nzI8S PostContent_paragraph__ezkfN" style="font-size:18px">Another proof that complete restoration is indeed possible.</p></section></main><a class="Link_link__58k5P Button_link__w0dcp PostArticle_shareButton__feixL" role="link" tabindex="0" target="_blank" rel="noopener noreferrer" href="https://twitter.com/intent/tweet?text=%E2%80%9CHow+we+lost+54k+GitHub+stars%E2%80%9D+by+%40jkbrzt&via=httpie&url=https%3A%2F%2Fhttpie.io%2Fblog%2Fstardust&related=jkbrzt"><button class="Button_button__mg_cR Button_share__Z0BDa Button_sharePost__dkMu8" data-track="cta:share-post:/blog/stardust@twitter"><div class="Button_iconWrapper__bWJcK"><svg viewBox="0 0 16 13" fill="currentColor" xmlns="http://www.w3.org/2000/svg" class="fill-current text-black"><path d="M5.033 12.571c6.037 0 9.34-4.837 9.34-9.03 0-.136-.004-.275-.01-.411A6.55 6.55 0 0 0 16 1.487a6.646 6.646 0 0 1-1.884.498A3.213 3.213 0 0 0 15.559.23c-.644.37-1.349.63-2.083.77a3.323 3.323 0 0 0-1.863-.958 3.385 3.385 0 0 0-2.081.334 3.225 3.225 0 0 0-1.443 1.488 3.082 3.082 0 0 0-.21 2.03 9.574 9.574 0 0 1-3.746-.962A9.272 9.272 0 0 1 1.115.58a3.087 3.087 0 0 0-.358 2.313A3.18 3.18 0 0 0 2.13 4.816 3.373 3.373 0 0 1 .644 4.42v.04c0 .733.261 1.443.742 2.01.48.568 1.148.957 1.891 1.102a3.37 3.37 0 0 1-1.48.054c.21.631.617 1.182 1.167 1.578.55.395 1.213.615 1.898.628A6.728 6.728 0 0 1 0 11.146a9.545 9.545 0 0 0 5.033 1.425Z"></path></svg></div>Share</button></a> <a class="Link_link__58k5P Button_link__w0dcp PostArticle_shareButton__feixL" role="link" tabindex="0" target="_blank" rel="noopener noreferrer" href="https://github.com/httpie/cli"><button class="Button_button__mg_cR Button_share__Z0BDa Button_sharePost__dkMu8" data-track="cta:share-post:/blog/stardust@github"><div class="Button_iconWrapper__bWJcK"><svg viewBox="0 0 16 16" fill="currentColor" xmlns="http://www.w3.org/2000/svg" class="fill-current text-black"><path d="M8 0C3.583 0 0 3.673 0 8.202c0 3.624 2.292 6.699 5.471 7.784.4.075.529-.179.529-.395v-1.527c-2.225.496-2.689-.968-2.689-.968-.364-.948-.888-1.2-.888-1.2-.726-.51.055-.498.055-.498.803.057 1.226.845 1.226.845.713 1.254 1.871.891 2.328.682.071-.53.279-.892.508-1.097-1.777-.208-3.645-.912-3.645-4.054 0-.896.313-1.627.824-2.201-.082-.207-.356-1.042.078-2.171 0 0 .672-.22 2.201.84A7.495 7.495 0 0 1 8 3.967c.68.004 1.365.095 2.004.277 1.527-1.061 2.198-.841 2.198-.841.435 1.13.161 1.964.079 2.17.513.575.823 1.307.823 2.202 0 3.15-1.871 3.844-3.653 4.048.287.254.549.753.549 1.518v2.251c0 .218.128.475.534.394C13.711 14.899 16 11.825 16 8.202 16 3.672 12.418 0 8 0Z"></path></svg></div>Star</button></a> </div></div><div class="MorePosts_morePosts___Rfwg site-container site-grid"><div class="col-span-full lg:col-start-4 lg:col-end-10"><h2 class="Text_base__4755h Text_smallSubheading__Ylu0h MorePosts_headline__cNSb_" style="font-size:40px">More posts you might like</h2><div class="MorePosts_list__R2Dqg"><div class="MorePosts_post__Yamna"><div class="PostPreview_post__AmbBY"><span class="Text_base__4755h Text_smallCaption__bYTBX" style="font-size:12px">One week ago</span><h2 class="Text_base__4755h Text_smallSubheading__Ylu0h PostPreview_title__Wlpfc" style="font-size:30px"><a class="Link_link__58k5P" role="link" tabindex="0" data-track="cta:read-article:/blog/changelog-0027:from-more" href="/blog/changelog-0027">Changelog #0027 — 📤 Export/import, path params, copy as command, and more</a></h2><p class="Text_base__4755h Text_smallBody__zKyrD PostPreview_excerpt__eGfXr" style="font-size:18px">Check out what’s new in HTTPie for Web & Desktop 2025.2.0</p><div class="flex justify-items-center"><a class="Link_link__58k5P Button_link__w0dcp PostPreview_button__o0Qth" role="link" tabindex="0" href="/blog/changelog-0027"><button class="Button_button__mg_cR Button_secondary__kYMEY" data-track="cta:read-article:/blog/changelog-0027:from-more">Read article</button></a><div class="PostPreview_authors__53pzF"><div class="PostPreview_avatar__RLYot"><span style="box-sizing:border-box;display:inline-block;overflow:hidden;width:initial;height:initial;background:none;opacity:1;border:0;margin:0;padding:0;position:relative;max-width:100%"><span style="box-sizing:border-box;display:block;width:initial;height:initial;background:none;opacity:1;border:0;margin:0;padding:0;max-width:100%"><img style="display:block;max-width:100%;width:initial;height:initial;background:none;opacity:1;border:0;margin:0;padding:0" alt="" aria-hidden="true" src="data:image/svg+xml,%3csvg%20xmlns=%27http://www.w3.org/2000/svg%27%20version=%271.1%27%20width=%2750%27%20height=%2750%27/%3e"/></span><img alt="Jakub Roztocil" src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" decoding="async" data-nimg="intrinsic" class="PostPreview_authorImage__5_3iT" style="position:absolute;top:0;left:0;bottom:0;right:0;box-sizing:border-box;padding:0;border:none;margin:auto;display:block;width:0;height:0;min-width:100%;max-width:100%;min-height:100%;max-height:100%"/><noscript><img alt="Jakub Roztocil" loading="lazy" decoding="async" data-nimg="intrinsic" style="position:absolute;top:0;left:0;bottom:0;right:0;box-sizing:border-box;padding:0;border:none;margin:auto;display:block;width:0;height:0;min-width:100%;max-width:100%;min-height:100%;max-height:100%" class="PostPreview_authorImage__5_3iT" srcSet="/_next/image?url=%2FImages%2FTeam%2FJakub.jpg&w=64&q=75 1x, /_next/image?url=%2FImages%2FTeam%2FJakub.jpg&w=128&q=75 2x" src="/_next/image?url=%2FImages%2FTeam%2FJakub.jpg&w=128&q=75"/></noscript></span></div><div class="PostPreview_avatar__RLYot"><span style="box-sizing:border-box;display:inline-block;overflow:hidden;width:initial;height:initial;background:none;opacity:1;border:0;margin:0;padding:0;position:relative;max-width:100%"><span style="box-sizing:border-box;display:block;width:initial;height:initial;background:none;opacity:1;border:0;margin:0;padding:0;max-width:100%"><img style="display:block;max-width:100%;width:initial;height:initial;background:none;opacity:1;border:0;margin:0;padding:0" alt="" aria-hidden="true" src="data:image/svg+xml,%3csvg%20xmlns=%27http://www.w3.org/2000/svg%27%20version=%271.1%27%20width=%2750%27%20height=%2750%27/%3e"/></span><img alt="Cláudia Delgado" src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" decoding="async" data-nimg="intrinsic" class="PostPreview_authorImage__5_3iT" style="position:absolute;top:0;left:0;bottom:0;right:0;box-sizing:border-box;padding:0;border:none;margin:auto;display:block;width:0;height:0;min-width:100%;max-width:100%;min-height:100%;max-height:100%"/><noscript><img alt="Cláudia Delgado" loading="lazy" decoding="async" data-nimg="intrinsic" style="position:absolute;top:0;left:0;bottom:0;right:0;box-sizing:border-box;padding:0;border:none;margin:auto;display:block;width:0;height:0;min-width:100%;max-width:100%;min-height:100%;max-height:100%" class="PostPreview_authorImage__5_3iT" srcSet="/_next/image?url=%2FImages%2FTeam%2FClaudia.jpg&w=64&q=75 1x, /_next/image?url=%2FImages%2FTeam%2FClaudia.jpg&w=128&q=75 2x" src="/_next/image?url=%2FImages%2FTeam%2FClaudia.jpg&w=128&q=75"/></noscript></span></div></div></div></div></div><div class="MorePosts_post__Yamna"><div class="PostPreview_post__AmbBY"><span class="Text_base__4755h Text_smallCaption__bYTBX" style="font-size:12px">Two months ago</span><h2 class="Text_base__4755h Text_smallSubheading__Ylu0h PostPreview_title__Wlpfc" style="font-size:30px"><a class="Link_link__58k5P" role="link" tabindex="0" data-track="cta:read-article:/blog/changelog-0026:from-more" href="/blog/changelog-0026">Changelog #0026 — 💇♀️️ UI refresh, IDE-like features, enhanced variable system</a></h2><p class="Text_base__4755h Text_smallBody__zKyrD PostPreview_excerpt__eGfXr" style="font-size:18px">Check out what’s new in HTTPie for Web & Desktop 2025.1.0</p><div class="flex justify-items-center"><a class="Link_link__58k5P Button_link__w0dcp PostPreview_button__o0Qth" role="link" tabindex="0" href="/blog/changelog-0026"><button class="Button_button__mg_cR Button_secondary__kYMEY" data-track="cta:read-article:/blog/changelog-0026:from-more">Read article</button></a><div class="PostPreview_authors__53pzF"><div class="PostPreview_avatar__RLYot"><span style="box-sizing:border-box;display:inline-block;overflow:hidden;width:initial;height:initial;background:none;opacity:1;border:0;margin:0;padding:0;position:relative;max-width:100%"><span style="box-sizing:border-box;display:block;width:initial;height:initial;background:none;opacity:1;border:0;margin:0;padding:0;max-width:100%"><img style="display:block;max-width:100%;width:initial;height:initial;background:none;opacity:1;border:0;margin:0;padding:0" alt="" aria-hidden="true" src="data:image/svg+xml,%3csvg%20xmlns=%27http://www.w3.org/2000/svg%27%20version=%271.1%27%20width=%2750%27%20height=%2750%27/%3e"/></span><img alt="Jakub Roztocil" src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" decoding="async" data-nimg="intrinsic" class="PostPreview_authorImage__5_3iT" style="position:absolute;top:0;left:0;bottom:0;right:0;box-sizing:border-box;padding:0;border:none;margin:auto;display:block;width:0;height:0;min-width:100%;max-width:100%;min-height:100%;max-height:100%"/><noscript><img alt="Jakub Roztocil" loading="lazy" decoding="async" data-nimg="intrinsic" style="position:absolute;top:0;left:0;bottom:0;right:0;box-sizing:border-box;padding:0;border:none;margin:auto;display:block;width:0;height:0;min-width:100%;max-width:100%;min-height:100%;max-height:100%" class="PostPreview_authorImage__5_3iT" srcSet="/_next/image?url=%2FImages%2FTeam%2FJakub.jpg&w=64&q=75 1x, /_next/image?url=%2FImages%2FTeam%2FJakub.jpg&w=128&q=75 2x" src="/_next/image?url=%2FImages%2FTeam%2FJakub.jpg&w=128&q=75"/></noscript></span></div><div class="PostPreview_avatar__RLYot"><span style="box-sizing:border-box;display:inline-block;overflow:hidden;width:initial;height:initial;background:none;opacity:1;border:0;margin:0;padding:0;position:relative;max-width:100%"><span style="box-sizing:border-box;display:block;width:initial;height:initial;background:none;opacity:1;border:0;margin:0;padding:0;max-width:100%"><img style="display:block;max-width:100%;width:initial;height:initial;background:none;opacity:1;border:0;margin:0;padding:0" alt="" aria-hidden="true" src="data:image/svg+xml,%3csvg%20xmlns=%27http://www.w3.org/2000/svg%27%20version=%271.1%27%20width=%2750%27%20height=%2750%27/%3e"/></span><img alt="Cláudia Delgado" src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" decoding="async" data-nimg="intrinsic" class="PostPreview_authorImage__5_3iT" style="position:absolute;top:0;left:0;bottom:0;right:0;box-sizing:border-box;padding:0;border:none;margin:auto;display:block;width:0;height:0;min-width:100%;max-width:100%;min-height:100%;max-height:100%"/><noscript><img alt="Cláudia Delgado" loading="lazy" decoding="async" data-nimg="intrinsic" style="position:absolute;top:0;left:0;bottom:0;right:0;box-sizing:border-box;padding:0;border:none;margin:auto;display:block;width:0;height:0;min-width:100%;max-width:100%;min-height:100%;max-height:100%" class="PostPreview_authorImage__5_3iT" srcSet="/_next/image?url=%2FImages%2FTeam%2FClaudia.jpg&w=64&q=75 1x, /_next/image?url=%2FImages%2FTeam%2FClaudia.jpg&w=128&q=75 2x" src="/_next/image?url=%2FImages%2FTeam%2FClaudia.jpg&w=128&q=75"/></noscript></span></div></div></div></div></div></div></div></div><footer class="Footer_footer__MU3xC"><div class="site-container site-grid"><div class="col-start-1 col-end-2 md:col-span-2 lg:col-span-3"><a class="Link_link__58k5P" role="link" tabindex="0" data-track="footer:click-logo" href="/"><div style="width:140px;height:40px"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1635.31 470" fill="currentColor"><g data-name="Layer 2"><g data-name="Layer 1"><path class="cls-1" d="M1322.19 73.91a36.56 36.56 0 0 1 36.56-36.29h3.41a36.56 36.56 0 0 1 36.56 36.83 36.56 36.56 0 0 1-36.56 36.29h-3.41a36.56 36.56 0 0 1-36.56-36.83Zm6.16 276.93V142.35a7.94 7.94 0 0 1 8-7.94h48.32a7.93 7.93 0 0 1 7.94 7.94v208.49a7.94 7.94 0 0 1-7.94 7.94h-48.37a8 8 0 0 1-7.95-7.94ZM1635.31 233.34c0-61.06-33.28-105.09-101.71-105.09-72.17 0-114.82 45.45-114.82 123.08 0 74.79 46.86 113.6 113.89 113.6 56.83 0 85.93-27.17 98.33-63.86a8 8 0 0 0-5.34-10.28l-40.32-11.39a8 8 0 0 0-9.54 4.73c-5.77 14.37-16.57 25.42-42.2 25.42-29.32 0-46.06-13.62-50.74-44.29a7.17 7.17 0 0 0 .81.08h143.7a8 8 0 0 0 7.94-7.94v-24.06Zm-103.58-51.6c28.59 0 43.12 15.15 45 45H1483c4.21-31.74 20.61-45 48.73-45ZM581.91 358.75h-48.35a7.93 7.93 0 0 1-7.94-7.94V76.39a7.93 7.93 0 0 1 7.94-7.94h48.35a7.93 7.93 0 0 1 7.94 7.94v84.66a6 6 0 0 0 11.22 2.77c13.45-25.56 34.68-35.33 60.42-35.69 38.66-.55 70 31.45 70 70.12v152.56a7.94 7.94 0 0 1-7.94 7.94h-47.92a7.94 7.94 0 0 1-7.94-7.94V227.1c0-23.21-10.32-40.73-37-40.73-25.79 0-40.8 15.15-40.8 40.73v123.71a7.93 7.93 0 0 1-7.98 7.94ZM1052.84 306.12a7.94 7.94 0 0 0-9.77-6.78c-6.47 1.55-13.73 3.05-20.35 3.05-19.23 0-25.79-8.52-25.79-26.52v-87.61h50.67a7.94 7.94 0 0 0 7.94-7.94v-38.1a8 8 0 0 0-7.94-7.95h-50.67V85.86a7.94 7.94 0 0 0-7.93-7.94h-47.9a7.93 7.93 0 0 0-7.94 7.94v48.41h-90.49V85.86a7.94 7.94 0 0 0-7.94-7.94h-47.89a7.93 7.93 0 0 0-7.94 7.94v48.41h-17.85a7.94 7.94 0 0 0-7.94 7.95v38.1a7.93 7.93 0 0 0 7.94 7.94h17.85v99.93c0 42.62 21.57 77.19 73.15 77.19 21.16 0 32.43-2.5 46.08-6.56a8 8 0 0 0 5.65-8.56l-5.2-44.14a7.94 7.94 0 0 0-9.77-6.78c-6.47 1.55-13.73 3.05-20.35 3.05-19.23 0-25.79-8.52-25.79-26.52v-87.61h90.49v99.93c0 42.62 21.57 77.19 73.14 77.19 21.17 0 32.44-2.5 46.09-6.56a8 8 0 0 0 5.65-8.56ZM1219.14 365.27c-28.49 0-49.51-10.92-62.87-35.86a6 6 0 0 0-11.19 2.84v82.83a7.93 7.93 0 0 1-7.94 7.94h-48.32a7.94 7.94 0 0 1-8-7.94V142.21a8 8 0 0 1 8-7.94h48.32a7.94 7.94 0 0 1 7.94 7.94v18.95c0 6.13 8.21 8.3 11.15 2.92 13.74-25.16 35.63-36 64.31-36 53.43 0 81.08 44 81.08 116.92 0 75.78-28.62 120.27-82.48 120.27Zm19.21-119.76c0-37.39-14.06-59.17-46.4-59.17-29.53 0-46.87 20.35-46.87 57.28v4.26c0 36.45 17.34 59.17 46.87 59.17 31.87 0 46.4-22.72 46.4-61.54ZM394.41 102.12C394 45.31 346.61 0 289.8 0H104.69C48.31 0 1.09 44.6 0 101a103.07 103.07 0 0 0 103 104.92h82.7a6 6 0 0 1 2.39 11.42L61.31 272.91A103.09 103.09 0 0 0 0 367.83C.43 424.65 47.79 470 104.62 470H148c57.23 0 104.88-45.9 104.79-103.13a103.1 103.1 0 0 0-64.49-95.31 5.94 5.94 0 0 1-.1-10.94l145-63.58a103.08 103.08 0 0 0 61.21-94.92Z"></path></g></g></svg></div></a></div><div class="block md:hidden ml-auto row-start-1 col-start-2 col-end-3"><div class="ThemeToggle_wrapper__HVpyo"><div class="ThemeToggle_container__5I861" role="button" tabindex="0" data-track="settings:set-theme:dark"><div class="ThemeToggle_radio__IFs89" id="light"></div><div class="ThemeToggle_radio__IFs89" id="auto"></div><div class="ThemeToggle_radio__IFs89" id="dark"></div></div><label class="" for="light"><span class="Text_base__4755h Text_smallBody__zKyrD ThemeToggle_mode__OvG6v" style="font-size:10px">LIGHT MODE</span></label><label class="" for="auto"><span class="Text_base__4755h Text_smallBody__zKyrD ThemeToggle_mode__OvG6v" style="font-size:10px">AUTO </span></label><label class="" for="dark"><span class="Text_base__4755h Text_smallBody__zKyrD ThemeToggle_mode__OvG6v" style="font-size:10px">DARK MODE</span></label></div></div><div class="col-span-full mt-[30px] md:mt-0 md:col-start-3 md:col-end-6 lg:col-span-2"><ul class="Footer_section__7TyCt"><h2 class="Text_base__4755h Text_smallSubheading__Ylu0h Footer_sectionHeading__Te5mv" style="font-size:16px">HTTPie</h2><li><p class="Text_base__4755h Text_smallBody__zKyrD Footer_sectionItem__DOlDd" style="font-size:16px"><a class="Link_link__58k5P Footer_link__ZW_qn" role="link" tabindex="0" data-track="footer:go-to-desktop" href="/desktop">Desktop</a></p></li><li><p class="Text_base__4755h Text_smallBody__zKyrD Footer_sectionItem__DOlDd" style="font-size:16px"><a class="Link_link__58k5P Footer_link__ZW_qn" role="link" tabindex="0" data-track="footer:go-to-cli" href="/cli">Terminal</a></p></li><li><p class="Text_base__4755h Text_smallBody__zKyrD Footer_sectionItem__DOlDd" style="font-size:16px"><a class="Link_link__58k5P Footer_link__ZW_qn" role="link" tabindex="0" data-track="footer:go-to-ai" href="/ai">AI</a></p></li><li><p class="Text_base__4755h Text_smallBody__zKyrD Footer_sectionItem__DOlDd" style="font-size:16px"><a class="Link_link__58k5P Footer_link__ZW_qn" role="link" tabindex="0" data-track="footer:go-to-docs" href="/docs">Docs</a></p></li><li><p class="Text_base__4755h Text_smallBody__zKyrD Footer_sectionItem__DOlDd" style="font-size:16px"><a class="Link_link__58k5P Footer_link__ZW_qn" role="link" tabindex="0" data-track="footer:go-to-download" href="/download">Download</a></p></li></ul></div><div class="col-span-full mt-[30px] md:mt-0 md:col-start-6 md:col-end-8 lg:col-span-2"><ul class="Footer_section__7TyCt"><h2 class="Text_base__4755h Text_smallSubheading__Ylu0h Footer_sectionHeading__Te5mv" style="font-size:16px">Company</h2><li><p class="Text_base__4755h Text_smallBody__zKyrD Footer_sectionItem__DOlDd" style="font-size:16px"><a class="Link_link__58k5P Footer_link__ZW_qn" role="link" tabindex="0" data-track="footer:go-to-about" href="/about">About</a></p></li><li><p class="Text_base__4755h Text_smallBody__zKyrD Footer_sectionItem__DOlDd" style="font-size:16px"><a class="Link_link__58k5P Footer_link__ZW_qn" role="link" tabindex="0" data-track="footer:go-to-blog" href="/blog">Blog</a></p></li><li><p class="Text_base__4755h Text_smallBody__zKyrD Footer_sectionItem__DOlDd" style="font-size:16px"><a class="Link_link__58k5P Footer_link__ZW_qn" role="link" tabindex="0" data-track="footer:go-to-jobs" href="/jobs">Jobs<span class="Count_count__p9ULf Footer_count__dSdCn">5</span></a></p></li></ul></div><div class="col-span-full mt-[30px] md:col-start-3 md:col-end-7 md:mt-5 lg:mt-0 lg:col-span-3"><div class="Footer_section__7TyCt"><h2 class="Text_base__4755h Text_smallSubheading__Ylu0h Footer_sectionHeading__Te5mv" style="font-size:16px">Community</h2><ul class="Footer_icons__TmpI8"><li><a class="Link_link__58k5P" role="link" tabindex="0" target="_blank" rel="noopener noreferrer" data-track="social:go-to-twitter:from-footer" title="Twitter" href="https://twitter.com/httpie"><div class="SocialIcon_socialIconWrapper__vGyuo"><svg viewBox="0 0 16 13" fill="currentColor" xmlns="http://www.w3.org/2000/svg" class="fill-current SocialIcon_socialIcon__URJJI"><path d="M5.033 12.571c6.037 0 9.34-4.837 9.34-9.03 0-.136-.004-.275-.01-.411A6.55 6.55 0 0 0 16 1.487a6.646 6.646 0 0 1-1.884.498A3.213 3.213 0 0 0 15.559.23c-.644.37-1.349.63-2.083.77a3.323 3.323 0 0 0-1.863-.958 3.385 3.385 0 0 0-2.081.334 3.225 3.225 0 0 0-1.443 1.488 3.082 3.082 0 0 0-.21 2.03 9.574 9.574 0 0 1-3.746-.962A9.272 9.272 0 0 1 1.115.58a3.087 3.087 0 0 0-.358 2.313A3.18 3.18 0 0 0 2.13 4.816 3.373 3.373 0 0 1 .644 4.42v.04c0 .733.261 1.443.742 2.01.48.568 1.148.957 1.891 1.102a3.37 3.37 0 0 1-1.48.054c.21.631.617 1.182 1.167 1.578.55.395 1.213.615 1.898.628A6.728 6.728 0 0 1 0 11.146a9.545 9.545 0 0 0 5.033 1.425Z"></path></svg></div></a></li><li><a class="Link_link__58k5P" role="link" tabindex="0" target="_blank" rel="noopener noreferrer" data-track="social:go-to-github:from-footer" title="GitHub" href="https://github.com/httpie"><div class="SocialIcon_socialIconWrapper__vGyuo"><svg viewBox="0 0 16 16" fill="currentColor" xmlns="http://www.w3.org/2000/svg" class="fill-current SocialIcon_socialIcon__URJJI"><path d="M8 0C3.583 0 0 3.673 0 8.202c0 3.624 2.292 6.699 5.471 7.784.4.075.529-.179.529-.395v-1.527c-2.225.496-2.689-.968-2.689-.968-.364-.948-.888-1.2-.888-1.2-.726-.51.055-.498.055-.498.803.057 1.226.845 1.226.845.713 1.254 1.871.891 2.328.682.071-.53.279-.892.508-1.097-1.777-.208-3.645-.912-3.645-4.054 0-.896.313-1.627.824-2.201-.082-.207-.356-1.042.078-2.171 0 0 .672-.22 2.201.84A7.495 7.495 0 0 1 8 3.967c.68.004 1.365.095 2.004.277 1.527-1.061 2.198-.841 2.198-.841.435 1.13.161 1.964.079 2.17.513.575.823 1.307.823 2.202 0 3.15-1.871 3.844-3.653 4.048.287.254.549.753.549 1.518v2.251c0 .218.128.475.534.394C13.711 14.899 16 11.825 16 8.202 16 3.672 12.418 0 8 0Z"></path></svg></div></a></li><li><a class="Link_link__58k5P" role="link" tabindex="0" target="_blank" rel="noopener noreferrer" data-track="social:go-to-discord:from-footer" title="Discord" href="/discord"><div class="SocialIcon_socialIconWrapper__vGyuo"><svg viewBox="0 0 16 19" fill="currentColor" xmlns="http://www.w3.org/2000/svg" class="fill-current SocialIcon_socialIcon__URJJI"><path fill-rule="evenodd" clip-rule="evenodd" d="M1.873 0h12.245C15.15 0 15.99.848 16 1.89v16.396l-1.974-1.725-1.105-1.023-1.17-1.088.484 1.687H1.873A1.884 1.884 0 0 1 0 14.247V1.89C0 .848.84 0 1.873 0Zm8.114 11.204c.275.341.604.737.604.737 1.913-.06 2.702-1.256 2.78-1.373a.062.062 0 0 1 .006-.01c0-2.941-1.315-5.33-1.315-5.33-1.307-.986-2.559-.959-2.559-.959l-.128.148c1.554.47 2.275 1.162 2.275 1.162a7.547 7.547 0 0 0-2.75-.876 7.662 7.662 0 0 0-1.846.018c-.048 0-.089.007-.135.015l-.02.004a7.108 7.108 0 0 0-2.074.58c-.338.148-.54.259-.54.259s.75-.729 2.395-1.199l-.092-.11s-1.242-.028-2.558.958c0 0-1.316 2.389-1.316 5.33 0 0 .767 1.328 2.787 1.393 0 0 .338-.406.612-.756-1.16-.35-1.599-1.08-1.599-1.08s.091.065.256.158c.005 0 .011.003.019.008l.017.01c.014.01.028.016.042.023.013.007.027.014.04.023.23.13.458.23.668.313.374.157.822.296 1.343.397.685.13 1.49.175 2.367.01.429-.084.868-.204 1.325-.397a5.21 5.21 0 0 0 1.05-.544s-.457.747-1.654 1.088ZM8.745 8.686c0-.562.411-1.014.932-1.014.512 0 .932.452.932 1.014 0 .563-.411 1.015-.932 1.015-.512 0-.932-.452-.932-1.015Zm-3.335 0c0-.562.41-1.014.932-1.014.52 0 .94.452.932 1.014 0 .563-.411 1.015-.932 1.015-.512 0-.932-.452-.932-1.015Z"></path></svg></div></a></li><li><a class="Link_link__58k5P" role="link" tabindex="0" target="_blank" rel="noopener noreferrer" data-track="social:go-to-devcommunity:from-footer" title="DEV Community" href="https://dev.to/pie"><div class="SocialIcon_socialIconWrapper__vGyuo"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512" class="fill-current SocialIcon_socialIcon__URJJI"><path fill="currentColor" d="M120.12 208.29c-3.88-2.9-7.77-4.35-11.65-4.35H91.03v104.47h17.45c3.88 0 7.77-1.45 11.65-4.35 3.88-2.9 5.82-7.25 5.82-13.06v-69.65c-.01-5.8-1.96-10.16-5.83-13.06zM404.1 32H43.9C19.7 32 .06 51.59 0 75.8v360.4C.06 460.41 19.7 480 43.9 480h360.2c24.21 0 43.84-19.59 43.9-43.8V75.8c-.06-24.21-19.7-43.8-43.9-43.8zM154.2 291.19c0 18.81-11.61 47.31-48.36 47.25h-46.4V172.98h47.38c35.44 0 47.36 28.46 47.37 47.28l.01 70.93zm100.68-88.66H201.6v38.42h32.57v29.57H201.6v38.41h53.29v29.57h-62.18c-11.16.29-20.44-8.53-20.72-19.69V193.7c-.27-11.15 8.56-20.41 19.71-20.69h63.19l-.01 29.52zm103.64 115.29c-13.2 30.75-36.85 24.63-47.44 0l-38.53-144.8h32.57l29.71 113.72 29.57-113.72h32.58l-38.46 144.8z"></path></svg></div></a></li><li><a class="Link_link__58k5P" role="link" tabindex="0" target="_blank" rel="noopener noreferrer" data-track="social:go-to-reddit:from-footer" title="Reddit" href="https://www.reddit.com/r/HTTPie/"><div class="SocialIcon_socialIconWrapper__vGyuo"><svg viewBox="0 0 16 16" fill="currentColor" xmlns="http://www.w3.org/2000/svg" class="fill-current SocialIcon_socialIcon__URJJI"><path d="M6.15 7.991a.793.793 0 0 0-.791.792c0 .436.353.787.791.791a.793.793 0 0 0 .792-.791.793.793 0 0 0-.792-.792ZM9.95 10.955v.032a.222.222 0 0 0 .003-.312.222.222 0 0 0-.312-.004 2.6 2.6 0 0 1-1.652.48 2.581 2.581 0 0 1-1.644-.496.213.213 0 0 0-.3.3c.561.423 1.248.639 1.952.61.703.029 1.39-.187 1.953-.61ZM9.802 9.631h.04a.79.79 0 0 0 .758-.82.793.793 0 0 0-.792-.793.793.793 0 0 0-.791.792c0 .436.355.792.791.792l-.006.03Z"></path><path fill-rule="evenodd" clip-rule="evenodd" d="M15.894 7.991a7.903 7.903 0 1 1-15.806 0 7.903 7.903 0 0 1 15.806 0Zm-3.829-1.112a1.156 1.156 0 0 1 1.197 1.112c.008.444-.242.853-.639 1.051.008.116.008.232 0 .348 0 1.772-2.063 3.21-4.606 3.21-2.544 0-4.607-1.44-4.607-3.21a2.554 2.554 0 0 1 0-.348 1.152 1.152 0 1 1 1.27-1.89A5.662 5.662 0 0 1 7.76 6.18l.584-2.743v-.003a.245.245 0 0 1 .292-.187l1.937.387a.79.79 0 1 1-.104.483L8.78 3.761l-.513 2.466a5.618 5.618 0 0 1 3.043.972c.204-.194.473-.31.756-.32Z"></path></svg></div></a></li></ul></div><div class="Footer_section__7TyCt"><p class="Text_base__4755h Text_smallBody__zKyrD Footer_newsletterHeading__K8K_J" style="font-size:16px">Join the occasional newsletter</p><form method="post" class="NewsletterForm_form__ophzl" action="//httpie.us16.list-manage.com/subscribe/post?u=99f5ce2d00a123af1593451c6&amp;id=61924eb759" id="mc-embedded-subscribe-form" name="mc-embedded-subscribe-form" target="_blank" novalidate="" autoComplete="off" data-testid="footer-newsletter-form"><input name="EMAIL" type="email" placeholder="Enter email address" class="NewsletterForm_textInput__CWjAF NewsletterForm_footer__4SQ1m" data-gramm_editor="false" data-lpignore="true" autoComplete="off" required="" value=""/><button class="NewsletterForm_button__XpGNJ NewsletterForm_footer__4SQ1m" type="submit"><svg viewBox="0 0 10 18" fill="currentColor" xmlns="http://www.w3.org/2000/svg" class="fill-current NewsletterForm_icon__2c0UW"><path fill-rule="evenodd" clip-rule="evenodd" d="M.662 16.66c.52.508 1.363.508 1.883 0l6.902-6.74a1.279 1.279 0 0 0-.038-1.875L2.543 1.34a1.354 1.354 0 0 0-1.882 0c-.52.507-.52 1.33 0 1.838l5.961 5.823-5.96 5.82c-.52.509-.52 1.332 0 1.84Z"></path></svg></button><div style="position:absolute;left:-5000px" aria-hidden="true"><input type="text" name="b_99f5ce2d00a123af1593451c6_61924eb759" tabindex="-1" value=""/></div></form></div></div><div class="hidden md:inline-flex md:row-start-1 md:col-start-8 lg:col-start-12"><div class="ThemeToggle_wrapper__HVpyo"><div class="ThemeToggle_container__5I861" role="button" tabindex="0" data-track="settings:set-theme:dark"><div class="ThemeToggle_radio__IFs89" id="light"></div><div class="ThemeToggle_radio__IFs89" id="auto"></div><div class="ThemeToggle_radio__IFs89" id="dark"></div></div><label class="" for="light"><span class="Text_base__4755h Text_smallBody__zKyrD ThemeToggle_mode__OvG6v" style="font-size:10px">LIGHT MODE</span></label><label class="" for="auto"><span class="Text_base__4755h Text_smallBody__zKyrD ThemeToggle_mode__OvG6v" style="font-size:10px">AUTO </span></label><label class="" for="dark"><span class="Text_base__4755h Text_smallBody__zKyrD ThemeToggle_mode__OvG6v" style="font-size:10px">DARK MODE</span></label></div></div></div><div class="site-container site-grid"><div class="row-start-1 col-span-full"><ul class="Footer_bottomLinks__7g2es"><li><p class="Text_base__4755h Text_smallBody__zKyrD Footer_bottomLink__ZI4lh" style="font-size:14px"><a class="Link_link__58k5P Footer_link__ZW_qn" role="link" tabindex="0" data-track="footer:go-to-terms" href="/terms">Terms & Conditions</a></p></li><li><p class="Text_base__4755h Text_smallBody__zKyrD Footer_bottomLink__ZI4lh" style="font-size:14px"><a class="Link_link__58k5P Footer_link__ZW_qn" role="link" tabindex="0" data-track="footer:go-to-privacy" href="/privacy">Privacy Policy</a></p></li></ul></div><div class="md:row-start-1 md:col-start-1 md:col-span-full"><p class="Text_base__4755h Text_smallBody__zKyrD Footer_copyright__tQkHG" style="font-size:14px">© <!-- -->2025<!-- --> <strong>HTTPie, Inc.</strong><br/>548 Market St, #26464, 94104 San Francisco, CA<br/>HTTPie® is a registered trademark of HTTPie, Inc. All Rights Reserved.</p></div></div></footer></div><script id="__NEXT_DATA__" type="application/json" crossorigin="">{"props":{"pageProps":{"post":{"code":"var Component=(()=\u003e{var p=Object.create;var n=Object.defineProperty;var u=Object.getOwnPropertyDescriptor;var m=Object.getOwnPropertyNames;var g=Object.getPrototypeOf,f=Object.prototype.hasOwnProperty;var b=(a,e)=\u003e()=\u003e(a\u0026\u0026(e=a(a=0)),e);var w=(a,e)=\u003e()=\u003e(e||a((e={exports:{}}).exports,e),e.exports),y=(a,e)=\u003e{for(var i in e)n(a,i,{get:e[i],enumerable:!0})},h=(a,e,i,s)=\u003e{if(e\u0026\u0026typeof e==\"object\"||typeof e==\"function\")for(let o of m(e))!f.call(a,o)\u0026\u0026o!==i\u0026\u0026n(a,o,{get:()=\u003ee[o],enumerable:!(s=u(e,o))||s.enumerable});return a};var v=(a,e,i)=\u003e(i=a!=null?p(g(a)):{},h(e||!a||!a.__esModule?n(i,\"default\",{value:a,enumerable:!0}):i,a)),I=a=\u003eh(n({},\"__esModule\",{value:!0}),a);var r=b(()=\u003e{});var l=w((B,d)=\u003e{r();d.exports=_jsx_runtime});var j={};y(j,{default:()=\u003eG,frontmatter:()=\u003eH});r();var t=v(l()),H={authors:[\"jakub\"],title:\"How we lost 54k GitHub stars\",excerpt:\"What we learned from losing a decade of stargazers and watchers, the biggest accidental community loss in open source history.\",shareImage:\"/Images/Share/stardust.png\",date:\"2022-04-14\",isPublished:!0,ctas:[{icon:\"github\",title:\"Star\",url:\"https://github.com/httpie/cli\"}]};function c(a){let e=Object.assign({p:\"p\",a:\"a\",section:\"section\",h2:\"h2\",img:\"img\",h3:\"h3\",code:\"code\",em:\"em\",strong:\"strong\"},a.components);return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)(e.p,{children:[\"Community translations: \",(0,t.jsx)(e.a,{href:\"https://qiita.com/rana_kualu/items/50337d2b4de47d2e994b\",children:\"Japanese\"}),\", \",(0,t.jsx)(e.a,{href:\"https://habr.com/ru/company/skillfactory/blog/662155/\",children:\"Russian\"})]}),`\n`,(0,t.jsxs)(e.section,{children:[(0,t.jsx)(e.h2,{children:\"Gaining 54k GitHub stars\"}),(0,t.jsxs)(e.p,{children:[\"HTTPie for Terminal is celebrating \",(0,t.jsx)(e.a,{href:\"https://github.com/httpie/cli/commit/b966efa17\",children:\"10 years since the first commit\"}),\".\"]}),(0,t.jsx)(e.p,{children:\"If you\\u2019re unfamiliar with the project, it\\u2019s an open-source CLI HTTP client. What makes HTTPie different is that we build it from the ground up to make API interaction from the terminal as human-friendly as possible.\"}),(0,t.jsx)(e.p,{children:\"Starting with the first public release, published on the 25th of February 2012 from a rainy Copenhagen, we\\u2019ve hosted the project on GitHub.\"}),(0,t.jsxs)(e.p,{children:[\"I\\u2019ve been a GitHub fan ever since I became a member a couple of years earlier (the type that wears Octocat-decorated t-shirts, no less). It was back in the day when GitHub\\u2019s \",(0,t.jsx)(e.a,{href:\"https://web.archive.org/web/20120202143615/https://github.com/about\",children:\"about page\"}),\" proudly proclaimed they took $0.00 in VC funding and informed you about the number of delicious beers on tap in their SF office.\"]}),(0,t.jsx)(e.p,{children:\"So GitHub was an obvious choice when I realized that the result of scratching my own API testing itch might be of interest to the wider developer community. And of interest it was.\"}),(0,t.jsx)(e.p,{children:\"I remember the rush of HTTPie becoming the top link on Hacker News for the first time and seeing the GitHub community build up. Over the years as we continued to improve the project it kept attracting widespread adoption. It became the most popular API tool on the platform, and the GitHub community grew to 54k stargazers and 1k+ watchers.\"}),(0,t.jsx)(e.p,{\"data-image-wrapper\":!0,\"data-image-width\":\"1219\",\"data-image-height\":\"831\",children:(0,t.jsx)(e.img,{src:\"/Images/Blog/stardust/github-stars.png\",alt:\"Growing GitHub stars\"})}),(0,t.jsxs)(e.p,{children:[\"There are \",(0,t.jsx)(e.a,{href:\"https://github.com/search\",children:\"289M public repos\"}),\" so HTTPie was among the top 80 most popular public repos on GitHub overall; in the 99.99997203 percentile. In short, It was incredible to see this humble tool attract a community of that magnitude. And GitHub played an important role in that.\"]}),(0,t.jsx)(e.p,{children:\"In the same way that we benefited from GitHub\\u2019s \\u201Csocial coding\\u201D features, GitHub benefited from our hosting this popular project on their platform. Over the past decade, possibly millions of developers visited our GitHub page. That\\u2019s helped reinforce GitHub (Microsoft) as a company that cares about open source and community. It was a symbiotic relationship.\"})]}),`\n`,(0,t.jsxs)(e.section,{children:[(0,t.jsx)(e.h2,{children:\"Losing 54k GitHub stars\"}),(0,t.jsx)(e.p,{children:\"However, if you are one of our 55k stargazers and watchers, as of a few weeks ago you no longer are \\u{1F494}\"}),(0,t.jsxs)(e.section,{children:[(0,t.jsx)(e.h3,{children:\"What happened?\"}),(0,t.jsx)(e.p,{children:\"Due to an unfortunate sequence of events, I accidentally made the project\\u2019s repository private for a moment. And GitHub cascade-deleted our community that took 10 years to build.\"}),(0,t.jsx)(e.p,{\"data-image-wrapper\":!0,\"data-image-width\":\"1219\",\"data-image-height\":\"831\",children:(0,t.jsx)(e.img,{src:\"/Images/Blog/stardust/github-stars2.png\",alt:\"Loosing GitHub stars\"})})]}),(0,t.jsxs)(e.section,{children:[(0,t.jsx)(e.h3,{children:\"What does it mean?\"}),(0,t.jsxs)(e.p,{children:[\"If you\\u2019re a downstream maintainer or anyone previously watching \",(0,t.jsx)(e.a,{href:\"https://github.com/httpie/cli\",children:\"httpie/cli\"}),\" for notifications, for example, you\\u2019ll need to re-watch the repo. Incidentally, we\\u2019ve recently published \",(0,t.jsx)(e.a,{href:\"/blog/httpie-3.1.0\",children:\"a security release\"}),\".\"]}),(0,t.jsx)(e.p,{children:\"The same goes for stars. If you\\u2019re one of those 54K people who\\u2019ve starred the repo any time in the past decade, the repo is no longer among your starred projects.\"})]}),(0,t.jsxs)(e.section,{children:[(0,t.jsx)(e.h3,{children:\"Why did you make the repo private\\u203D\"}),(0,t.jsxs)(e.p,{children:[\"It\\u2019s a peculiarity of GitHub, to put it mildly, that making a repo private permanently deletes all watchers and stars. I was even aware of this, and I obviously had no intention to make \",(0,t.jsx)(e.code,{children:\"httpie/cli\"}),\" private. So, why then?\"]}),(0,t.jsx)(e.p,{\"data-image-wrapper\":!0,\"data-image-width\":\"1495\",\"data-image-height\":\"432\",children:(0,t.jsx)(e.img,{src:\"/Images/Blog/stardust/visibility.png\",alt:\"visibility\"})}),(0,t.jsxs)(e.p,{children:[\"The proximate cause was that I thought I was inside a different repo; one with no content and zero stars. What I actually intended to do was to hide the \",(0,t.jsx)(e.a,{href:\"https://github.com/httpie\",children:\"HTTPie organization\\u2019s\"}),\" profile README, which I had created the week before but had no opportunity to populate.\"]}),(0,t.jsxs)(e.p,{children:[\"What put me on the wrong path was an otherwise completely unrelated action: I had just done the same (i.e., hidden an empty README) on my personal profile by making \",(0,t.jsx)(e.code,{children:\"jkbrzt/jkbrzt\"}),\" private.\"]}),(0,t.jsx)(e.p,{children:\"GitHub\\u2019s conceptual model treats users and organizations as very similar entities when it comes to profiles and repos. In this context, and since I just wanted to repeat the same benign action on our organization\\u2019s profile, my brain switched to auto-pilot mode.\"}),(0,t.jsxs)(e.p,{children:[\"I didn\\u2019t realize at the moment there\\u2019s an inconsistency in the naming of this special repo containing profile READMEs and that it differs for users and organizations: \",(0,t.jsx)(e.code,{children:\"name/name\"}),\" vs. \",(0,t.jsx)(e.code,{children:\"name/.github\"}),\".\"]}),(0,t.jsxs)(e.p,{children:[\"That\\u2019s why I proceeded to make \",(0,t.jsx)(e.code,{children:\"httpie/cli\"}),\" private instead of \",(0,t.jsx)(e.code,{children:\"httpie/.github\"}),\" without realizing my mistake.\"]})]}),(0,t.jsxs)(e.section,{children:[(0,t.jsx)(e.h3,{children:\"But there\\u2019s a confirmation, right\\u203D\"}),(0,t.jsxs)(e.p,{children:[\"There\\u2019s a confirmation box. It\\u2019s designed to stop users in a situation like mine from doing something stupid. It tells you that \",(0,t.jsx)(e.em,{children:\"\\u201CYou will permanently lose all stars and watchers of this repository.\\u201D\"}),\" That\\u2019s pretty scary.\"]}),(0,t.jsxs)(e.p,{children:[\"The problem is that the box looks exactly the same for repos with no commits and stars and for repos with a decade-long history and 55k stargazers and watchers. And it says \",(0,t.jsxs)(e.em,{children:[\"\\u201CWarning: this is a \",(0,t.jsx)(e.strong,{children:\"potentially destructive\"}),\" action.\\u201D\"]})]}),(0,t.jsxs)(e.p,{children:[\"To paraphrase, the box tells you \",(0,t.jsxs)(e.em,{children:[\"\\u201CYou\\u2019re about to demolish a house. \",(0,t.jsx)(e.strong,{children:\"If\"}),\" there are any people inside, they will all die\\u201D\"]}),\".\"]}),(0,t.jsx)(e.p,{children:\"But it doesn\\u2019t include anything specific to break you out of your auto-pilot mode if you\\u2019ve confused the address and think you\\u2019re looking at an empty house.\"}),(0,t.jsx)(e.p,{children:\"A 54k-star question: Which one of these two dialogs is safe to confirm and which one deletes a 10-year-old community?\"}),(0,t.jsx)(e.p,{\"data-image-wrapper\":!0,\"data-image-width\":\"1263\",\"data-image-height\":\"917\",children:(0,t.jsx)(e.img,{src:\"/Images/Blog/stardust/confirm.jpg\",alt:\"confirm\"})}),(0,t.jsxs)(e.p,{children:[\"The dialog should be more contextual and, paraphrasing again, it should say \",(0,t.jsx)(e.em,{children:\"\\u201CYou\\u2019re about to kill 55,000 people.\\u201D\"}),\" That would\\u2019ve certainly made me pause.\"]})]}),(0,t.jsxs)(e.section,{children:[(0,t.jsx)(e.h3,{children:\"So you made it private, just flip the switch!\"}),(0,t.jsx)(e.p,{children:\"You can imagine my confusion when I went back to the organization page and not only could I still see the empty README but our most popular repo was nowhere to be found. After a moment I realized what happened. So I went back to the repo\\u2019s settings to flip the switch. But GitHub didn\\u2019t allow me to do that\\u2014for an entire half an hour.\"}),(0,t.jsx)(e.p,{\"data-image-wrapper\":!0,\"data-image-width\":\"1525\",\"data-image-height\":\"747\",children:(0,t.jsx)(e.img,{src:\"/Images/Blog/stardust/delete.jpg\",alt:\"delete\"})}),(0,t.jsx)(e.p,{children:\"If you\\u2019re wondering why so long, it\\u2019s because \\u{1F941} that\\u2019s how long it took GitHub to cascade-delete our decade of stargazers and watchers. And there was no way to stop the process. All I could do was start writing to GitHub support, refresh the page and wait for the number of stars to reach zero before I could make it public again.\"})]}),(0,t.jsxs)(e.section,{children:[(0,t.jsx)(e.h3,{children:\"Why doesn\\u2019t GitHub restore it\\u203D\"}),(0,t.jsxs)(e.p,{children:[\"GitHub obviously has backups. And it is indeed possible to undo the damage done by accidentally making a repo private. The GitHub team themselves accidentally made the \",(0,t.jsx)(e.a,{href:\"https://github.com/desktop/desktop\",children:\"GitHub Desktop app repo\"}),\" private once. And they restored everything for themselves within hours. Here\\u2019s the former GitHub CEO \",(0,t.jsx)(e.a,{href:\"https://twitter.com/natfriedman/status/1328410589291446274\",children:\"explaining the situation\"}),\":\"]}),(0,t.jsx)(e.p,{\"data-image-wrapper\":!0,\"data-image-width\":\"1181\",\"data-image-height\":\"633\",children:(0,t.jsx)(e.img,{src:\"/Images/Blog/stardust/tweet.png\",alt:\"tweet\"})}),(0,t.jsx)(e.p,{children:\"In our case, however, they refuse to do that, citing undesirable side effects and the cost of resources. We even offered GitHub financial compensation for any resources required. But, sadly, they declined. They have other priorities than resurrecting the community of one of the oldest and most popular community projects on their platform.\"}),(0,t.jsxs)(e.p,{children:[\"So the answer to the question is, unfortunately, the following: GitHub will restore a repo damaged by making it private. But only if it\\u2019s one of their own projects, not a community one. The latter gets a \",(0,t.jsx)(e.a,{href:\"https://twitter.com/github/status/1493329046708670475\",children:\"tweet\"}),\", at best.\"]})]})]}),`\n`,(0,t.jsxs)(e.section,{children:[(0,t.jsx)(e.h2,{children:\"Lessons learned\"}),(0,t.jsx)(e.p,{children:\"One should never let a good crisis go to waste. Our options are limited, but there are at least a few lessons learned that might be valuable to share.\"}),(0,t.jsxs)(e.section,{children:[(0,t.jsx)(e.h3,{children:\"Lesson #1: UI/UX design\"}),(0,t.jsxs)(e.p,{children:[\"Show, don\\u2019t tell. Design confirmation dialogs in a don\\u2019t-make-me-think fashion. When the user is about to destroy something, don\\u2019t describe that as a potential scenario in abstract words that the user needs to convert to mental images and put values on. Especially when cascade-deleting as a side effect of the primary action. For example, here\\u2019s how we approach that in \",(0,t.jsx)(e.a,{href:\"/product\",children:\"HTTPie for Desktop\"}),\":\"]}),(0,t.jsx)(e.p,{\"data-image-wrapper\":!0,\"data-image-width\":\"1282\",\"data-image-height\":\"788\",children:(0,t.jsx)(e.img,{src:\"/Images/Blog/stardust/delete2.png\",alt:\"delete2\"})}),(0,t.jsx)(e.p,{children:\"And, of course, the dialog should reflect the severity of the side-effect. It should be quiet when there are no side effects at all. Otherwise, we risk desensitizing the user by wasting their limited attention capital:\"}),(0,t.jsx)(e.p,{\"data-image-wrapper\":!0,\"data-image-width\":\"1282\",\"data-image-height\":\"586\",children:(0,t.jsx)(e.img,{src:\"/Images/Blog/stardust/delete3.png\",alt:\"delete3\"})})]}),(0,t.jsxs)(e.section,{children:[(0,t.jsx)(e.h3,{children:\"Lesson #2: Database design\"}),(0,t.jsx)(e.p,{children:\"Use soft-deletes. People are human and they make mistakes. For hard-deletes, delay the process.\"}),(0,t.jsx)(e.p,{\"data-image-wrapper\":!0,\"data-image-width\":\"1525\",\"data-image-height\":\"841\",children:(0,t.jsx)(e.img,{src:\"/Images/Blog/stardust/soft.jpg\",alt:\"soft\"})})]}),(0,t.jsxs)(e.section,{children:[(0,t.jsx)(e.h3,{children:\"Lesson #3: Relationship with GitHub\"}),(0,t.jsx)(e.p,{children:\"It was a human error on our side and GitHub made it clear they\\u2019re not legally obliged to help us. The tone of our decade-long mutually-beneficial relationship is set by GitHub\\u2019s Terms of Service. Thinking there was more to it was naive.\"}),(0,t.jsxs)(e.p,{children:[\"After all, GitHub has a history of taking \",(0,t.jsx)(e.a,{href:\"https://news.ycombinator.com/item?id=24872911\",children:\"controversial actions\"}),\" that go against the spirit of open source and community and then \",(0,t.jsx)(e.a,{href:\"https://github.blog/2020-11-16-standing-up-for-developers-youtube-dl-is-back/\",children:\"reverting them\"}),\" only based on public outrage. And Microsoft (which now owns GitHub), despite its newly-found affection for open source, has not always had exactly a \",(0,t.jsx)(e.a,{href:\"https://www.reddit.com/r/OutOfTheLoop/comments/2v4ses/why_is_microsoft_so_widely_considered_evil/\",children:\"great\"}),\" \",(0,t.jsx)(e.a,{href:\"https://en.wikipedia.org/wiki/Embrace,_extend,_and_extinguish\",children:\"reputation\"}),\".\"]})]})]}),`\n`,(0,t.jsxs)(e.section,{children:[(0,t.jsx)(e.h2,{children:\"What\\u2019s next?\"}),(0,t.jsxs)(e.p,{children:[\"We continue to hope GitHub/Microsoft change their machine-like attitude and restore the project\\u2019s community one day. They still have all the data and the means to do that. We also hope they improve the UI and database design to prevent this from happening to \",(0,t.jsx)(e.a,{href:\"https://twitter.com/sourcegraph/status/1070201585102274561\",children:\"other teams\"}),\" in the future.\"]}),(0,t.jsxs)(e.p,{children:[\"In the meantime, you can help us by sharing this story and \",(0,t.jsx)(e.a,{href:\"https://github.com/httpie/cli\",children:\"re-watching/starring the repo\"}),\".\"]}),(0,t.jsx)(e.p,{children:\"As for me, I will probably take a break from wearing Octocat-decorated t-shirts.\"})]}),`\n`,(0,t.jsxs)(e.section,{children:[(0,t.jsx)(e.h2,{children:\"Epilogue\"}),(0,t.jsxs)(e.p,{children:[\"Despite our GitHub stars turning into dust, HTTPie has never been doing better. What started as a side project has recently become a company, and our team is growing HTTPie into an API development platform (one as delightful as you\\u2019d expect from HTTPie). The private beta of \",(0,t.jsx)(e.a,{href:\"/product\",children:\"HTTPie for Web \u0026 Desktop\"}),\" has been receiving great feedback, and we cannot wait to launch it to the public in the upcoming weeks.\"]}),(0,t.jsxs)(e.p,{children:[\"If you\\u2019d like to stay up-to-date, you can join our \",(0,t.jsx)(e.a,{href:\"/discord\",children:\"Discord community\"}),\" or follow \",(0,t.jsx)(e.a,{href:\"https://twitter.com/httpie\",children:\"@httpie\"}),\".\"]})]}),`\n`,(0,t.jsxs)(e.section,{children:[(0,t.jsx)(e.h2,{children:\"\\u270F\\uFE0F Update after four months\"}),(0,t.jsxs)(e.p,{children:[\"The interest in this story blew us away. As of August \\u201922, the post has been read by more than a hundred thousand people and has been \",(0,t.jsx)(e.a,{href:\"https://twitter.com/search?q=https%3A%2F%2Fhttpie.io%2Fblog%2Fstardust\u0026src=typed_query\",children:\"shared\"}),\" thousands of times on Twitter and elsewhere, and was the \",(0,t.jsx)(e.a,{href:\"https://news.ycombinator.com/item?id=31033758\",children:\"top post\"}),\" on Hacker News for days.\"]}),(0,t.jsx)(e.p,{children:\"We\\u2019ve also received a ton of empathy and public calls for support from the open source community, and we couldn\\u2019t be more grateful. As a result, HTTPie for Terminal has regained an incredible 23k stargazers within a few months.\"}),(0,t.jsx)(e.p,{\"data-image-wrapper\":!0,\"data-image-width\":\"1219\",\"data-image-height\":\"831\",children:(0,t.jsx)(e.img,{src:\"/Images/Blog/stardust/github-stars3.png\",alt:\"Regaining GitHub stars\"})}),(0,t.jsx)(e.p,{children:\"We never heard from GitHub. But at least they\\u2019ve quietly improved the UI of the destructive \\u201CChange repository visibility\\u201D dialog shortly after this post went out.\"}),(0,t.jsx)(e.p,{\"data-image-wrapper\":!0,\"data-image-width\":\"1263\",\"data-image-height\":\"917\",children:(0,t.jsx)(e.img,{src:\"/Images/Blog/stardust/confirm2.png\",alt:\"New GitHub repo visibility confirmation dialog\"})})]}),`\n`,(0,t.jsxs)(e.section,{children:[(0,t.jsx)(e.h2,{children:\"\\u270F\\uFE0F Update II.\"}),(0,t.jsx)(e.p,{children:\"Since the last update, a person from Microsoft who led the acquisition of GitHub has personally reached out to me on Twitter. He even claims to have found our stars!\"}),(0,t.jsx)(e.p,{\"data-image-wrapper\":!0,\"data-image-width\":\"1181\",\"data-image-height\":\"530\",children:(0,t.jsx)(e.img,{src:\"/Images/Blog/stardust/found.png\",alt:\"Our stars have been supposedly found\"})}),(0,t.jsxs)(e.p,{children:[\"Sadly enough, however, we haven\\u2019t heard from him since. But we\\u2019re happy for T3, whose deleted repo GitHub successfully \",(0,t.jsx)(e.a,{href:\"https://twitter.com/t3dotgg/status/1556009443548094465\",children:\"restored\"}),\" including all forks and stars.\"]}),(0,t.jsx)(e.p,{\"data-image-wrapper\":!0,\"data-image-width\":\"1181\",\"data-image-height\":\"561\",children:(0,t.jsx)(e.img,{src:\"/Images/Blog/stardust/t3.png\",alt:\"GitHub restored T3 repo\"})}),(0,t.jsx)(e.p,{children:\"Another proof that complete restoration is indeed possible.\"})]})]})}function T(a={}){let{wrapper:e}=a.components||{};return e?(0,t.jsx)(e,Object.assign({},a,{children:(0,t.jsx)(c,a)})):c(a)}var G=T;return I(j);})();\n;return Component;","slug":"stardust","url":"/blog/stardust","title":"How we lost 54k GitHub stars","excerpt":"What we learned from losing a decade of stargazers and watchers, the biggest accidental community loss in open source history.","authors":[{"name":"Jakub Roztocil","twitter":"jkbrzt","avatar":"/Images/Team/Jakub.jpg","team":true}],"date":"2022-04-14","ctas":[{"icon":"github","title":"Star","url":"https://github.com/httpie/cli"}],"isPublished":true,"shareImage":"/Images/Share/stardust.png"},"newPosts":[{"slug":"changelog-0027","url":"/blog/changelog-0027","title":"Changelog #0027 — 📤 Export/import, path params, copy as command, and more","excerpt":"Check out what’s new in HTTPie for Web \u0026 Desktop 2025.2.0","authors":[{"name":"Jakub Roztocil","twitter":"jkbrzt","avatar":"/Images/Team/Jakub.jpg","team":true},{"name":"Cláudia Delgado","twitter":"claudiatd","avatar":"/Images/Team/Claudia.jpg","team":true}],"date":"2025-03-14","ctas":[{"icon":"dropdown","title":"Download","url":"https://httpie.io/download","hideFromTop":true},{"icon":"github","title":"Star httpie/desktop","url":"https://github.com/httpie/desktop","hideFromTop":true}],"isPublished":true,"shareImage":"/Images/Share/blog-changelog-0027.png"},{"slug":"changelog-0026","url":"/blog/changelog-0026","title":"Changelog #0026 — 💇♀️️ UI refresh, IDE-like features, enhanced variable system","excerpt":"Check out what’s new in HTTPie for Web \u0026 Desktop 2025.1.0","authors":[{"name":"Jakub Roztocil","twitter":"jkbrzt","avatar":"/Images/Team/Jakub.jpg","team":true},{"name":"Cláudia Delgado","twitter":"claudiatd","avatar":"/Images/Team/Claudia.jpg","team":true}],"date":"2025-01-20","ctas":[{"icon":"dropdown","title":"Download","url":"https://httpie.io/download","hideFromTop":true},{"icon":"github","title":"Star httpie/desktop","url":"https://github.com/httpie/desktop","hideFromTop":true}],"isPublished":true,"shareImage":"/Images/Share/blog-changelog-0026.png"}],"layoutProps":{"jobsCount":5}},"__N_SSG":true},"page":"/blog/[slug]","query":{"slug":"stardust"},"buildId":"JvJQ0O-QW9QoHeZjg5YBp","isFallback":false,"dynamicIds":[91093,35006,81815],"gsp":true,"scriptLoader":[]}</script><script type="text/javascript" src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script><script type="text/javascript" src="https://termible.io/js/jakubroztocil/httpie"></script><script type="module" src="https://static.cloudflareinsights.com/beacon.min.js/v31edd6df95cf4e85bb4c19e7a9bdbcba1788362987495" integrity="sha512-iIg7k2xntmwu6/uSb5tpc/hySgZc4eoL31yB29W6tJFo2akwjPWcEqnCEdJvGexCL0KEQwVYv5BlowfhVz26hg==" data-cf-beacon='{"version":"2024.11.0","token":"7f131f294fb04864ba8ccc799b857e95","r":1,"spa":2}' crossorigin="anonymous"></script>
|
||
</body></html> |