From mboxrd@z Thu Jan 1 00:00:00 1970 From: Danny Milosavljevic Subject: Re: Questions about packaging Date: Sat, 12 Oct 2019 12:41:16 +0200 Message-ID: <20191012124116.6f842667@scratchpost.org> References: <20191009095633.qlhnq2yvtp7dbrrf@rafflesia> <20191010024127.1da7c86d@scratchpost.org> <20191011074200.azkyt4mufjazbuj6@rafflesia> Mime-Version: 1.0 Content-Type: multipart/signed; boundary="Sig_/7GL1sqFpD5XTmh7kkJBzhd="; protocol="application/pgp-signature"; micalg=pgp-sha256 Return-path: Received: from eggs.gnu.org ([2001:470:142:3::10]:38141) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iJEqT-00048H-PM for guix-devel@gnu.org; Sat, 12 Oct 2019 06:41:58 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iJEqR-00057z-Ls for guix-devel@gnu.org; Sat, 12 Oct 2019 06:41:57 -0400 Received: from dd26836.kasserver.com ([85.13.145.193]:49932) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1iJEqR-00050e-73 for guix-devel@gnu.org; Sat, 12 Oct 2019 06:41:55 -0400 In-Reply-To: <20191011074200.azkyt4mufjazbuj6@rafflesia> List-Id: "Development of GNU Guix and the GNU System distribution." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guix-devel-bounces+gcggd-guix-devel=m.gmane.org@gnu.org Sender: "Guix-devel" To: Tanguy Le Carrour Cc: Guix --Sig_/7GL1sqFpD5XTmh7kkJBzhd= Content-Type: text/plain; charset=iso-8859-1 Content-Transfer-Encoding: quoted-printable Hi, On Fri, 11 Oct 2019 09:42:00 +0200 Tanguy Le Carrour wrote: > Le 10/10, Danny Milosavljevic a =E9crit : > > > 1) Updating a package > > > So I=A0would have to update python-cachecontrol from 0.11.6 to 0.12.5. > > > Should I create a python-cachecontrol-0.11.6 and fix all the packages > > > that depend on it? Only the one that would break? =20 > >=20 > > The latter. That's one of the things we do at Guix but I would not do = at work. =20 >=20 > OK. I'll do that! > My next question would be "when would someone create a versionned package= name?" If it's unavoidable. One of the reasons is that we don't want to increase = our maintenance and testing burden unduly and thus would not want 453 versions = of the same package available at the same time (chances are that some combinat= ion would not have been tested and/or not work). But there are professional engineering standards which allow you to specify= =20 which versions of thing A can go with which other versions of thing B. The most well-known type of that in software is semantic versioning. So it depends on what kind of versioning scheme the project/package in ques= tion uses. If it does use semantic versioning or similar then packages which ha= ve changes making it fundamentally incompatible with what came before will inc= rease their major version, basically making that an independent package (Debian f= or example has the major version in that sense in their package NAMES for libraries). For example Python 3 is a new major version that is fundamentally incompati= ble with Python 2 (cannot use the former as a drop-in replacement for the latte= r). Therefore, there are packages for both Python 2 and Python 3, and for many Python extensions, packages for a Python 2 and a Python 3 variant each= .=20 Eventually in some years, there will be no users (other packages) of Python= 2 anymore. Once that comes to pass we can drop Python 2. What we can't do is replace Python 2 by Python 3 in those user packages--it would break them. It is necessary that such a versioning "judgement" mechanism be in place for a package if you ever want to change your package in a backward-incompa= tible manner if it has any users. For a funny example where they didn't use such a mechanism, one HTTP header entry is called "Referer", including the typo, for all eternity. (it just wasn't worth changing it--the knock-on-effect would have been enormous) > Like for instance `openjdk`? Openjdk (icedtea) is bootstrapped using the preceding major version of each version. icedtea-8 is built by icedtea-7, which is built by icedtea-6, which is built by jamvm and GNU classpath, and so on, until we end up at a C compiler interpreted by GNU Mes. In this way we don't have binary blobs anywhere but in GNU Mes at the bottom of it. --Sig_/7GL1sqFpD5XTmh7kkJBzhd= Content-Type: application/pgp-signature Content-Description: OpenPGP digital signature -----BEGIN PGP SIGNATURE----- iQEzBAEBCAAdFiEEds7GsXJ0tGXALbPZ5xo1VCwwuqUFAl2hrcwACgkQ5xo1VCww uqU1GggAhKneuetYQjQduHfRXhg07fD+3HbnwR3+IIzHqZxGftrXee9j6MkX7jFj debd3fRfEJbjhXjdNir4HHKYZ0c0xly+N687BmX7HMi8VFdaON9/0mtxZOPQsyzj TzvJ0nmhWppApfo38lJOppgsz7xd3irAItjTow9mYuX12xO4x1+WKdJsAsjFOGPS jA01c8vr7S4JBn2xqhp3zvrdwbx/0H2pVBcfJOBA+8O07sGPgPo3qkXWhwXrmHL2 VPZKfteO6E1+gV6ZNA4v+sDvT/9ONdWVW2AL806nyOEbwBu4ImevKL/US8Z7BvH5 CWfjVwJKN/fXpnH/53zek+Yd46XsLw== =DrrN -----END PGP SIGNATURE----- --Sig_/7GL1sqFpD5XTmh7kkJBzhd=--