-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathapp-outlet-a-universal-linux-app-store.html
57 lines (52 loc) · 23 KB
/
app-outlet-a-universal-linux-app-store.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width,initial-scale=1"><title>App Outlet: A universal Linux app store - AppOutlet</title><meta name="description" content="App outlet screenshots App Outlet is an application store for Linux distributions focused on delivering…"><meta name="generator" content="Publii Open-Source CMS for Static Site"><link rel="canonical" href="https://appoutlet.dev/app-outlet-a-universal-linux-app-store.html"><meta property="og:title" content="App Outlet: A universal Linux app store"><meta property="og:image" content="https://appoutlet.dev/media/posts/3/1_-XfMtgzZS34QxPgYXTNLXw-2.png"><meta property="og:image:width" content="1312"><meta property="og:image:height" content="842"><meta property="og:site_name" content="AppOutlet"><meta property="og:description" content="App outlet screenshots App Outlet is an application store for Linux distributions focused on delivering…"><meta property="og:url" content="https://appoutlet.dev/app-outlet-a-universal-linux-app-store.html"><meta property="og:type" content="article"><meta name="twitter:card" content="summary_large_image"><meta name="twitter:site" content="@AppOutletTeam"><meta name="twitter:title" content="App Outlet: A universal Linux app store"><meta name="twitter:description" content="App outlet screenshots App Outlet is an application store for Linux distributions focused on delivering…"><meta name="twitter:image" content="https://appoutlet.dev/media/posts/3/1_-XfMtgzZS34QxPgYXTNLXw-2.png"><link rel="shortcut icon" href="https://appoutlet.dev/media/website/logo.png" type="image/png"><link rel="preload" href="https://appoutlet.dev/assets/dynamic/fonts/robotoflex/robotoflex.woff2" as="font" type="font/woff2" crossorigin><link rel="stylesheet" href="https://appoutlet.dev/assets/css/style.css?v=b961dbe32df55b9e6ec0e28a27422b22"><script type="application/ld+json">{"@context":"http://schema.org","@type":"Article","mainEntityOfPage":{"@type":"WebPage","@id":"https://appoutlet.dev/app-outlet-a-universal-linux-app-store.html"},"headline":"App Outlet: A universal Linux app store","datePublished":"2022-03-31T14:48+01:00","dateModified":"2023-03-20T17:14+00:00","image":{"@type":"ImageObject","url":"https://appoutlet.dev/media/posts/3/1_-XfMtgzZS34QxPgYXTNLXw-2.png","height":842,"width":1312},"description":"App outlet screenshots App Outlet is an application store for Linux distributions focused on delivering…","author":{"@type":"Person","name":"messiaslima","url":"https://appoutlet.dev/authors/messiaslima/"},"publisher":{"@type":"Organization","name":"messiaslima","logo":{"@type":"ImageObject","url":"https://appoutlet.dev/media/website/logo-transparent-padding_512.png","height":512,"width":512}}}</script><noscript><style>img[loading] {
opacity: 1;
}</style></noscript><style>.li{fill:none;stroke-linecap:round;stroke-linejoin:round;vertical-align:middle}</style></head><body class="post-template"><header class="header" id="js-header"><a href="https://appoutlet.dev/" class="logo"><img src="https://appoutlet.dev/media/website/logo-transparent-padding_512.png" alt="AppOutlet" width="512" height="512"></a><nav class="navbar js-navbar"><button class="navbar__toggle js-toggle" aria-label="Menu"><span class="navbar__toggle-box"><span class="navbar__toggle-inner">Menu</span></span></button><ul class="navbar__menu"><li class="has-submenu"><span class="is-separator" title="projects" aria-haspopup="true"><svg class="li li-layout-grid" width="24px" height="24px" fill="none" stroke="currentColor" stroke-width="2" viewBox="0 0 24 24"><g><rect width="7" height="7" x="3" y="3" rx="1"/><rect width="7" height="7" x="14" y="3" rx="1"/><rect width="7" height="7" x="14" y="14" rx="1"/><rect width="7" height="7" x="3" y="14" rx="1"/></g></svg> Apps</span><ul class="navbar__submenu level-2" aria-hidden="true"><li><a href="https://appoutlet.dev/tags/gameoutlet/" title="GameOutlet" target="_self"><svg class="li li-gamepad-2" width="24px" height="24px" fill="none" stroke="currentColor" stroke-width="2" viewBox="0 0 24 24"><g><path d="M6 11h4M8 9v4M15 12h.01M18 10h.01M17.32 5H6.68a4 4 0 0 0-3.978 3.59c-.006.052-.01.101-.017.152C2.604 9.416 2 14.456 2 16a3 3 0 0 0 3 3c1 0 1.5-.5 2-1l1.414-1.414A2 2 0 0 1 9.828 16h4.344a2 2 0 0 1 1.414.586L17 18c.5.5 1 1 2 1a3 3 0 0 0 3-3c0-1.545-.604-6.584-.685-7.258-.007-.05-.011-.1-.017-.151A4 4 0 0 0 17.32 5z"/></g></svg> GameOutlet</a></li><li class="has-submenu"><span class="is-separator" aria-haspopup="true">Discontinued projets</span><ul class="navbar__submenu level-3" aria-hidden="true"><li><a href="https://appoutlet.dev/tags/app-outlet/" title="App Oulet" target="_self">🛍️ AppOutlet</a></li><li><a href="https://appoutlet.dev/tags/karavel/" title="Karavel" target="_self">⛵️ Karavel</a></li></ul></li></ul></li><li><a href="https://appoutlet.dev/tags/article/" title="Blog" target="_self"><svg class="li li-file-text" width="24px" height="24px" fill="none" stroke="currentColor" stroke-width="2" viewBox="0 0 24 24"><g><path d="M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z"/><path d="M14 2v4a2 2 0 0 0 2 2h4M10 9H8M16 13H8M16 17H8"/></g></svg> Blog</a></li><li><a href="https://github.com/appoutlet" title="Github repository" target="_blank"><svg class="li li-github" width="24px" height="24px" fill="none" stroke="currentColor" stroke-width="2" viewBox="0 0 24 24"><g><path d="M15 22v-4a4.8 4.8 0 0 0-1-3.5c3 0 6-2 6-5.5.08-1.25-.27-2.48-1-3.5.28-1.15.28-2.35 0-3.5 0 0-1 0-3 1.5-2.64-.5-5.36-.5-8 0C6 2 5 2 5 2c-.3 1.15-.3 2.35 0 3.5A5.403 5.403 0 0 0 4 9c0 3.5 3 5.5 6 5.5-.39.49-.68 1.05-.85 1.65-.17.6-.22 1.23-.15 1.85v4"/><path d="M9 18c-4.51 2-5-2-7-2"/></g></svg> Github</a></li></ul></nav></header><main class="post"><div class="wrapper"><article class="content"><header class="content__header"><a href="https://appoutlet.dev/tags/app-outlet/" class="content__maintag">AppOutlet</a><h1 class="content__title">App Outlet: A universal Linux app store</h1><div class="content__meta"><div class="content__author">By <a href="https://appoutlet.dev/authors/messiaslima/" class="invert" rel="author" title="messiaslima">messiaslima</a></div><time datetime="2022-03-31T14:48">March 31, 2022</time><div class="content__comments"><a href="https://appoutlet.dev/app-outlet-a-universal-linux-app-store.html#comments" rel="nofollow" aria-label="Comments"><svg aria-hidden="true"><title>Comments</title><use xlink:href="https://appoutlet.dev/assets/svg/svg-map.svg#comments"/></svg></a></div></div></header><figure class="content__featured-image"><img src="https://appoutlet.dev/media/posts/3/1_-XfMtgzZS34QxPgYXTNLXw-2.png" srcset="https://appoutlet.dev/media/posts/3/responsive/1_-XfMtgzZS34QxPgYXTNLXw-2-xs.webp 300w, https://appoutlet.dev/media/posts/3/responsive/1_-XfMtgzZS34QxPgYXTNLXw-2-sm.webp 480w, https://appoutlet.dev/media/posts/3/responsive/1_-XfMtgzZS34QxPgYXTNLXw-2-md.webp 768w, https://appoutlet.dev/media/posts/3/responsive/1_-XfMtgzZS34QxPgYXTNLXw-2-lg.webp 1200w" sizes="(min-width: 56.25em) 100vw, (min-width: 37.5em) 50vw, 100vw" loading="eager" height="842" width="1312" alt=""></figure><div class="content__inner"><div class="content__entry"><figure class="post__image post__image--wide"><img loading="lazy" src="https://appoutlet.dev/media/posts/3/screenshots.png" alt="App outlet screenshots" width="1920" height="800" sizes="(max-width: 48em) 100vw, 100vw" srcset="https://appoutlet.dev/media/posts/3/responsive/screenshots-xs.webp 300w, https://appoutlet.dev/media/posts/3/responsive/screenshots-sm.webp 480w, https://appoutlet.dev/media/posts/3/responsive/screenshots-md.webp 768w"><figcaption>App outlet screenshots</figcaption></figure><p>App Outlet is an application store for Linux distributions focused on delivering applications released in distro-agnostic packages (snap, flatpak, AppImage). That's why the “universal” is in the subtitle.</p><h1 id="3017" class="ku kv il bo kw kx ky kz la lb lc ld le lf lg lh li lj lk ll lm ln lo lp lq lr gm" data-selectable-paragraph="">The old and the new Linux packaging style</h1><p id="89e7" class="pw-post-body-paragraph jw jx il jy b jz ls kb kc kd lt kf kg kh lu kj kk kl lv kn ko kp lw kr ks kt ie gm" data-selectable-paragraph="">Before the creation of the distro-agnostic packages, there were two main pre-compiled packages that were distributed over their respective distros: <code class="lx ly lz ma mb b">.deb</code> to Debian and their based distros and <code class="lx ly lz ma mb b">.rpm</code> to the Red Rat Enterprise Linux (a.k.a RHEL) and its derivates.</p><p id="dda0" class="pw-post-body-paragraph jw jx il jy b jz ka kb kc kd ke kf kg kh ki kj kk kl km kn ko kp kq kr ks kt ie gm" data-selectable-paragraph="">This architecture could cause some instability problems given the way that the dependencies are managed. Installing software that has a specific dependency could break another or the entire system depending on the size of the change.</p><p id="dba9" class="pw-post-body-paragraph jw jx il jy b jz ka kb kc kd ke kf kg kh ki kj kk kl km kn ko kp kq kr ks kt ie gm" data-selectable-paragraph="">These new software packaging tools aim to solve this problem by bringing a more “self-contained” approach. The application's dependencies are already bundled to the deliverable, mitigating the risk of dependencies crashes.</p><p id="ce38" class="pw-post-body-paragraph jw jx il jy b jz ka kb kc kd ke kf kg kh ki kj kk kl km kn ko kp kq kr ks kt ie gm" data-selectable-paragraph="">Besides that, these new packages provide mode features regarding security like sandboxing, permissions management.</p><h1 id="8319" class="ku kv il bo kw kx ky kz la lb lc ld le lf lg lh li lj lk ll lm ln lo lp lq lr gm" data-selectable-paragraph="">It’s not all flowers</h1><p id="e172" class="pw-post-body-paragraph jw jx il jy b jz ls kb kc kd lt kf kg kh lu kj kk kl lv kn ko kp lw kr ks kt ie gm" data-selectable-paragraph="">Like every new stuff, the new packages bring some issues: Startup time, theme integration and decentralized distribution (the problem that we will try to solve today).</p><p id="9471" class="pw-post-body-paragraph jw jx il jy b jz ka kb kc kd ke kf kg kh ki kj kk kl km kn ko kp kq kr ks kt ie gm" data-selectable-paragraph="">Each package type has its own way to distribute the application, its own store. Flatpak has the <a class="au mc" href="https://flathub.org/home" rel="noopener ugc nofollow" target="_blank">Flathub</a>. Snap has the <a class="au mc" href="https://snapcraft.io/store" rel="noopener ugc nofollow" target="_blank">Snapstore</a>. AppImage doesn’t even have an installation tool or a formal store but there are some independent distributors like <a class="au mc" href="https://www.appimagehub.com/" rel="noopener ugc nofollow" target="_blank">AppImageHub.com</a> and <a class="au mc" href="https://appimage.github.io/apps/" rel="noopener ugc nofollow" target="_blank">appimage.github.io</a>. So every time you need to search for new software to install you need to go to several sites, download the package and then install it on your machine.</p><p id="4236" class="pw-post-body-paragraph jw jx il jy b jz ka kb kc kd ke kf kg kh ki kj kk kl km kn ko kp kq kr ks kt ie gm" data-selectable-paragraph="">Some distros have integrations on their own application stores but the distros have preferences of a specific package and don't provide an easy way to get the counterpart.</p><p id="0d67" class="pw-post-body-paragraph jw jx il jy b jz ka kb kc kd ke kf kg kh ki kj kk kl km kn ko kp kq kr ks kt ie gm" data-selectable-paragraph="">That’s why the App Outlet was created.</p><h1 id="4e75" class="ku kv il bo kw kx ky kz la lb lc ld le lf lg lh li lj lk ll lm ln lo lp lq lr gm" data-selectable-paragraph="">App Outlet to the rescue</h1><p>App outlet fetch data from the Snapstore, Flathub and appimage.github.io, show the applications in a user-friendly way and provide an easy way to install and remove your favourite applications!</p><figure class="post__image post__image--center"><img loading="lazy" src="https://appoutlet.dev/media/posts/3/1_-XfMtgzZS34QxPgYXTNLXw.png" alt="" width="1312" height="842" sizes="(max-width: 48em) 100vw, 100vw" srcset="https://appoutlet.dev/media/posts/3/responsive/1_-XfMtgzZS34QxPgYXTNLXw-xs.webp 300w, https://appoutlet.dev/media/posts/3/responsive/1_-XfMtgzZS34QxPgYXTNLXw-sm.webp 480w, https://appoutlet.dev/media/posts/3/responsive/1_-XfMtgzZS34QxPgYXTNLXw-md.webp 768w"></figure>You can just search by an application title and a list of applications is shown to you. You just need to select the application and click on the “Install” button.<p></p><h1 id="71e4" class="ku kv il bo kw kx ky kz la lb lc ld le lf lg lh li lj lk ll lm ln lo lp lq lr gm" data-selectable-paragraph="">How to get it?</h1><div class="ie if ig ih ii"><p id="f9d3" class="pw-post-body-paragraph jw jx il jy b jz ls kb kc kd lt kf kg kh lu kj kk kl lv kn ko kp lw kr ks kt ie gm" data-selectable-paragraph="">You can <a class="au mc" href="https://www.pling.com/p/1355468/" rel="noopener ugc nofollow" target="_blank">download the App Outlet here</a>, in the files section.</p><p id="9a9a" class="pw-post-body-paragraph jw jx il jy b jz ka kb kc kd ke kf kg kh ki kj kk kl km kn ko kp kq kr ks kt ie gm" data-selectable-paragraph="">The older releases also can be found o the Github repository.</p></div><div class="ie if ig ih ii"><p id="015e" class="pw-post-body-paragraph jw jx il jy b jz ka kb kc kd ke kf kg kh ki kj kk kl km kn ko kp kq kr ks kt ie gm" data-selectable-paragraph="">Feel free to download it, test it and give you feedback to us.</p><p id="8b60" class="pw-post-body-paragraph jw jx il jy b jz ka kb kc kd ke kf kg kh ki kj kk kl km kn ko kp kq kr ks kt ie gm" data-selectable-paragraph="">If you are interested to contribute to the project, you can see the source code and a lot of other stuff on the <a href="https://github.com/appoutlet/appoutlet/" target="_blank" rel="nofollow ugc noopener noreferrer">Github repository</a>.</p><h1 id="4898" class="ku kv il bo kw kx mp kz la lb mq ld le lf mr lh li lj ms ll lm ln mt lp lq lr gm" data-selectable-paragraph="">References</h1><ul><li id="2fb5" class="mu mv il jy b jz ls kd lt kh mw kl mx kp my kt mz na nb nc gm" data-selectable-paragraph=""><a class="au mc" href="https://docs.flatpak.org/en/latest/introduction.html#reasons-to-use-flatpak" rel="noopener ugc nofollow" target="_blank">https://docs.flatpak.org/en/latest/introduction.html#reasons-to-use-flatpak</a></li><li id="4cf5" class="mu mv il jy b jz nd kd ne kh nf kl ng kp nh kt mz na nb nc gm" data-selectable-paragraph=""><a class="au mc" href="https://snapcraft.io/store" rel="noopener ugc nofollow" target="_blank">https://snapcraft.io/store</a></li><li id="e11e" class="mu mv il jy b jz nd kd ne kh nf kl ng kp nh kt mz na nb nc gm" data-selectable-paragraph=""><a class="au mc" href="https://flathub.org/home" rel="noopener ugc nofollow" target="_blank">https://flathub.org/home</a></li><li id="1c96" class="mu mv il jy b jz nd kd ne kh nf kl ng kp nh kt mz na nb nc gm" data-selectable-paragraph=""><a href="https://appoutlet.github.io/" target="_blank" rel="nofollow ugc noopener noreferrer">https://appoutlet.github.io/</a></li><li id="0b62" class="mu mv il jy b jz nd kd ne kh nf kl ng kp nh kt mz na nb nc gm" data-selectable-paragraph=""><a class="au mc" href="https://www.appimagehub.com/" rel="noopener ugc nofollow" target="_blank">https://www.appimagehub.com/</a></li><li id="04f1" class="mu mv il jy b jz nd kd ne kh nf kl ng kp nh kt mz na nb nc gm" data-selectable-paragraph=""><a class="au mc" href="https://appimage.github.io/apps/" rel="noopener ugc nofollow" target="_blank">https://appimage.github.io/apps/</a></li><li id="c21f" class="mu mv il jy b jz nd kd ne kh nf kl ng kp nh kt mz na nb nc gm" data-selectable-paragraph=""><a href="https://github.com/appoutlet/appoutlet/" target="_blank" rel="nofollow ugc noopener noreferrer">https://github.com/appoutlet/appoutlet/</a></li></ul></div></div><footer><p class="content__last-updated">This article was updated on March 20, 2023</p><div class="content__tags-share"><ul class="content__tag"><li><a href="https://appoutlet.dev/tags/app-outlet/">AppOutlet</a></li><li><a href="https://appoutlet.dev/tags/article/">Blog</a></li></ul><aside class="content__share"><a href="https://www.facebook.com/sharer/sharer.php?u=https%3A%2F%2Fappoutlet.dev%2Fapp-outlet-a-universal-linux-app-store.html" class="js-share facebook" aria-label="Share with Facebook" rel="nofollow noopener noreferrer"><svg><use xlink:href="https://appoutlet.dev/assets/svg/svg-map.svg#facebook"/></svg> </a><a href="https://twitter.com/share?url=https%3A%2F%2Fappoutlet.dev%2Fapp-outlet-a-universal-linux-app-store.html&via=%40AppOutletTeam&text=App%20Outlet%3A%20A%20universal%20Linux%20app%20store" class="js-share twitter" aria-label="Share with Twitter" rel="nofollow noopener noreferrer"><svg><use xlink:href="https://appoutlet.dev/assets/svg/svg-map.svg#twitter"/></svg> </a><a href="https://pinterest.com/pin/create/button/?url=https%3A%2F%2Fappoutlet.dev%2Fapp-outlet-a-universal-linux-app-store.html&media=https%3A%2F%2Fappoutlet.dev%2Fmedia%2Fposts%2F3%2F1_-XfMtgzZS34QxPgYXTNLXw-2.png&description=App%20Outlet%3A%20A%20universal%20Linux%20app%20store" class="js-share pinterest" aria-label="Share with Pinterest" rel="nofollow noopener noreferrer"><svg><use xlink:href="https://appoutlet.dev/assets/svg/svg-map.svg#pinterest"/></svg> </a><a href="https://mix.com/add?url=https%3A%2F%2Fappoutlet.dev%2Fapp-outlet-a-universal-linux-app-store.html" class="js-share mix" aria-label="Share with Mix" rel="nofollow noopener noreferrer"><svg><use xlink:href="https://appoutlet.dev/assets/svg/svg-map.svg#mix"/></svg> </a><a href="https://www.linkedin.com/sharing/share-offsite/?url=https%3A%2F%2Fappoutlet.dev%2Fapp-outlet-a-universal-linux-app-store.html" class="js-share linkedin" aria-label="Share with LinkedIn" rel="nofollow noopener noreferrer"><svg><use xlink:href="https://appoutlet.dev/assets/svg/svg-map.svg#linkedin"/></svg> </a><a href="https://buffer.com/add?text=App%20Outlet%3A%20A%20universal%20Linux%20app%20store&url=https%3A%2F%2Fappoutlet.dev%2Fapp-outlet-a-universal-linux-app-store.html" class="js-share buffer" aria-label="Share with Buffer" rel="nofollow noopener noreferrer"><svg><use xlink:href="https://appoutlet.dev/assets/svg/svg-map.svg#buffer"/></svg> </a><a href="https://api.whatsapp.com/send?text=App%20Outlet%3A%20A%20universal%20Linux%20app%20store https%3A%2F%2Fappoutlet.dev%2Fapp-outlet-a-universal-linux-app-store.html" class="js-share whatsapp" aria-label="Share with WhatsApp" rel="nofollow noopener noreferrer"><svg class="icon" aria-hidden="true" focusable="false"><use xlink:href="https://appoutlet.dev/assets/svg/svg-map.svg#whatsapp"/></svg></a></aside></div><div class="content__bio bio"><div><h3 class="h6 bio__name"><a href="https://appoutlet.dev/authors/messiaslima/" class="invert" title="messiaslima">messiaslima</a></h3></div></div><nav class="content__nav"><div class="content__nav__prev"><a class="content__nav__link" href="https://appoutlet.dev/now-you-can-buy-me-a-coffee.html" rel="prev">Previous Post<h3 class="h6">☕️ Now you can buy me a coffee </h3></a></div><div class="content__nav__next"><a class="content__nav__link" href="https://appoutlet.dev/the-version-210-was-released.html" rel="prev">Next Post<h3 class="h6">The version 2.1.0 was released!</h3></a></div></nav></footer></div></article><div class="comments-area content__inner" id="comments"><div class="comments"><div class="comments-wrapper"><h2>Comments</h2><div id="disqus_thread"></div><noscript>Please enable JS to use the comments form.</noscript><script type="text/javascript">var disqus_config = function () {
this.page.url = 'https://appoutlet.dev/app-outlet-a-universal-linux-app-store.html';
this.page.identifier = '3';
this.language = 'en_GB';
};
var disqus_element_to_check = document.getElementById('disqus_thread');
if ('IntersectionObserver' in window) {
var iObserver = new IntersectionObserver(
(entries, observer) => {
entries.forEach(entry => {
if (entry.intersectionRatio >= 0.1) {
(function () {
var d = document, s = d.createElement('script');
s.src = 'https://'+('appoutlet').trim()+'.disqus.com/embed.js';
s.setAttribute('data-timestamp', +new Date());
(d.head || d.body).appendChild(s);
})();
observer.unobserve(entry.target);
}
});
},
{
threshold: [0, 0.2, 0.5, 1]
}
);
iObserver.observe(disqus_element_to_check);
} else {
(function () {
var d = document, s = d.createElement('script');
s.src = 'https://'+('appoutlet').trim()+'.disqus.com/embed.js';
s.setAttribute('data-timestamp', +new Date());
(d.head || d.body).appendChild(s);
})();
}</script><script type="text/javascript"></script></div></div></div></div><div class="content__related"><div class="wrapper"><h2 class="h5">Related posts</h2><div class="l-grid l-grid--4"><article class="c-card"><a href="https://appoutlet.dev/saying-goodbye-to-appoutlet-a-new-chapter-begins.html" class="c-card__image"><img src="https://appoutlet.dev/media/posts/12/fish.jpg" srcset="https://appoutlet.dev/media/posts/12/responsive/fish-xs.webp 300w, https://appoutlet.dev/media/posts/12/responsive/fish-sm.webp 480w, https://appoutlet.dev/media/posts/12/responsive/fish-md.webp 768w, https://appoutlet.dev/media/posts/12/responsive/fish-lg.webp 1200w" sizes="(min-width: 56.25em) 100vw, (min-width: 37.5em) 50vw, 100vw" loading="lazy" height="1024" width="1024" alt="Good bye and thank you for the fish"></a><div class="c-card__wrapper"><header class="c-card__header"><div class="c-card__tag"><a href="https://appoutlet.dev/tags/app-outlet/">AppOutlet</a></div><h3 class="c-card__title"><a href="https://appoutlet.dev/saying-goodbye-to-appoutlet-a-new-chapter-begins.html" class="invert">Saying Goodbye to AppOutlet: A New Chapter Begins</a></h3></header><footer class="c-card__meta"><time datetime="2023-10-25T11:55">October 25, 2023</time></footer></div></article></div></div></div></main><footer class="footer"><div class="footer__social"><a href="https://twitter.com/AppOutletTeam" aria-label="Twitter" class="twitter"><svg><use xlink:href="https://appoutlet.dev/assets/svg/svg-map.svg#twitter"/></svg></a></div><div class="footer__copyright">Made with ❤️</div></footer><script>window.publiiThemeMenuConfig = {
mobileMenuMode: 'sidebar',
animationSpeed: 300,
submenuWidth: 'auto',
doubleClickTime: 500,
mobileMenuExpandableSubmenus: true,
relatedContainerForOverlayMenuSelector: '.navbar',
};</script><script defer="defer" src="https://appoutlet.dev/assets/js/scripts.min.js?v=1b09dc64eb6086ddc9720890661ff038"></script><script>var images = document.querySelectorAll('img[loading]');
for (var i = 0; i < images.length; i++) {
if (images[i].complete) {
images[i].classList.add('is-loaded');
} else {
images[i].addEventListener('load', function () {
this.classList.add('is-loaded');
}, false);
}
}</script></body></html>