{"id":14809,"date":"2025-12-14T09:02:58","date_gmt":"2025-12-14T16:02:58","guid":{"rendered":"https:\/\/jasonsblog.ddns.net\/?p=14809"},"modified":"2025-12-14T09:11:23","modified_gmt":"2025-12-14T16:11:23","slug":"my-experience-in-the-debian-lts-and-elts-projects","status":"publish","type":"post","link":"https:\/\/jasonsblog.ddns.net\/index.php\/2025\/12\/14\/my-experience-in-the-debian-lts-and-elts-projects\/","title":{"rendered":"My Experience in the Debian LTS and ELTS Projects"},"content":{"rendered":"\n<p>(Headline blog post below) I&#8217;ve always been aware of the <a href=\"https:\/\/wiki.debian.org\/LTS\/Extended\" target=\"_blank\" rel=\"noreferrer noopener\">Debian LTS and ELTS project<\/a> run by <a href=\"https:\/\/www.freexian.com\/lts\/extended\/docs\/how-to-use-extended-lts-repositories\/\" target=\"_blank\" rel=\"noreferrer noopener\">Freexian<\/a>, but I&#8217;ve never used the ELTS support. But I had a compelling reason to investigate it as my old RasPBX install running on a Pi 3 Raspbian Buster install lost LTS support from Debian&#8217;s repositories. To run a newer version of Asterisk and FreePBX I&#8217;d need to switch to x86-64 hardware as they no longer support the Raspberry Pi directly. But since my RasPBX install isn&#8217;t open to the internet and only has outgoing trunk connections to my VOIP provider, I&#8217;m not that bothered by the old versions of Asterisk and FreePBX, which work great. So I changed to the Freexian repository and boy did a lot of updates come in. You do have to be aware that they primarily update security patches for the base operating system install unless you contract with them for extra packages, so any critical extra packages would need to be managed directly with compiling source code, but you can keep an old OS installation going and secure. So with that background, I thought this blog post below about a Debian developer that participated in the project was of interest. For fun I might see if I can get an old cheap <a href=\"https:\/\/docs.mrchromebox.tech\/\" target=\"_blank\" rel=\"noreferrer noopener\">Chromebox and convert it<\/a> to a new install of <a href=\"https:\/\/www.freepbx.org\/\" target=\"_blank\" rel=\"noreferrer noopener\">FreePBX<\/a>, but with Freexian ELTS support there is no rush.<\/p>\n\n\n\n<figure class=\"wp-block-image alignwide size-full\"><a href=\"https:\/\/wiki.debian.org\/LTS\/Extended\" target=\"_blank\" rel=\" noreferrer noopener\"><img loading=\"lazy\" decoding=\"async\" width=\"977\" height=\"269\" src=\"https:\/\/jasonsblog.ddns.net\/wp-content\/uploads\/2025\/12\/image-25.png\" alt=\"\" class=\"wp-image-14810\" srcset=\"https:\/\/jasonsblog.ddns.net\/wp-content\/uploads\/2025\/12\/image-25.png 977w, https:\/\/jasonsblog.ddns.net\/wp-content\/uploads\/2025\/12\/image-25-300x83.png 300w, https:\/\/jasonsblog.ddns.net\/wp-content\/uploads\/2025\/12\/image-25-768x211.png 768w\" sizes=\"auto, (max-width: 977px) 100vw, 977px\" \/><\/a><\/figure>\n\n\n\n<p><a href=\"https:\/\/ral-arturo.org\/2025\/04\/17\/lts.html\">https:\/\/ral-arturo.o<\/a><a href=\"https:\/\/ral-arturo.org\/2025\/04\/17\/lts.html\" target=\"_blank\" rel=\"noreferrer noopener\">r<\/a><a href=\"https:\/\/ral-arturo.org\/2025\/04\/17\/lts.html\">g\/2025\/04\/17\/lts.html<\/a><\/p>\n\n\n<div class=\"wp-block-ub-divider ub_divider ub-divider-orientation-horizontal\" id=\"ub_divider_1218cfc1-154b-4778-b77b-cd1369dd017c\"><div class=\"ub_divider_wrapper\" style=\"position: relative; margin-bottom: 2px; width: 100%; height: 2px; \" data-divider-alignment=\"center\"><div class=\"ub_divider_line\" style=\"border-top: 2px solid #ccc; margin-top: 2px; \"><\/div><\/div><\/div>\n\n\n<p><a href=\"https:\/\/ral-arturo.org\/\">ral-arturo.org<\/a> | Apr 17, 2025<\/p>\n\n\n\n<figure class=\"wp-block-image alignright is-resized\"><img decoding=\"async\" src=\"https:\/\/ral-arturo.org\/assets\/debian-logo.jpg\" alt=\"Debian\" style=\"width:346px;height:auto\"\/><\/figure>\n\n\n\n<p>Last year, I decided to start participating in the Debian LTS and ELTS projects. It was a great opportunity to engage in something new within the Debian community. I had been following these projects for many years, observing their evolution and how they gained traction both within the ecosystem and across the industry.<\/p>\n\n\n\n<p>I was curious to explore how contributors were working internally \u2014 especially how they managed security patching and remediation for older software. I\u2019ve always felt this was a particularly challenging area, and I was fortunate to experience it firsthand.<\/p>\n\n\n\n<p>As of April 2025, the <a href=\"https:\/\/wiki.debian.org\/LTS\">Debian LTS project<\/a> was primarily focused on providing security maintenance for Debian 11 <em>Bullseye<\/em>. Meanwhile, the <a href=\"https:\/\/wiki.debian.org\/LTS\/Extended\">Debian ELTS project<\/a> was targeting Debian 8 <em>Jessie<\/em>, Debian 9 <em>Stretch<\/em>, and Debian 10 <em>Buster<\/em>.<\/p>\n\n\n\n<p>During my time with the projects, I worked on a variety of packages and CVEs. Some of the most notable ones include:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/security-tracker.debian.org\/tracker\/source-package\/bluez\">bluez<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/security-tracker.debian.org\/tracker\/source-package\/nss\">nss<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/security-tracker.debian.org\/tracker\/source-package\/libmojolicious-perl\">libmojolicious-perl<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/security-tracker.debian.org\/tracker\/source-package\/uw-imap\">uw-imap<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/security-tracker.debian.org\/tracker\/source-package\/dnsmasq\">dnsmasq<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/security-tracker.debian.org\/tracker\/source-package\/firmware-nonfree\">firmware-nonfree<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/security-tracker.debian.org\/tracker\/source-package\/activemq\">activemq<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/security-tracker.debian.org\/tracker\/source-package\/frr\">frr<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/security-tracker.debian.org\/tracker\/source-package\/libmodbus\">libmodbus<\/a><\/li>\n<\/ul>\n\n\n\n<p>There are several technical highlights I\u2019d like to share \u2014 things I learned or had to apply while participating:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>CI\/CD pipelines<\/strong>: We used CI\/CD pipelines on <a href=\"https:\/\/salsa.debian.org\">salsa.debian.org<\/a> all the times to automate tasks such as building, linting, and testing packages. For any package I worked on that lacked CI\/CD integration, setting it up became my first step.<\/li>\n\n\n\n<li><strong>autopkgtest<\/strong>: There\u2019s a strong emphasis on <code>autopkgtest<\/code> as the mechanism for running functional tests and ensuring that security patches don\u2019t introduce regressions. I contributed by both extending existing test suites and writing new ones from scratch.<\/li>\n\n\n\n<li><strong>Toolchain complexity for older releases<\/strong>: Working with older Debian versions like <em>Jessie<\/em> brought some unique challenges. Getting a development environment up and running often meant troubleshooting issues with <code>sbuild<\/code> chroots, <code>qemu<\/code> images, and other tools that don\u2019t \u201cjust work\u201d like they tend to on Debian stable.<\/li>\n\n\n\n<li><strong>Community collaboration<\/strong>: The people involved in LTS and ELTS are extremely helpful and collaborative. Requests for help, code reviews, and general feedback were usually answered quickly.<\/li>\n\n\n\n<li><strong>Shared ownership<\/strong>: This collaborative culture also meant that contributors would regularly pick up work left by others or hand off their own tasks when needed. That mutual support made a big difference.<\/li>\n\n\n\n<li><strong>Backporting security fixes<\/strong>: This is probably the most intense \u2014and most rewarding\u2014 activity. It involves manually adapting patches to work on older codebases when upstream patches don\u2019t apply cleanly. This requires deep code understanding and thorough testing.<\/li>\n\n\n\n<li><strong>Upstream collaboration<\/strong>: Reaching out to upstream developers was a key part of my workflow. I often asked if they could provide patches for older versions or at least review my backports. Sometimes they were available, but most of the time, the responsibility remained on us.<\/li>\n\n\n\n<li><strong>Diverse tech stack<\/strong>: The work exposed me to a wide range of programming languages and frameworks\u2014Python, Java, C, Perl, and more. Unsurprisingly, some modern languages (like Go) are less prevalent in older releases like <em>Jessie<\/em>.<\/li>\n\n\n\n<li><strong>Security team interaction<\/strong>: I had frequent contact with the core Debian Security Team\u2014the folks responsible for security in Debian stable. This gave me a broader perspective on how Debian handles security holistically.<\/li>\n<\/ul>\n\n\n\n<p>In March 2025, I decided to scale back my involvement in the projects due to some changes in my personal life. Still, this experience has been one of the highlights of my career, and I would definitely recommend it to others.<\/p>\n\n\n\n<p>I\u2019m very grateful for the warm welcome I received from the LTS\/ELTS community, and I don\u2019t rule out the possibility of rejoining the LTS\/ELTS efforts in the future.<\/p>\n\n\n\n<p>The Debian LTS\/ELTS projects are currently coordinated by folks at <a href=\"https:\/\/www.freexian.com\/\">Freexian<\/a>. Many thanks to Freexian and <a href=\"https:\/\/www.freexian.com\/lts\/debian\/#sponsors\">sponsors<\/a> for providing this opportunity!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>(Headline blog post below) I&#8217;ve always been aware of the Debian LTS and ELTS project run by Freexian, but I&#8217;ve never used the ELTS support. But I had a compelling reason to investigate it as my old RasPBX install running on a Pi 3 Raspbian Buster install lost LTS support from Debian&#8217;s repositories. To run [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[6],"tags":[],"class_list":["post-14809","post","type-post","status-publish","format-standard","hentry","category-tech"],"blocksy_meta":[],"featured_image_src":null,"author_info":{"display_name":"Jason","author_link":"https:\/\/jasonsblog.ddns.net\/index.php\/author\/jturning\/"},"_links":{"self":[{"href":"https:\/\/jasonsblog.ddns.net\/index.php\/wp-json\/wp\/v2\/posts\/14809","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/jasonsblog.ddns.net\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/jasonsblog.ddns.net\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/jasonsblog.ddns.net\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/jasonsblog.ddns.net\/index.php\/wp-json\/wp\/v2\/comments?post=14809"}],"version-history":[{"count":6,"href":"https:\/\/jasonsblog.ddns.net\/index.php\/wp-json\/wp\/v2\/posts\/14809\/revisions"}],"predecessor-version":[{"id":14816,"href":"https:\/\/jasonsblog.ddns.net\/index.php\/wp-json\/wp\/v2\/posts\/14809\/revisions\/14816"}],"wp:attachment":[{"href":"https:\/\/jasonsblog.ddns.net\/index.php\/wp-json\/wp\/v2\/media?parent=14809"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/jasonsblog.ddns.net\/index.php\/wp-json\/wp\/v2\/categories?post=14809"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/jasonsblog.ddns.net\/index.php\/wp-json\/wp\/v2\/tags?post=14809"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}