From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from atuin.qyliss.net (localhost [IPv6:::1]) by atuin.qyliss.net (Postfix) with ESMTP id DA4BA2D8E; Mon, 13 Jul 2026 14:44:21 +0000 (UTC) Received: by atuin.qyliss.net (Postfix, from userid 993) id AA2AA2D85; Mon, 13 Jul 2026 14:44:19 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 4.0.1 (2024-03-26) on atuin.qyliss.net X-Spam-Level: X-Spam-Status: No, score=-0.1 required=3.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,DMARC_PASS,FREEMAIL_FROM,RCVD_IN_DNSWL_NONE, SPF_HELO_NONE autolearn=unavailable autolearn_force=no version=4.0.1 Received: from mail-yx1-xb129.google.com (mail-yx1-xb129.google.com [IPv6:2607:f8b0:4864:20::b129]) by atuin.qyliss.net (Postfix) with ESMTPS id A2BDF2D84 for ; Mon, 13 Jul 2026 14:44:18 +0000 (UTC) Received: by mail-yx1-xb129.google.com with SMTP id 956f58d0204a3-664cdeab266so4871643d50.3 for ; Mon, 13 Jul 2026 07:44:18 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1783953857; x=1784558657; darn=spectrum-os.org; h=content-type:in-reply-to:autocrypt:from:content-language:references :cc:to:subject:user-agent:mime-version:date:message-id:from:to:cc :subject:date:message-id:reply-to:content-type; bh=8LAohToomgA04M81YloQ2k2ffY6YmRK1oPXekA2X8Jg=; b=bi2wb75IhjwAqcVaX39IwD9fo8NDNLK8CYs1mBUoXRRN/S6+gkiL+HrFtc2n0aaobU 5L8Mut2wgyQ9zdUlV6a92MSuNhZWjnen/PD/bCFSGXCeoYQUCgudBRZJJU/J4jAGW0Zx IlzrBJBv3JYcwHbisS+QtiZSZ91kUufeKXUHSUK33szQgAXstgs8MnUFH75gxAaUwlGo FSBB9sru7CTrrdIDIBnMbabI4izR2YaOU6NH4h6ZpMT0My/doZPLAQUzgt4L5z3pBYJ7 1D0hd8VGzpD+XPvu5pIp0X6H18wcMrscfdoDsqsM1ONkRT3rCQbVrBsyRghgMfUXJ+yd FKag== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1783953857; x=1784558657; h=content-type:in-reply-to:autocrypt:from:content-language:references :cc:to:subject:user-agent:mime-version:date:message-id:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :content-type; bh=8LAohToomgA04M81YloQ2k2ffY6YmRK1oPXekA2X8Jg=; b=YjBuxBZbGZcPJOfcL/pcCflQdueMSoWj/UMQ2Zxkt6JRlbxzQHkIC31AbLXmk6TARi mY3AZZr9Q+QRGW7p64brRvwTl/M8LfbiWh1ZeXZijiOLJEVM7ur2mjCW0MHIE/8KGib1 Rh3Nf9T7DpEJIr2cfjiQmPCxXx90OfB0X8MZDfwEvgQjelybKz4lCSGzxlkk1rPHapcs KGPnXllzkb3zXe0gce0Oe1GkGKiSOPmCgu//DaCs6ACaZgVs4jhEJumPcsdLrrMtXM6X 3jWEYv938DpWtYbCVvmSb3P1FOJB54pSn/FEgY6TgJmm3x+hefc/Vi8y/uwq6/KbUNsh 8iTw== X-Gm-Message-State: AOJu0Yy04BaQJLhznMlBJNJJ5pBTf6eCYaAxDtqnQ6MWYcxTvvD+nAMI jwHvK2Zv219HcwEIzOezxdwBv4m3qZcrhu/sbZr3/11YebDreozNcxFc X-Gm-Gg: AfdE7cn915N7HU/6MSxCGsERzv98E++biZFZxTQsASp6ScP0o38VbQt5/hwJYdEuta0 bYwm+OjX2XlC+qJhvjMk0luqq04fLOqrUYIVUy7xrAVyUhkRCLB00/vPUljOW6WOkgG05HO2m9F Y7QfvtMvQoVBk1vsK4qI+LatBfJhFzXZxm/I1QZHndz74mVsjHsDLOEckn2UK/NCHCHiAPeQDfi 83NE/uWL0jjz9+R7vpIhf74RuNAJAC6ut27/9YJ0tTPkp+MsBlwAfrlPhv0EAV/k5moDu9FW7oH 1pY7FIRqBYhqwJFTIbcKUgiGkb1xoSxwUk0gtfutB6g8XjhkaX3IU+PSN+O4O8qiqVvjDQFlyNL QCqSITAKe3JAMPE50Peu69i33z3pNNyLIg4q7KowoyFjLjq2JmJRFBv5IafEVmTm4RT5b08ElNd 5Qpe9fZlzhp4p1OIw= X-Received: by 2002:a05:690e:4890:20b0:667:8e35:ee24 with SMTP id 956f58d0204a3-667d7b26953mr4824439d50.23.1783953854549; Mon, 13 Jul 2026 07:44:14 -0700 (PDT) Received: from [10.138.10.6] ([185.98.168.14]) by smtp.gmail.com with ESMTPSA id 956f58d0204a3-667f46c61d0sm2254721d50.14.2026.07.13.07.44.13 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Mon, 13 Jul 2026 07:44:13 -0700 (PDT) Message-ID: Date: Mon, 13 Jul 2026 10:44:08 -0400 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: Duplicated VM start and shutdown code To: Alyssa Ross References: <87qzlb9cz4.fsf@alyssa.is> <87h5m31cuc.fsf@alyssa.is> Content-Language: en-US From: Demi Marie Obenour Autocrypt: addr=demiobenour@gmail.com; keydata= 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 +MYSfkEjBz0E8CLOcAw7JIwAaeBT In-Reply-To: <87h5m31cuc.fsf@alyssa.is> Content-Type: multipart/signed; micalg=pgp-sha256; protocol="application/pgp-signature"; boundary="------------sbAgZC2SMMZdwqMzutNTBLtj" Message-ID-Hash: GAHDITLDMBYCBX7Z5YLWW3GVXIRQQX7H X-Message-ID-Hash: GAHDITLDMBYCBX7Z5YLWW3GVXIRQQX7H X-MailFrom: demiobenour@gmail.com X-Mailman-Rule-Hits: member-moderation X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; loop; banned-address; header-match-devel.spectrum-os.org-0; header-match-devel.spectrum-os.org-1; header-match-devel.spectrum-os.org-2; header-match-devel.spectrum-os.org-3; header-match-devel.spectrum-os.org-4; emergency CC: Spectrum OS Development X-Mailman-Version: 3.3.10 Precedence: list List-Id: Patches and low-level development discussion Archived-At: List-Archive: List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: This is an OpenPGP/MIME signed message (RFC 4880 and 3156) --------------sbAgZC2SMMZdwqMzutNTBLtj Content-Type: multipart/mixed; boundary="------------qcZLG6NDeTa3GIRhLvFl46VH"; protected-headers="v1"; hp="clear" Message-ID: Date: Mon, 13 Jul 2026 10:44:08 -0400 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: Duplicated VM start and shutdown code To: Alyssa Ross Cc: Spectrum OS Development References: <87qzlb9cz4.fsf@alyssa.is> <87h5m31cuc.fsf@alyssa.is> Content-Language: en-US From: Demi Marie Obenour Autocrypt: addr=demiobenour@gmail.com; keydata= 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 +MYSfkEjBz0E8CLOcAw7JIwAaeBT In-Reply-To: <87h5m31cuc.fsf@alyssa.is> --------------qcZLG6NDeTa3GIRhLvFl46VH Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable On 7/13/26 05:02, Alyssa Ross wrote: > Demi Marie Obenour writes: >=20 >> On 7/10/26 09:43, Alyssa Ross wrote: >>> Demi Marie Obenour writes: >>> >>>> I noticed that vm-import, run-appimage, and run-flatpak all have the= >>>> same code to start a VM, and run-flatpak and run-appimage both have >>>> the same code to shut down a VM. Is this intentional, or should it >>>> be replaced with common code? >>> >>> Yes, it probably should. But it is sort of intentional =E2=80=94 som= etimes I'm >>> not sure exactly which parts should be shared, so I leave code >>> duplicated for a while with the idea that it'll become more clear wha= t >>> the common core should be over time. (It usually works out.) Withou= t a >>> good understanding, it's easy to deduplicate too much, and end up wit= h >>> something that isn't flexible enough down the line, and then it has t= o >>> be un-deduplicated again. Happy for you to try deduplicating it if y= ou >>> think you have a good idea of where to draw that line, but otherwise >>> it's also fine for it to stay duplicated for now. >> >> The code that creates temporary files and per-VM users is the same for= >> vm-import, run-appimage, and run-flatpak. The code that tears down >> instances and namespaces is the same for run-appimage and run-flatpak.= >=20 > Right, but my point is that doesn't *ncessarily* mean that those > individual things would make sense as their own reusable components. > It might do, but it's not inferrable just from the duplication. The big advantage of deduplication is that it makes modification much easier, as I found out when adding cgroup support. --=20 Sincerely, Demi Marie Obenour (she/her/hers) --------------qcZLG6NDeTa3GIRhLvFl46VH-- --------------sbAgZC2SMMZdwqMzutNTBLtj Content-Type: application/pgp-signature; name="OpenPGP_signature.asc" Content-Description: OpenPGP digital signature Content-Disposition: attachment; filename="OpenPGP_signature.asc" -----BEGIN PGP SIGNATURE----- iQIzBAEBCgAdFiEEopQtqVJW1aeuo9/sszaHOrMp8lMFAmpU+bkACgkQszaHOrMp 8lOjIRAAkPT30YTeIH+3fkqbCJPCOyyFQEeHxOOHVc1rKaB9gknDWHRw/rYQYGDP EuOwy3cbdHGm5Nirr22PBOa/zgeMIaTrGmAmYmXc0PXuCgqmsii0I773Y+JWzSSn UWNFs7dwC2wIEeMoUjgxrAjSHT7nTbhTpmrfWPIEvUg0533VZ2vgPRCSpEB5S4HT wY2THcE9QbDePwm7dDWE8+cfbBd/qoN+8ZdHOTJ687jhAeFLFcSMF9ztPvmDZojS 2MLgHTblulMz7zj5G9KhgeoN0Wqye/CHipC3ocPVgSiplY8KkrQg16rCmldD/1cO JOpSfLMrUigMiqkZ2gkekUBWXybkhHXLXweQYM1AAXAJ8WZETu04hXa1omEoYBRu rxMBNnULnMES8tYiHXabbFYtPyl5XlwVzw1xY24q8bS5xurpNVZ/MYVYv/rvFrqt fnTuoyG0YglvBddEstj2G2aMQWjvlGxPChePr41LgDh0vmc/C5a7qiG3mNoZttMd 9UHToLG2IdlfAnLEfU+1422yq7w60XRxGnAKZL0zCmnGIjZRYpiH8xU9YjaBzjRA FQURA3jYaBGH5IF6s3iCtBlbF/2ThI+Eho71UWoIMgFs01v0TMFo0VmF55mhR0iU eLFGZxZvvUxVmtK0KMayQ7ZDqa2/oTFJe+rhKJ5ykrfd3NA787o= =kHfe -----END PGP SIGNATURE----- --------------sbAgZC2SMMZdwqMzutNTBLtj--