{"id":63073,"date":"2022-03-21T09:01:17","date_gmt":"2022-03-21T09:01:17","guid":{"rendered":"https:\/\/www.cryptocabaret.com\/?p=63073"},"modified":"2022-03-21T09:01:17","modified_gmt":"2022-03-21T09:01:17","slug":"upstream-first-or-the-path-lifting-property-of-a-covering-space","status":"publish","type":"post","link":"https:\/\/www.cryptocabaret.com\/?p=63073","title":{"rendered":"Upstream first or the path lifting property of a covering space"},"content":{"rendered":"<p><span class=\"field field--name-title field--type-string field--label-hidden\">Upstream first or the path lifting property of a covering space<\/span><br \/>\n<span class=\"field field--name-uid field--type-entity-reference field--label-hidden\"><a title=\"View user profile.\" href=\"https:\/\/opensource.com\/users\/bookwar\" class=\"username\">Aleksandra Fedorova<\/a><\/span><br \/>\n<span class=\"field field--name-created field--type-created field--label-hidden\">Mon, 03\/21\/2022 &#8211; 03:00<\/span><\/p>\n<div data-drupal-selector=\"rate-node-69681\" class=\"rate-widget-thumbs-up\">\n<div class=\"rate-thumbs-up-btn-up rate-thumbs-up-btn-up vote-pending\">Up<\/div>\n<div class=\"rate-score\"><a href=\"https:\/\/opensource.com\/user\/register?absolute=1\">Register<\/a> or <a href=\"https:\/\/opensource.com\/user\/login?current=\/rss.xml&amp;absolute=1\">Login<\/a> to like.<\/div>\n<\/div>\n<div class=\"clearfix text-formatted field field--name-body field--type-text-with-summary field--label-hidden field__item\">\n<p>Don&#8217;t be scared; when you reach the end of this article, you will understand its title.<\/p>\n<h2>Understand spaces<\/h2>\n<p><em>Geometry and Topology<\/em> is an area of mathematics that deals with spaces, usually topological, and various additional structures you can define on them.<\/p>\n<p>How do you turn a set of elements into a list? &#8220;You use the <strong>list()<\/strong> function!&#8221; say my Pythonic friends. But essentially, you add the idea of an <a href=\"https:\/\/en.wikipedia.org\/wiki\/Total_order\" target=\"_blank\" rel=\"noopener\">order<\/a>. You take the set and explain which point in that set is <em>next<\/em>. Similarly, <em>spaces<\/em> are sets of elements with these additional concepts:<\/p>\n<ul>\n<li>For a topological space, add the idea of a <a href=\"https:\/\/en.wikipedia.org\/wiki\/Topological_space\" target=\"_blank\" rel=\"noopener\">neighborhood<\/a>. You explain how to tell that two points are <em>close<\/em>.<\/li>\n<li>For a metric space, add the idea of a <a href=\"https:\/\/en.wikipedia.org\/wiki\/Metric_space\" target=\"_blank\" rel=\"noopener\">distance<\/a>. You explain how to measure the distance between any two points of the set.<\/li>\n<\/ul>\n<p>There are many types of spaces in mathematics, from a well-known Euclidean space to a less known but not less common differentiable manifold all the way to exotic structures invented moments ago. And the research in this area circles around finding relationships between different structures and determining whether they define the same basic object.<\/p>\n<p>For example, it is quite easy to prove that a metric space is always a topological space. But it is a bit harder to show that there are topological spaces that can not be expressed in terms of distance.<\/p>\n<p>However, for the casual weekend topologists out there, I recommend two-dimensional surfaces, for example, the good old sphere, torus, or a <a href=\"https:\/\/www.youtube.com\/watch?v=XlQOipIVFPk\" target=\"_blank\" rel=\"noopener\">Mobius strip<\/a>. Not as square and flat as the Euclidean plane, but still manageable. And the classification theory of two-dimensional compact manifolds is a lot of fun.<\/p>\n<h2>Covering space<\/h2>\n<p>Take a spring coil and look at it from the top. You will see a circle.<\/p>\n<p>\u00a0<\/p>\n<article class=\"align-center media media--type-image media--view-mode-full\">\n<div class=\"field field--name-field-media-image field--type-image field--label-hidden field__item\">  <img decoding=\"async\" src=\"https:\/\/www.cryptocabaret.com\/wp-content\/uploads\/2022\/03\/spring.png\" width=\"245\" height=\"245\" alt=\"spring\" loading=\"lazy\"><\/div>\n<\/article>\n<p>Expressing this fact in mathematical language, you would say that the coil itself is the <em>total space<\/em>. In this case, on its own, it is just a one-dimensional line. It is made up of various components:<\/p>\n<ul>\n<li>The circle you see is a <em>base space<\/em>.<\/li>\n<li>The line of sight defines the <em>covering map<\/em>.<\/li>\n<li>If you had a laser sight, the points where the laser would cut the coil would be called a <em>fiber<\/em>.<\/li>\n<\/ul>\n<div class=\"embedded-resource-list callout-float-right\">\n<div class=\"field field--name-title field--type-string field--label-hidden field__item\">More great content<\/div>\n<div class=\"field field--name-links field--type-link field--label-hidden field__items\">\n<div class=\"field__item\"><a href=\"https:\/\/www.redhat.com\/en\/services\/training\/rh024-red-hat-linux-technical-overview?intcmp=7016000000127cYAAQ\">Free online course: RHEL technical overview<\/a><\/div>\n<div class=\"field__item\"><a href=\"https:\/\/developers.redhat.com\/cheat-sheets\/advanced-linux-commands\/?intcmp=7016000000127cYAAQ\">Learn advanced Linux commands<\/a><\/div>\n<div class=\"field__item\"><a href=\"https:\/\/opensource.com\/downloads\/cheat-sheets?intcmp=7016000000127cYAAQ\">Download cheat sheets<\/a><\/div>\n<div class=\"field__item\"><a href=\"https:\/\/opensource.com\/tags\/linux?intcmp=7016000000127cYAAQ\">Find an open source alternative<\/a><\/div>\n<div class=\"field__item\"><a href=\"https:\/\/opensource.com\/resources?intcmp=7016000000127cYAAQ\">Explore open source resources<\/a><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<p>And altogether, total space, base space, and covering map define the <em>covering space<\/em> or a covering of a circle by a line with discrete fiber.<\/p>\n<p>Homework: <em>Can a circle cover a line?<\/em><\/p>\n<p>The critical quality of the covering space, which makes it different from just any projection, is that the neighborhood of each fiber point in the total space works very much the same as the neighborhood of its projection in the base space. This allows you to reason about specific properties of a total space using the pre-existing knowledge of a base space and vice versa.<\/p>\n<p>And mathematicians just love to move between spaces in this way. Once you hit a certain roadblock with the space you are currently researching, you craft a clever mapping of the space onto familiar grounds. You prove something there and then transfer the result back into the original space, where it can lead to new and exciting breakthroughs.<\/p>\n<h2>Path lifting property<\/h2>\n<p><em>What does it all have to do with upstream first?<\/em>, you may ask. (We are yet in the early stages of developing a proper mathematical apparatus for this theory. Feel free to add your suggestions and corrections in the comments section below.)<\/p>\n<p>Look at how code is delivered to an enterprise-level Linux distribution, for example, <a href=\"https:\/\/www.centos.org\/centos-stream\/\" target=\"_blank\" rel=\"noopener\">CentOS Stream<\/a>. There is an open source project and community which develops a specific version of a piece of software, for example, Firefox. We call such a project <em>upstream<\/em>. Once the upstream project releases a Firefox version, it gets packaged to Fedora. And then someday, the new CentOS Stream version is bootstrapped using the content of the Fedora package, which contains a specific version of Firefox from the upstream project.<\/p>\n<p>When the upstream project releases a critical update of Firefox, the update is packaged and released in Fedora. But it is also packaged and released via CentOS Stream.<\/p>\n<h3>The FOSS space<\/h3>\n<p>Consider the set of all patches to all upstream projects, Fedora, and CentOS Stream. Obviously*, this is a topological space, where the Git history defines the neighborhood of a patch.<\/p>\n<p>(*) Sometimes mathematicians use the word <em>obviously<\/em> to hide the fact that they can not really explain the concept in detail.<\/p>\n<p>This space is not easy to grasp, and while you can connect some of the dots with a path, its global properties are yet to be explored.<\/p>\n<h3>The covering map<\/h3>\n<p>Take any commit in the FOSS space and map it to a commit in CentOS Stream, which implements the same functionality or fixes the same issue. For a regular commit in CentOS Stream, the map is trivial. The map points to its downstream version for any upstream change or a change in Fedora. Therefore, FOSS space can be represented as a covering space with CentOS Stream as its base.<\/p>\n<h3>Lifting a path<\/h3>\n<p>The path lifting property tells you that for every path in the base (a change in CentOS Stream), there should be a lifted path in the layers (a change in Fedora and in the upstream project, which maps onto it). In other words, it represents the same bugfix.<\/p>\n<p>And the <a href=\"https:\/\/www.redhat.com\/en\/about\/open-source\/participation-guidelines\" target=\"_blank\" rel=\"noopener\">upstream first principle<\/a> tells you to build that path.<\/p>\n<h2>Wrap up<\/h2>\n<p>Applying mathematical concepts to FOSS deployments provides new and interesting ways of understanding the interrelated nature of open source software. I hope this has been an insightful and interesting foray into space and the upstream first principle.<\/p>\n<\/div>\n<div class=\"clearfix text-formatted field field--name-field-article-subhead field--type-text-long field--label-hidden field__item\">\n<p>Applying mathematical concepts to FOSS deployments provides new and interesting ways of understanding the interrelated nature of open source software.<\/p>\n<\/div>\n<div class=\"field field--name-field-lead-image field--type-entity-reference field--label-hidden field__item\">\n<article class=\"media media--type-image media--view-mode-caption\">\n<div class=\"field field--name-field-media-image field--type-image field--label-hidden field__item\">  <img decoding=\"async\" src=\"https:\/\/www.cryptocabaret.com\/wp-content\/uploads\/2022\/03\/edu_math_formulas.png\" width=\"520\" height=\"292\" alt=\"Math formulas in green writing\" title=\"Math formulas in green writing\" loading=\"lazy\"><\/div>\n<div class=\"field field--name-field-caption field--type-text-long field--label-hidden caption field__item\"><span class=\"caption__byline\">Image by: <\/span><\/p>\n<p>Jo\u00e3o Trindade. Modified by Jason Baker. CC BY-SA 2.0.<\/p>\n<\/div>\n<\/article>\n<\/div>\n<div class=\"field field--name-field-tags field--type-entity-reference field--label-hidden field__items\">\n<div class=\"field__item\"><a href=\"https:\/\/opensource.com\/tags\/science\" hreflang=\"en\">Science<\/a><\/div>\n<\/p><\/div>\n<div class=\"hidden field field--name-field-listicle-title field--type-string field--label-hidden field__item\">What to read next<\/div>\n<div class=\"field field--name-field-default-license field--type-list-string field--label-hidden field__item\"><a rel=\"license\" href=\"http:\/\/creativecommons.org\/licenses\/by-sa\/4.0\/\"><br \/>\n        <img decoding=\"async\" alt=\"Creative Commons License\" src=\"https:\/\/www.cryptocabaret.com\/wp-content\/uploads\/2022\/03\/cc-by-sa-4-4.png\" title=\"This work is licensed under a Creative Commons Attribution-Share Alike 4.0 International License.\"><\/a>This work is licensed under a Creative Commons Attribution-Share Alike 4.0 International License.<\/div>\n<section class=\"field field--name-field-comments field--type-comment field--label-hidden comment-wrapper\">\n<div class=\"comments__count\">\n<div class=\"login\"><a href=\"https:\/\/opensource.com\/user\/register?absolute=1\">Register<\/a> or <a href=\"https:\/\/opensource.com\/user\/login?current=\/rss.xml&amp;absolute=1\">Login<\/a> to post a comment.<\/div>\n<\/p><\/div>\n<\/section>\n<p class=\"wpematico_credit\"><small>Powered by <a href=\"http:\/\/www.wpematico.com\" target=\"_blank\" rel=\"noopener\">WPeMatico<\/a><\/small><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Upstream first or the path lifting property of a covering space Aleksandra Fedorova Mon, 03\/21\/2022 &#8211; 03:00 Up Register or Login to like. Don&#8217;t be scared; when you reach the end of this article, you will understand its title. Understand spaces Geometry and Topology is an area of mathematics that deals with spaces, usually topological, [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":63074,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[307],"tags":[],"class_list":["post-63073","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-open-source"],"_links":{"self":[{"href":"https:\/\/www.cryptocabaret.com\/index.php?rest_route=\/wp\/v2\/posts\/63073","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.cryptocabaret.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.cryptocabaret.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.cryptocabaret.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.cryptocabaret.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=63073"}],"version-history":[{"count":0,"href":"https:\/\/www.cryptocabaret.com\/index.php?rest_route=\/wp\/v2\/posts\/63073\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.cryptocabaret.com\/index.php?rest_route=\/wp\/v2\/media\/63074"}],"wp:attachment":[{"href":"https:\/\/www.cryptocabaret.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=63073"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.cryptocabaret.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=63073"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.cryptocabaret.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=63073"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}