<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Ayoyimika]]></title><description><![CDATA[Ayoyimika]]></description><link>https://ayoyimika.hashnode.dev</link><generator>RSS for Node</generator><lastBuildDate>Sun, 12 Jul 2026 17:45:04 GMT</lastBuildDate><atom:link href="https://ayoyimika.hashnode.dev/rss.xml" rel="self" type="application/rss+xml"/><language><![CDATA[en]]></language><ttl>60</ttl><item><title><![CDATA[Progress Report!! Modifying Expectations... 📝]]></title><description><![CDATA[Wait!  Just like yesterday when I was accepted as an Outreachy intern and the first half of the internship is finished😲. How time flies when you are having a good time🎃
As part of the requirements for the final application during the contribution p...]]></description><link>https://ayoyimika.hashnode.dev/progress-report-modifying-expectations</link><guid isPermaLink="true">https://ayoyimika.hashnode.dev/progress-report-modifying-expectations</guid><category><![CDATA[coding]]></category><category><![CDATA[debugging]]></category><category><![CDATA[Linux]]></category><category><![CDATA[linux for beginners]]></category><category><![CDATA[internships]]></category><dc:creator><![CDATA[Ayoyimika Ajibade]]></dc:creator><pubDate>Mon, 07 Mar 2022 13:09:15 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/unsplash/_MMdxl-jUHo/upload/v1646644487672/toTDKMMZk.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Wait!  Just like yesterday when I was accepted as an Outreachy intern and the first half of the internship is finished😲. How time flies when you are having a good time🎃</p>
<p>As part of the requirements for the final application during the contribution period for the Outreachy internship, I needed to provide a timeline to achieve our goal on my outreachy task which is <a target="_blank" href="https://ayoyimika.hashnode.dev/nodejs-16-and-webpack-5-transition-in-debian">transitioning of dependencies in node16 and webpack5</a>. Having consulted my mentors who implied that the packages depending on webpack and nodejs combined are so numerous that its impossible to finish all within a space of three months but we have steps to guide us through the entire process to achieve most of our goals which are ➡</p>
<ul>
<li>Find a list of packages(failing rebuild and testing with autopkgtest, of reverse dependencies of webpack and nodejs) to fix.</li>
<li>See if new upstream versions are available that support nodejs16 and webpack5 respectively.</li>
<li>See if the new upstream version works and doesn't fail while rebuilding or testing with autopkgtest.</li>
<li>Report bug 🐞 in Debian if any fails to rebuild or test with autopkgtest.</li>
<li>Forward bugs upstream if needed.</li>
<li>Fix packages and forward patches.</li>
</ul>
<p>As of this writing(though a little late🕔) we have successfully rebuilt all reverse dependencies of webpack5 and split them equally each for I and my co-intern for all Javascript modules as ruby💎 packages also depend on webpack which is a total of 44 packages. Filed a bug report on Debian bug tracking system for failing packages, also the original maintainer or uploader of the package to the Debian archive mostly Debian developers also get a mail in references to the package bug 🐞report. Sometimes the uploader who also receives the bug report decides to help out to fix the package and forward the patch upstream if need be. We have also filed an issue to upstream repo mostly via <a target="_blank" href="https://github.com/unindented/stats-webpack-plugin/issues/40">github</a>👆 where some respond and create <a target="_blank" href="https://github.com/digitalbazaar/forge/pull/945/commits/4cf4596231891a6c449a813364faa15aaaf17aed">PR</a> to solve those errors and others are plain aversive to the whole idea. PR from the upstream developer is cherry-picked and a patch is created by us to incorporate the code into our own working repository. some package upstream maintainer rejects such issues or doesn't respond, we take it upon ourselves to fix the package. The total number of packages that are successfully updated and ready to be merged is 10 packages while 12 packages remain on my own end to be updated.</p>
<p>One of the most challenging packages to update so far was <a target="_blank" href="https://github.com/facebook/prop-types">prop-type</a> as its runs its large test suite using <a target="_blank" href="https://github.com/facebook/jest">jest</a> of a lower version <em>19.0.2</em> compared to that of Debian OS which is version <em>27.5.1</em> updating and migrating its API's and methods to use the Debian updated version is so challenging after several googling, testing out the solution from StackOverflow, trials, and errors, reading documentations we eventually made progress with the help of my mentor, co-intern and the whole community member. It's so crazy that when I got it working I said to myself. <em>phew😅😌 it's not rocket science why can I figure it out sooner than expected🤷‍♀️</em></p>
<p>I initially proposed that I would be halfway done with the project by now, I guess the reason am not able to achieve some of our goals which are finishing up with the packages for webpack and moving to transition some of the nodejs packages at all is DEBUGGING. Yes DEBUGGING! where you never can predict what the solution is. is the problem coming from Debian? or dependencies of the package you are working on, upstream bug, or dependencies of dependencies of the package you are working on, so many questions to answer. You can't easily find a solution to a bug as it takes time to try out so many guesses more of an educated guess, or even try out all the solutions from stack overflow and still no viable progress.  Obviously, you cannot really know about something to set up a plan for unless you get right into it.</p>
<p>One way of doing this, if I have to start again is the truly understand how the javascript package work under the hood, how its handles different interaction between packages, some of its dos and don't of transpiling, bundling, testing, e.t.c</p>
<p>I guess my unrealistic goals need to be modified because some drawback that was not envisaged popped up and I underestimated the complexity of the tasks, which will be reducing the number of packages to update in transitioning of nodejs from what I planned😢</p>
<p>My major focus for the second half of the internship is to fix bugs and errors I discover, file bug reports for future bugs to seek help from co-maintainer or developers, file issues upstream and close those whose bugs are already resolved for the remaining 12 packages, and ultimately successfully uploading all reverse dependencies. Also diving into transitioning of nodejs16.</p>
<p>Thanks for stopping by🙏</p>
]]></content:encoded></item><item><title><![CDATA[Nodejs 16 and Webpack 5 transition in Debian🍥]]></title><description><![CDATA[What is  Debian 🍥 ?
Debian is also known as Debian GNU/Linux  is a free open-source operating system (OS) based currently on the  Linux  kernel or the  FreeBSD  kernel, developed by the community-supported Debian Project; although efforts are in pla...]]></description><link>https://ayoyimika.hashnode.dev/nodejs-16-and-webpack-5-transition-in-debian</link><guid isPermaLink="true">https://ayoyimika.hashnode.dev/nodejs-16-and-webpack-5-transition-in-debian</guid><category><![CDATA[Node.js]]></category><category><![CDATA[JavaScript]]></category><category><![CDATA[Linux]]></category><category><![CDATA[Open Source]]></category><category><![CDATA[operating system]]></category><dc:creator><![CDATA[Ayoyimika Ajibade]]></dc:creator><pubDate>Sat, 08 Jan 2022 03:30:06 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/unsplash/NLSXFjl_nhc/upload/v1641574941375/tT10U7nte.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h2 id="heading-what-is-debianhttpswwwdebianorgintroabout">What is  <a target="_blank" href="https://www.debian.org/intro/about">Debian</a> 🍥 ?</h2>
<p>Debian is also known as <strong>Debian GNU/Linux </strong> is a free open-source operating system (OS) based currently on the  <a target="_blank" href="https://www.kernel.org/">Linux </a> kernel or the  <a target="_blank" href="https://www.freebsd.org/">FreeBSD </a> kernel, developed by the community-supported Debian Project; although efforts are in place to provide Debian for other kernels, primarily for the <a target="_blank" href="https://www.gnu.org/software/hurd/hurd.html">Hurd</a>.</p>
<h3 id="heading-fun-fact-about-debian">Fun fact about Debian 😁💃💃</h3>
<ul>
<li><p>Debian was the first Linux distribution to include a package management system for easy installation and removal of software. It was also the first Linux distribution that could be upgraded without requiring reinstallation.</p>
</li>
<li><p>To protect your system against “Trojan horses” and other malevolent software, Debian's servers verify that uploaded packages come from their registered Debian maintainers.</p>
</li>
<li><p>Debian comes with over 59000 packages; <em>as of this writing</em> (precompiled software that is bundled up in a nice format for easy installation on your machine), a package manager (APT), and other utilities that make it possible to manage thousands of  <a target="_blank" href="https://www.debian.org/distrib/packages">packages </a> on thousands of computers as easily as installing a single application. All of it is FREE!</p>
</li>
<li><p>Debian is also the basis for many other distributions, most notably Ubuntu</p>
</li>
</ul>
<h2 id="heading-what-is-webpackhttpswebpackjsorgconcepts">What is  <a target="_blank" href="https://webpack.js.org/concepts/">Webpack</a> ?</h2>
<p>Webpack is a static module bundler for modern JavaScript applications. When webpack processes your application, it internally builds a  <a target="_blank" href="https://webpack.js.org/concepts/dependency-graph/">dependency graph</a>  from one or more entry points and then combines every module your project needs into one or more bundles, which are static assets to serve your content from</p>
<h2 id="heading-what-is-nodejshttpsnodejsorgenabout">What is  <a target="_blank" href="https://nodejs.org/en/about/">nodejs</a> ?</h2>
<p>Node.js is an open-source, cross-platform built on Chrome's JavaScript runtime for easily building fast and scalable network applications and also developing server-side applications, Here javascript code is no longer limited to the traditional method of running on the web browser</p>
<h2 id="heading-what-does-transitioning-mean-in-debian">What does Transitioning mean in Debian?</h2>
<p>Transitioning is a concept in Debian about maintaining only one version of a library like webpack, nodejs. There is a bottleneck as other libraries and applications may not support the version we have in Debian. So we have to port that software which For example, mini-css-extract-plugin, mermaid and so many packages useing webpack. In buster we had webpack4, and in bullseye we want to update it to webpack5. mini-css-extract-plugin already supports webpack5, but others like mermaid don't support it yet. So either we wait till mermaid support webpack5(the wait maybe forever😫) or update the mermaid webpack version to webpack5 (that's the beauty of open-source software😁).
Check out this  <a target="_blank" href="https://wiki.debian.org/Teams/Ruby/Packaging/TransitionsPrimer">chat</a>  between my mentor and a community member on transitioning of rails6</p>
<h2 id="heading-getting-started-with-creating-or-updating-packages-in-debian">Getting Started with Creating or Updating packages in Debian</h2>
<p>To be able to create or maintain packages suitable for uploading to Debian you must be in a sid/unstable environment or distribution. See recommended instructions on how to setup Debian Sid via this  <a target="_blank" href="https://wiki.debian.org/Packaging/Pre-Requisites">link</a></p>
<p>See  <a target="_blank" href="https://wiki.debian.org/Javascript/Nodejs/Npm2Deb">link</a> on how to debianize a new package</p>
<p>See  <a target="_blank" href="https://wiki.debian.org/UpdatingaPackagetoNewUpstreamVersion#TL.3BDR">link</a> for brief steps on how to update a package to its new upstream version. For more detailed content on the whys and hows of updating a package to its new upstream version visit  <a target="_blank" href="https://wiki.abrahamraji.in/updating-a-debian-package.html">here</a></p>
<p>Note💡 In updating to the new upstream version we have to watch out for breaking changes caused by both minor updates or major updates.  As per https://semver.org major updates(e.g If the current version is 2.3.4, then 3.0 is a major update) of libraries with versions greater than 1.0 and minor updates(e.g If the current version is 0.10 then 0.11 is a minor update) of libraries with versions less than 1.0 can have breaking changes</p>
<h2 id="heading-the-overall-flow-of-webpack5-and-nodejs16-transitioning-in-debian">The overall flow of webpack5 and nodejs16 transitioning in Debian</h2>
<p>After grasping the fundamental process and flow on how to update a package, you are well on your way to transitioning🚀🚀.  Transitioning in webpack or nodejs involves building and testing of dependencies or packages that depend on webpack or nodejs respectively called <em>reverse-dependencies</em>, these reverse dependencies are tested and built with the new updated version usually uploaded to the experimental distribution if reverse dependencies are built and tested successfully both reverse dependencies and dependency in this case nodejs or webpack are then uploaded to the unstable/sid distribution for further processing</p>
<h3 id="heading-the-major-guidelines-to-follow-while-transitioning-are">The major guidelines to follow while transitioning are</h3>
<ul>
<li><p>Find a list of reverse dependencies to fix</p>
</li>
<li><p>See if new upstream versions of reverse dependencies are available that supports the transitioning version</p>
</li>
<li><p>See if new upstream of reverse dependencies are available that supports the transitioning version works</p>
</li>
<li><p>Report bugs found while rebuilding and testing reverse dependencies in Debian</p>
</li>
<li><p>Forward bugs found while rebuilding and testing reverse dependencies to upstream</p>
</li>
<li><p>Fix or update packages and forward patches upstream</p>
</li>
</ul>
<p>After a successful transitioning phase users of the Debian OS have access to the latest and also oldest installation of these packages via <em>apt</em> based on their preferences, which implies having the benefit of more features, bug fixes, updated security patches from those packages, all these are possible due to the community of amazing people💗🔥</p>
]]></content:encoded></item></channel></rss>