Re: 04/04: gnu: Add fwupd.

2022-09-01 Thread Denis 'GNUtoo7; Carikli
Hi,

On Wed, 31 Aug 2022 09:26:21 -0400
Maxim Cournoyer  wrote:
> > commit 23152ff70f0ed4966d8207846f54c793d7cb4f86
> > Author: Petr Hodina 
> > AuthorDate: Tue Jan 4 06:58:51 2022 +0100
> >
> > gnu: Add fwupd.
> > 
> > * gnu/packages/firmware.scm (fwupd): New variable.
> > 
> > Signed-off-by: Ludovic Courtès 
> 
> Just a quick question: does this tool talks to a remote server that
> serves non-free software as well as free one?  If so, it'd need to be
> patched to comply with the FSDG.
It does.

By default it at least uses the LVFS repository which has nonfree
software. I don't remember if it also has other repositories or if
there was a way to easily download updates from the repository
without fwupd or LVFS.

It is at least possible to search for specific software in LVFS at this
address: https://fwupd.org/lvfs/search?value=microcode

You also have UEFI updates and so on there, so it's pretty clear that
there is some nonfree software.

And we actually have the opposite issue here: It is way harder to find
firmware updates that are fully free and that they can at least in
theory be built with 100% free software on top of FSDG compliant
distributions.

Maybe small free software firmwares like the colorhug firmware could be
OK. Somebody would need to check the dependencies for build the
firmware update.

Bigger firmwares like with firmwares using Coreboot are probably not
OK because while coreboot is under the GPL, to work on recent
hardware nonfree software is likely to be used (like microcode updates,
Intel FSP, nonfree AGESA, etc).

Denis.


pgpMhP5FthpPP.pgp
Description: OpenPGP digital signature


Re: advanced?

2022-11-28 Thread Denis 'GNUtoo7; Carikli
On Sun, 27 Nov 2022 10:35:13 -0800
Vagrant Cascadian  wrote:
> It also makes me wonder if "advanced" will stand the test of
> time. Someday Guix-style systems might just be status quo, and thus no
> longer advanced. Guix of course will likely evolve over time... maybe
> it will still hold qualities worthy of being called "advanced", [...]
Something interesting would be to convey what users need to know or
learn for using Guix. In "1.1 Managing Software the Guix Way" we
already have hints that it might require to know the command line and
scheme. Though maybe it could be clarified for less technical users.

For instance it "provides" [a command line interface], but that is not
clear that it's the only way to interact with some of Guix features.

If we compare Guix with other FSDG compliant distributions:
- Trisquel is usable by users that don't know the command
  line but less technical users might need a bit of help for upgrading
  from a version to another (in install parties for instance). Sometimes
  they just need somebody to be there just in case something goes wrong
  though.
- Parabola x86_64 can probably be used by users without command line
  knowledge (for a desktop/laptop usage) but the boot sometimes break,
  so less technical users also need to plan ahead and know how to
  reinstall it if needed (that could be done by having a separate home
  for instance). A server usage does require to know the command line
  and also to know how to edit configuration files (like Apache
  configuration file).
- Once installed, LibreCMC (and OpenWRT) are probably also relatively
  easy to configure for people that know what an IP address is, what is
  DHCP, what is an SSID, etc. Guix has the potential to be similar.
- Freedombox (available in PureOS, Debian, etc) looks way easier but it
  is also way less configurable.

Guix has the potential to have the same kind of balance between
easiness and empowerment/configurability than LibreCMC (if
graphical interfaces are written).

Making the current status more clear can probably help users. On my side
I've already taken that into account on the documentation I wrote on
FSDG compliant distributions on the Libreplanet wiki, but I'm not sure
how to improve the text in that manual section, or how to promote more
that information.

Denis.


pgptBDqM3kKVK.pgp
Description: OpenPGP digital signature


Packaging big generated data files?

2022-12-07 Thread Denis 'GNUtoo7; Carikli
Hi,

Is there any policies or past decisions of the Guix project on
packaging big generated data files?

I've added packages for software like kiwix-tools and navit that both
work offline but that also need data files to be useful.

Navit is a (car) navigation software that need maps. The maps can be
generated from OpenStreetMap dumps with a tool available in Navit
source code (maptool)[1] which is not packaged yet. Binary map files can
also be downloaded directly from various sources.

Right now the biggest file possible for such maps is about 47 GiB
(for the whole planet).

As for kiwix-tools, it can serve offline versions of websites like
Wikipedia, and there too it needs files to work. The biggest file seems
to be the complete version of English Wikipedia with scaled down
pictures[2] and it takes about 89 GiB. I didn't look yet how these files
were generated but I guess that they somehow can be generated from
Wikipedia dumps.

Packaging the binary files (without generating them) can be useful as
it simplifies a lot the maintenance as one can just update the package
version and checksum to update these. It also enables to keep the
information (download URL, checksum, license) in one place and it
enables easy reuse by Guix services and/or configuration files.

If these files were generated in packages, it would also enable to
tweak the data, for instance by adding height data in navit maps. As
for kiwix compatible files, it would probably enable to decide when to
make the snapshots or enable to package additional wikis
(like the Libreplanet Wiki) or websites.

The issue here is probably the size of the generated files: they are
huge, so if they are packaged, they will most likely take significant
resources in the Guix infrastructure.

So what would be the way to go here? Would Guix accept patches to add
packages for these files in Guix proper?  

If so, does it needs to be done like with the ZFS (kernel module)
package where "#:substitutable? #f" is used to avoid redistributing
package builds? Or are other ways better for such use cases?

Note that so far I've only packaged locally only kiwix compatible files
for various wikis by just downloading already prepared files, so I
didn't look yet into navit maps or into generating all these files, so
I might miss some details about generating them.

References:
---
[1]https://navit.readthedocs.io/en/latest/maps.html#processing-osm-maps-yourself
[2]https://mirror.download.kiwix.org/zim/wikipedia/wikipedia_en_all_maxi_2022-05.zim

Denis.


pgpJ1igkoF_kj.pgp
Description: OpenPGP digital signature


Re: Packaging big generated data files?

2022-12-10 Thread Denis 'GNUtoo7; Carikli
On Thu, 08 Dec 2022 14:46:51 +0100
Csepp  wrote:
> Could ZIM files be downloaded over bittorrent as fixed output
> derivations?  They can be pretty huge.  Also if the system started
> seeding them as well, that would be pretty cool.
I've no idea how to generate fixed output derivations.

As for BiTorrent, ZIM files provided by kiwix can be downloaded over
it. As for using that in packages, all I found in Guix (beside
packages) was a Transmission service and associated test(s). So I guess
that would needs to be added.

Denis.


pgp_JsSAo8UVG.pgp
Description: OpenPGP digital signature


Re: Packaging big generated data files?

2022-12-10 Thread Denis 'GNUtoo7; Carikli
On Wed, 07 Dec 2022 15:45:01 +0100
"pelzflorian (Florian Pelz)"  wrote:

> Denis 'GNUtoo' Carikli  writes:
> > Is there any policies or past decisions of the Guix project on
> > packaging big generated data files?
> 
> commit 183db725a4e7ef6a0ae5170bfa0967bb2eafded7
> Author: Ricardo Wurmus 
> Date:   Tue May 15 12:55:27 2018 +0200
> 
> gnu: Add r-bsgenome-dmelanogaster-ucsc-dm6.
> 
> * gnu/packages/bioconductor.scm
> (r-bsgenome-dmelanogaster-ucsc-dm6): New variable.
Thanks.

So I assume that we could do something like that for now and later on
see if it makes sense to generate the files.

Denis.


pgplezwAGjiLC.pgp
Description: OpenPGP digital signature


Re: Stratification of GNU Guix into Independent Channels

2022-12-28 Thread Denis 'GNUtoo7; Carikli
On Sat, 24 Dec 2022 03:49:30 +
"jgart"  wrote:

> Hi Guixers,
Hi,

> Should GNU Guix be a small core of packages (and services?)?
I think it would also make sense to consider first find the features we
want, and then look at how to get them, to see if that works better for
us.

For instance if the goal is to get faster updates, there might be
other things that could be done to improve the speed way more than
reducing the number of packages in the repository. 

For instance making sure that there are substitutes might improve the
speed a lot more. It might also be possible to optimize Guile more for
some tasks. For instance:
- Copying files on filesystems that have deduplication could be
  improved.
- Maybe it is possible to substitute more things (like the things it
  builds when we do guix pull) or at least rebuilding only some of them
  (the ones that changed between the last git revision and the new
  one). 
- It might also be possible to combine information from Guix weather
  with the current system or packages to see on which revision the
  packages ca be upgraded without having to recompile anything (unless
  we use non-substitutable packages) and update to that revision
  automatically.
- etc.

For some of these ideas, we would first need to benchmark somehow what
is taking time during updates though, to make sure that the
optimization really yields some gains.

In my case I've already a clear use case (basically a non-substitutable
package that consist of a huge data file) where optimizing Guile will
yield a lot of performance improvements.

If the idea is (also) to avoid using certain packages, it might make
more sense to have a system to do that inside the current Guix source
code. 

For instance a user might want to make sure not to ship compiled zfs
compiled kernel modules, though right now it's not a big issue as you
need to manually select either zfs-auto-snapshot or zfs to get it, no
other packages depend on it. So users usually won't accidentally install
it.

Another idea would be to have some flag to have only free culture
licensed packages (like to avoid cc-nd non-functional data).

Though I think that if we do something like that, it would complicate
things a lot. Since Guix is meant to be reproducible, we would need to
find a way to handle that kind of configuration in a reproducible way.

So far the configurability has been integrated in ways that are not
hidden for users. For instance if you use a package transformation, you
are aware of it. Packages specific to CPU Microarchitectures[1][2] also
need to be used specifically, and if I understand users often use
package transformation for that.

An easier way here would probably be to teach tools like guix lint to
enable to check certain things, for instance with 'guix lint
--extra-check=./my-checks.scm', or just to write a new tool or external
tools for that. We can already use the Guix repl in guile scripts.

Though here it would still be up to users to run the checks and try to
fix things (for instance by using package transformations), but at
least it would not complicate things in Guix.

As for weather or not switching to a layered approach would improve
development, some projects like openembedded/yocto did that. I've no
idea why exactly they did it and what turned out to work well or not for
their use cases, but to me the result looks really complex[3],
especially if we want to do something like that with Guix.

For instance we'd need to handle this layered approach in all the
infrastructure, tools, and so on. Users would also need to know where
to send patches, and if we try to autodetect that in the tools that
receive the patches, it might becomes error prone. And we'd also need
to make sure that layers stay compatible with each other. If everything
is split, that's harder to do.

I think that one of the big strength of Guix is precisely the fact that
everything is well integrated together. And as far as I understand,
here having a single repository makes it much easier to do that.

As I understand Guix maintainers do care about giving some time
to third party packages or channels to adjust for changes[4], though
with a single repository we can more easily do changes and test them
than if the changes would be scattered around multiple repositories.

A single repository also ensures that everything stay consistent
without much effort.

References:
---
[1]https://git.savannah.gnu.org/cgit/guix.git/tree/gnu/packages/maths.scm?id=fddf1dc3aba3176b6efc9e0be0918245665a6ebf#n2762
[2]https://hpc.guix.info/blog/2018/01/pre-built-binaries-vs-performance/
[3]https://layers.openembedded.org/layerindex/branch/master/layers/
[4]"We recommend waiting until the next Guix release is out though,
   which could be a month from now, so that your channel remains usable
   by those who pinned an older revision of the guix channel."[5]
[5]https://guix.gnu.org/en/blog/2021/the-big-change/

Denis.


pgpQ_ImVBFd22.pgp
Description: OpenPGP di

Re: FSDG issues of SCUMMVM-based games

2023-06-15 Thread Denis 'GNUtoo7; Carikli
t packaged nor redistributed by
Guix but it looks way better than the other freedom wise and it can
teach us how ScummVM games are made.

Its probably not good enough as-is as its source code also also relies
on a tarball that contains executable to build the game and I also
didn't manage to build it with Guix yet (I've attached a file with my
attempt) but maybe it's possible to get it to build and maybe we can
build a 100% free software version of it.

For the licenses the website has the following:
> In 2006, I (Robert Špalek) released the source codes under the GNU
> GPL2 license.
> [...]
> The game has been released under the GNU GPL license version 2,
> hence you can download it for free including full source codes. The
> new game engine is a part of ScummVM and its source codes are thus
> also a part of it. The old game engine was written in Borland Pascal
> and Turbo Assembler, and only runs on MS-DOS. It can be downloaded
> below. Besides the game player you can also download the source codes
> of the game scripts written in our proprietary game programming
> language, and source images, sounds, and animations. 

So I'm unsure about the license of the executable, game data, etc.

The interesting thing is that it has some draci-historie specific
scripting language and a compiler for it. So we can safely assume that
the other games most likely have a way to script things and that the
games are complex enough to have scripts.

And these scripts may need to be compiled here (I've no idea how
scripts look like for the other games).

A way forward would be to try to build this draci-historie game if we
really want to have ScummVM games and to patch ScummVM to use the
checksums from the newly built game.

There is also an IDE (QT AGI Studio)[4] and some templates[5] for the
AGI game engine supported by ScummVM, but all that require some work
because (a) the IDE depends on QT4, and (b) the template license is a
bit similar to the games license[6], and (c) if scummVM still has
checksums, then users need to build their own version anyway (d) nobody
knows if that can work with 100% free software unless people audit or
package the software and try to see if it works.

References:
---
[1]This gnu-linux-libre mailing list is at nongnu.org. Despite its name,
   this mailing list is meant for discussions about all FSDG compliant
   distributions(even the ones without GNU or linux-libre like
   Replicant), about the list of software to exclude from FSDG
   distributions, about adding new distros in the list, etc.
[2]https://www.ucw.cz/draci-historie/index-en.html
[3]https://www.ucw.cz/draci-historie/src/doc/compiling-the-game.txt
[4]https://agistudio.sourceforge.net/#requirements
[5]https://github.com/nbudin/agikit-project-template
[6]https://github.com/nbudin/agikit-project-template/blob/main/README-original.txt

Denis.
;;; Copyright © 2023 Denis 'GNUtoo' Carikli 
;;;
;;; This file is free software; you can redistribute it and/or modify it
;;; under the terms of the GNU General Public License as published by
;;; the Free Software Foundation; either version 3 of the License, or (at
;;; your option) any later version.
;;;
;;; This file is distributed in the hope that it will be useful, but
;;; WITHOUT ANY WARRANTY; without even the implied warranty of
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
;;; GNU General Public License for more details.
;;;
;;; You should have received a copy of the GNU General Public License
;;; along with this file.  If not, see <http://www.gnu.org/licenses/>.

(use-modules (gnu packages compression)
	 (gnu packages pascal)
	 (gnu packages python)
	 (guix build-system gnu)
	 (guix build-system trivial)
	 (guix download)
	 (guix gexp)
	 (guix packages)
	 ((guix licenses) #:prefix license:))

;; Serious issues to address:
;; (1) Is the Data GPLv2 ? Is it redistributable? What the dh-en-2012.zip
;; binaries?
;; (2) compiling-the-game.txt[1] has a section "4. Play the recompiled
;; game" that explains that the game built is incompatible with
;; ScummVM unless scummVM is patched with the md5 of the game binary.
;; [1]https://www.ucw.cz/draci-historie/src/doc/compiling-the-game.txt
;; (3) Actually make it work
;; (4) Patch scummVM and test the game

;; TODO:
;; - Also pakcage licenses and license declarations too
;; - identify and remove the binaries that are not used by the build
;;   system.
;; - Make sure only data that can be edited with free software
;;   tools remains.
;; - Make a cleaned-up tarball and get that mirrored instead of the
;;   binaries we don't use.
;; - Convert that into a function that makes a package for a given
;;   language.
(define-public draci-historie-dubbing-en
  (package
   (name "draci-historie-dubbing-en")
   ;; There are no versions in the release.
   (version "1+1")
   

Re: FSDG issues of SCUMMVM-based games

2023-06-16 Thread Denis &#x27;GNUtoo7; Carikli
On Thu, 15 Jun 2023 19:34:32 +0200
Liliana Marie Prikler  wrote:
> I don't think we need to be that harsh on ScummVM itself, it being a
> virtual machine.  
>
> Compare it to Wine: the tools to create Windows binaries with free
> software only are limited (albeit existing if we discount the
> necessity for system headers), but it still serves a purpose by
> enabling you to run said programs without resorting to a Windows
> machine.
About wine, the first time GUix's wine starts it asks you to download
and install mono for you (and in my case I didn't manage to skip that),
but if that's 100% free (it's most likely the case), everything should
be OK because:
- We have an FSDG compliant toolchain for Wine in Guix
- Wine in Guix should also be 100% free software
- The guix build --target=x86_64-w64-mingw32 hello works fine in
  Guix's Wine
- The package description also don't steer users toward nonfree
  software.

So just with that have at least 1 valid use case that don't steer users
toward getting and installing nonfree software at all, and that use
case is not incompatible with the package description, so for me It's
hard to find something wrong with that here, especially when the use
case is of strategic importance for free software (shipping software to
people used by nonfree OS can help spread free file formats and
protocols).

> The only limiting factor here is your point (2), i.e. it being able to
> run arbitrary games compiled for the VM.  I don't think that weird
> checksums ought to be enforced if they're not baked into the program
> itself.
The draci-historie build tutorial said that the checksums were backed
in ScummVM and that you needed to add your own checksum inside ScummVM
source code and recompile it to run a modified version of the game.

Maybe that changed since then, but that is probably not very likely to
have happened, and this checksum mechanism also likely applies to all
programs or games meant to run inside ScummVM.

And if we had at least one 100% free program that run inside ScummVM
(something without nonfree dependencies, that we can rebuild or modify)
then we'd be able to easily find out about the checksums.

If someone knows good tools to work with ARJ archives, we could also
try it by modifying existing games very slightly (like by adding
something new inside the ARJ archive).

> Even if no such toolchain exists for ScummVM, you need ScummVM as a
> testbed to write one :)
Assuming that some way around the checksums is found, the issue here is
that no such toolchain exist yet, so testing it won't work right now.

And assuming that draci-historie turn out to be a dead end, getting a
free toolchain probably requires significant work in research, or in
packaging.

In contrast, many other VMs (qemu, java, gjs, etc), they already
have valid use cases and/or it's trivial to make a free software hello
world.

So there is no such burden on the potential user to have to provide
development tools that don't exist yet for that VM.

And here the rationale doesn't try to weight uses cases (like wine has
many nonfree games and very few known 100% free software, so wine
should be removed[2]), only to make sure that there is at least a single
use case that works with 100% free software.

> > I've looked a bit at another game (draci-historie[2]) that has some
> > source code published. This game is not packaged nor redistributed
> > by Guix but it looks way better than the other freedom wise and it
> > can teach us how ScummVM games are made.
> > 
> > Its probably not good enough as-is as its source code also also
> > relies on a tarball that contains executable to build the game and I
> > also didn't manage to build it with Guix yet (I've attached a file
> > with my attempt) but maybe it's possible to get it to build and
> > maybe we can build a 100% free software version of it.
> You might be able to bootstrap parts of it with fpc, i.e. the Free
> Pascal Compiler.  I'm not sure whether you'll encounter the necessity
> for Borland Pascal, as we package version 3.2.2, which is somewhat
> newer than the mentioned 2.4.
I'm unsure of why it fails exactly. I've an error message[1] that comes
from the Pascal code, but I don't know Pascal and the comments aren't
in English. 

Though I could indeed try a different compiler version and see if it
works, or try to build it in some FHS container.

References:
---
[1]cannot save palettes used in programs
   /tmp/guix-build-draci-historie-1+2.drv-0/source/build/gfx/outro/outpal1.pcx
[2]In my opinion weighting use cases is a can of worms because the
   importance of use cases is subjective, and if all FSDG distros go
   this route, it could prevent valid use cases that are or turn out to
   be strategic for free software. And since the use cases are
   prevented, people might even not be able to see the problem that was
   created by going this route.

Denis.


pgpAh_A6KkrN5.pgp
Description: OpenPGP digital signature


Re: FSDG issues of SCUMMVM-based games

2023-06-18 Thread Denis &#x27;GNUtoo7; Carikli
On Sun, 18 Jun 2023 10:19:06 +0200
Liliana Marie Prikler  wrote:
> I've tracked the checksum to the header in which it was declared, and
> it says
>   /* MD5 of (the beginning of) the described file. 
>  Optional. Set to NULL to ignore. */
>   const char *md5;
> (Comment reformatted to fit into a mail)
Thanks a lot. That means that we could easily patch ScummVM to ignore
checksums and at least fix this specific issue. It probably needs to be
done for each game engine we care about though.

> > > Even if no such toolchain exists for ScummVM, you need ScummVM as
> > > a testbed to write one :)
> > Assuming that some way around the checksums is found, the issue here
> > is that no such toolchain exist yet, so testing it won't work right
> > now.
> > 
> > And assuming that draci-historie turn out to be a dead end, getting
> > a free toolchain probably requires significant work in research, or
> > in packaging.
> > 
> > In contrast, many other VMs (qemu, java, gjs, etc), they already
> > have valid use cases and/or it's trivial to make a free software
> > hello world.
> Didn't you say that a hello world for scummvm exists?
I don't know. There is a template for AGI games but the license is
strange too, and it also requires some software to build it, and I've
no idea if it's compatible with QT AGI, and I've also no idea if QT
AGI works, doesn't have nonfree dependencies, etc. 

So that makes things way more complicated because here it probably
requires a lot of work to confirm that it's possible or not possible to
develop programs that run inside ScummVM with free software.

> My argument isn't that we ought to remove wine because it's quite
> often used to run nonfree software.  My argument is to apply the same
> principles we use to justify not only wine, but also game engines,
> where only the engine but none of the assets are free (some of which
> are included in Guix).
Ah OK, I slightly misunderstood because I didn't think about the other
games with non-FSDG compliant assets, so I've no idea about these
yet, especially because it would depend a lot on the details.

For instance in some engines, it might be trivial to make them start
/ work a bit with FSDG compliant game data, or at least data that the
user can easily make, and on some other it might not be possible
without a lot of effort. Some engines might require code, other other
only data, etc. I've also don't have their package description in mind.

And in the FSDG there is also an exception for licenses like CC-BY-ND
for non-functional data like game graphics, but I fear that the engines
you're referring to are mainly meant to work with non-re-distributable
data.

> Indeed, we may not have access to the same tools as the game
> developers did back then, but you can still run the games on any
> machine of your choosing for any purpose, and if you don't mind
> experimenting a little, you can also run modified versions.
The same logic also applies to software under free licenses that lacks
corresponding source code: users can experiment with it, modify the
assembly code, and so on. 

But the amount of effort required to do that is huge compared to "the
preferred form of modification" of that software (typically source
code, commented assembly, with a build system that works and enable
users to do some small change and rebuild the code, etc).

Some firmwares are in this case, but they are considered nonfree until
their source code is produced somehow (for instance by reconstructing
it, and with some automatic reverse engineering tools, etc).

Another issue here is that it is way easier to reason on software that
exists and facts that are known or very likely to be true rather than
hypothetical software that require unknown or big amount of work. Here
it could turn out to be a huge amount of work just to manage to run free
code inside ScummVM.

That can also be compared to freeing firmwares under free licenses that
lack source code where there is some work and research needed to make
them useful for people wanting to use 100% free software.

In contrast if I take gjs, this program is free software:
> print("This software is released under the CC-0 License");
> print("hello world");
and it can run with 'gjs hello.js'. So weather or not gjs is reused by
other programs as a dependency, as-is it's ultra useful as anybody can
either write free software or software that isn't public (that's a
valid use case too). And making sure of that is trivial.

Denis.


pgptxZctL0xvQ.pgp
Description: OpenPGP digital signature


Re: FSDG issues of SCUMMVM-based games

2023-06-20 Thread Denis &#x27;GNUtoo7; Carikli
On Tue, 20 Jun 2023 06:30:26 +0200
Liliana Marie Prikler  wrote:
> Note, that this discussion started IIRC a year ago and we have
> practically known about actually existing FSDG violations since then. 
> My approach here is quite simple and pragmatic: Remove the games which
> obviously violate the FSDG (that is all the games currently depending
> on ScummVM as far as I know), but keep ScummVM for now to allow folks
> to experiment.  If in some one to five years we still find no
> practical way of using ScummVM with only free software, that might be
> a reason to remove it then.
> 
> WDYT?
That looks perfectly fine to me. It leaves some time to people to try to
fix ScummVM itself in a better way (like by packaging games built from
source like Draci Historiae, removing the checksums, making a hello
world, etc), and at the end ScummVM would get removed if it's not fixed.

Denis.


pgp1puW4qmk7v.pgp
Description: OpenPGP digital signature


Re: Adding GNAT/GCC-Ada to Guix

2023-07-16 Thread Denis &#x27;GNUtoo7; Carikli
On Sun, 16 Jul 2023 08:47:41 +
Fernando Oleo Blanco  wrote:

> Dear Guix community,
Hi,

> Why did I tell all of this?
> Because I would like to add GCC-Ada to Guix and I am fully aware of
> the work that the Guix and the #bootstrappable people are doing
> towards a fully transparent compilation history. Opaque binaries are
> not allowed for that purpose. Sadly that is not currently possible
> with Ada. Therefore, I would like to get permission to add GCC-Ada as
> a binary up until there is a bootstrapping path available. I am aware
> that some languages/tools have received this treatment before.
I don't know well the exact policies with that regard (I'm not a Guix
maintainer, just an occasional contributor) but I found the following
compilers in Guix source code:

- The haskell is not and was never bootstrapped from source. Though
  the binaries used to bootstrap it changed over time.

- There are also other compilers like vala and nim that convert vala
  and nim source code to C. The issue is that they are written in vala
  and nim, and Guix uses generated "source code" (generated C that is
  very hard to read) to build the compilers. People usually don't
  modify nor audit that kind of generated source unless it is for
  debugging purposes.

> 3. What can Ada provide to Guix?
> 
> Apart from being an official language of the GCC toolsuite, it is
> also used in some important and unique places. For example, the
> graphics stack of Coreboot/Libreboot among other drivers are written
> in Ada [3] (you can find more by running `find . -type f -name
> "*.ad*"` on Coreboot's root folder).
Nowadays Libreboot includes nonfree software in its releases, so
because of that me and Adrien 'Neox' Bourmault started working to
continue the original spirit of the old Libreboot that didn't contain
any nonfree software.

And while we don't have a release yet, in the longer run we're
interested in using Guix for building it because Guix is FSDG compliant
and it can be installed on top of most GNU/Linux distributions.

It would also make the maintenance easier and shared with other users of
Guix, enable to easily rebuild older releases, have faster build
times, etc.

Since it's also possible to inherit packages, in the long run it
would probably makes sense for us to move most of our work in Guix.

So having some ways to build software written in Ada with Guix would
make a big difference here as without that we would probably only be
able to use Guix only for some parts (like for building GRUB, SeaBIOS
etc for Coreboot).

Without that, Guix users would also need to use another distribution
with Guix inside to be able to build it.

> It is also the base programming
> language of SPARK [4], a verifiable, GPLv3 licensed, programming
> language, used for the ARIANE rockets and the Rosetta space probe for
> example. And of course, there are plenty of libraries, tools and
> programs written in Ada! Without a compiler, none of this can be
> packaged in Guix...
At the last FOSDEM, I was also shown at the ADA table that it was
also possible to build software for micro-controllers with it.

Though I've no idea if there are interesting free software firmwares
written in Ada worth packaging in Guix.

Anyway, Thanks a lot for all your work on this.

Denis.


pgpr70fbsNZug.pgp
Description: OpenPGP digital signature


Re: Postgres user UID and GID

2023-07-17 Thread Denis &#x27;GNUtoo7; Carikli
On Mon, 17 Jul 2023 18:06:04 +
Martin Baulig  wrote:

> Hello,
Hi,

> I have a bit of an unusual setup, as I am running GNU Guix in a VM on
> a Synology NAS. Unfortunately, their DSM software sucks quite badly,
> but I am currently stuck with this hardware as I don't have the
> budget to replace it. But I don't want to make any long-term
> commitment to their software either. One of the awesome features of
> GNU Guix is that it can nicely and easily be deployed elsewhere.
> However, for this to work, I need to be able to extract my data
> easily, so storing anything inside that VM that's not on GitLab isn't
> an option. I have decided to NFS-mount an encrypted shared folder
> from the NAS and store all data there.
I've also a setup where I share a postgresql data folder between
various distributions.

In my case it's shared between Parabola i686, Parabola x86_64, Guix
i686 and Guix x86_64. And I often need to chroot inside Parabola so
this is why I need to use the same IDs (than Parabola).

So for keeping the same id across different distributions, I hardcoded
it in the users and groups like that in my system.scm:
>   (users (cons* [...]
> (user-account
>   (name "postgres")
>   (uid 88)
>   (group "postgres")
>   (comment "PostgreSQL user")
>   (home-directory
> "/path/to/shared-dir/var/lib/postgres") (shell (file-append bash
> "/bin/bash")) (system? #t)) %base-user-accounts))

And in the groups too:
>   (groups (cons* [...]
>  (user-group
>(name "postgres")
>(id 88)
>(system? #t))
>  [...]
>  %base-groups))

And for the record here's how I use a different architecture: I define
a package:
> (define postgresql-14-i686-linux
>   (package
>(inherit postgresql-14)  
>(name "postgresql-14-i686-linux")
>(arguments
> (ensure-keyword-arguments
>  (package-arguments postgresql-14)
>  '(#:system "i686-linux")

And then use it in the PostgreSQL service:
>(service
>  postgresql-service-type
>  (postgresql-configuration
>   (postgresql
>(if (target-x86-64?)
>postgresql-14-i686-linux
>postgresql-14))
>   [...]))

The downside is that it prints a warning during boot if I recall
well but it works fine.

I'm unsure if that helps the conversation or not though as you might
want something cleaner.

Denis.


pgpi_a0mwAat8.pgp
Description: OpenPGP digital signature


Re: Postgres user UID and GID

2023-07-18 Thread Denis &#x27;GNUtoo7; Carikli
On Mon, 17 Jul 2023 21:35:00 +
Martin Baulig  wrote:
> If I use the unmodified service and with the (operating-system (user
> ...)) entry, it works sometimes, but not reliably due to having two
> conflicting entries for the 'postgres' user.
I see. So if I touch too much my system it could break at any time then.

Denis.


pgpLBy40xkwmS.pgp
Description: OpenPGP digital signature


How to build Guix to send a patch when Guix build fails?

2020-10-01 Thread Denis &#x27;GNUtoo7; Carikli
Hi,

I'd like to send a patch to add a bootloader (u-boot) package for a
single board computer. The patch is trivial and it's already
ready.

However before sending the patch, I'm supposed to build it within Guix
source code and to test it.

I've been trying many variations of 'guix environment --pure guix
--ad-hoc ' during many many hours, but I still didn't
manage to build Guix. I always have the failure that is in the
build.log that I attached.

I've the patch I attached on top of the following commit:
> 51eb3e113c gnu: linux-libre 4.19: Update to 4.19.148.
And I did the following commands last night when trying to build Guix:
> $ guix pull
> $ guix package -u

I did it with the following hardware and distributions configurations:
- Architecture: i686
- Host distribution: Parabola i686 with a x86_64 kernel (5.7.2-gnu-1-64)
- Guix architecture: i686

Is there a command that is known to work to build Guix in a way that
doesn't use any of the host packages? 

I also tried on another machine with the following configuration:
- Architecture: x86-64
- Host distribution: Parabola x86_64 without guile-json installed
- Guix architecture: x86_64
- Guix environment command: 'guix environment --pure guix --ad-hoc
  guile-json

And it wouldn't pick Guix's guile-json, so I assume that for some
reason it tried to use the host's packages somehow.

As I was told on IRC, building Guix from Guix latest revision is
supposed to work. However if during the build it really uses
packages from my host distribution (Parabola), then there might be some
combination of packages that makes it fail, so here I hope that with
the right guix environment command it would build.

Denis.
$ guix environment guix --pure
pe0 not found
bash: keychain: command not found
bash: tput: command not found
bash: tput: command not found
$ bash --norc # The command not found above are due to my bashrc
bash-5.0$ ./bootstrap
++ find po/doc -type f -name 'guix-manual*.po'
++ sed -e 's,guix-manual\.,,'
++ xargs -n 1 '-I{}' basename '{}' .po
+ langs='de
zh_CN
es
ru
fr'
+ for lang in ${langs}
+ '[' '!' -e doc/guix.de.texi ']'
+ echo '@setfilename guix.de.info'
+ echo '@include version-de.texi'
+ touch po/doc/guix-manual.de.po
+ for lang in ${langs}
+ '[' '!' -e doc/guix.zh_CN.texi ']'
+ echo '@setfilename guix.zh_CN.info'
+ echo '@include version-zh_CN.texi'
+ touch po/doc/guix-manual.zh_CN.po
+ for lang in ${langs}
+ '[' '!' -e doc/guix.es.texi ']'
+ echo '@setfilename guix.es.info'
+ echo '@include version-es.texi'
+ touch po/doc/guix-manual.es.po
+ for lang in ${langs}
+ '[' '!' -e doc/guix.ru.texi ']'
+ echo '@setfilename guix.ru.info'
+ echo '@include version-ru.texi'
+ touch po/doc/guix-manual.ru.po
+ for lang in ${langs}
+ '[' '!' -e doc/guix.fr.texi ']'
+ echo '@setfilename guix.fr.info'
+ echo '@include version-fr.texi'
+ touch po/doc/guix-manual.fr.po
++ find po/doc -type f -name 'guix-cookbook*.po'
++ xargs -n 1 '-I{}' basename '{}' .po
++ sed -e 's,guix-cookbook\.,,'
+ langs=de
+ for lang in ${langs}
+ '[' '!' -e doc/guix-cookbook.de.texi ']'
+ echo '@setfilename guix-cookbook.de.info'
+ touch po/doc/guix-cookbook.de.po
+ exec autoreconf -vfiautoreconf: Entering directory `.'
autoreconf: running: autopoint --force
Copying file ABOUT-NLS
Copying file build-aux/config.rpath
Copying file m4/codeset.m4
Copying file m4/fcntl-o.m4
Copying file m4/gettext.m4
Copying file m4/glibc2.m4
Copying file m4/glibc21.m4
Copying file m4/iconv.m4
Copying file m4/intdiv0.m4
Copying file m4/intl.m4
Copying file m4/intldir.m4
Copying file m4/intlmacosx.m4
Copying file m4/intmax.m4
Copying file m4/inttypes-pri.m4
Copying file m4/inttypes_h.m4
Copying file m4/lcmessage.m4
Copying file m4/lib-ld.m4
Copying file m4/lib-link.m4
Copying file m4/lib-prefix.m4
Copying file m4/lock.m4
Copying file m4/longlong.m4
Copying file m4/nls.m4
Copying file m4/po.m4
Copying file m4/printf-posix.m4
Copying file m4/progtest.m4
Copying file m4/size_max.m4
Copying file m4/stdint_h.m4
Copying file m4/threadlib.m4
Copying file m4/uintmax_t.m4
Copying file m4/visibility.m4
Copying file m4/wchar_t.m4
Copying file m4/wint_t.m4
Copying file m4/xsize.m4
Copying file po/guix/Makefile.in.in
Copying file po/packages/Makefile.in.in
Copying file po/guix/Makevars.templateCopying file po/packages/Makevars.template
Copying file po/guix/Rules-quot
Copying file po/packages/Rules-quot
Copying file po/guix/boldquot.sed
Copying file po/packages/boldquot.sed
Copying file po/guix/en@boldquot.header
Copying file po/packages/en@boldquot.header
Copying file po/guix/en@quot.header
Copying file po/packages/en@quot.header
Copying file po/guix/insert-header.sin
Copying file po/packages/insert-header.sin
Copying file po/guix/quot.sed
Copying file po/packages/quot.sed
Copying file po/guix/remove-potcdate.sin
Copying file po/packages/remove-potcdate.sin
autoreconf: running: aclocal --force -I m4
autoreconf: configure.ac: tracing
autoreconf: configure.ac: not using Libtool
autoreconf: running: /gnu/store/cr6pfkq6qm0jn5nrbm3

Re: How to build Guix to send a patch when Guix build fails?

2020-10-02 Thread Denis &#x27;GNUtoo7; Carikli
On Thu, 01 Oct 2020 15:54:06 +0200
zimoun  wrote:
> > I also tried on another machine with the following configuration:
> > - Architecture: x86-64
> > - Host distribution: Parabola x86_64 without guile-json installed
> > - Guix architecture: x86_64
> > - Guix environment command: 'guix environment --pure guix --ad-hoc
> >   guile-json  
> 
> On this machine, the following commands should work:
> 
>   git pull
>   guix pull 
>   guix environment -C guix
>   ./bootstrap
>   ./configure --localstatedir=/var/
>   make
Apparently that didn't work on my pure x86_64 machine. It still kept
not finding guile-json.

> If you do not want to update your profile, you can run:
> 
>   guix time-machine --commit=51eb3e113c478f0683e92412785ee82e56c45621
> \ -- environment -C guix
>   ./bootstrap && ./configure --localstatedir=/var/ && make
However that worked fine on that same machine.

> Hope that helps,
It did. Thanks a lot.

I'll test the patch, and then I'll try to find the time to bisect it.

Denis.



Re: A plan for parameterized packages

2020-11-19 Thread Denis &#x27;GNUtoo7; Carikli
On Sun, 15 Nov 2020 22:24:29 +0100
raingloom  wrote:
> Alpine already achieves an incredibly tiny install size by splitting
> packages into many outputs. We could and should do the same.
> As far as I know, they do not have parameterized packages.
That also depends on how far you want to go.

Last time I looked into how LibreCMC/OpenWRT did that, they had much
more optimization than that. If I recall well, they use at least:
- sstrip to strip binaries as much as they could. sstrip produces
  smaller binaries than with strip.
- compilation flags like -Os
- a read-only compressed filesystem with an overlay to store the
  changes

The issue is that despite all that, the size of the images tend to
increase too rapidly over time[1].

If we manage to shrink Guix enough, it might be possible to use it on
way more devices, including RYF compliant devices or potentially
certifiable devices:
- The Talos II BMC has 32M according to both the wiki[2] and the image
  sizes[4]. Its architecture is ARM. So once we have the PPC64
  architecture working, it would be great to be able to run Guix
  both in the BMC and on the PowerPC CPU.

  That BMC is also available on other mainboards like the D16 which is
  supported by Libreboot, but the flash size is probably even smaller
  there.
- Many WiFi access point have very few flash space. It can boils down
  to as low as 16M for LibreCMC/OpenWRT compatible devices, or even 8M
  for older devices. However they typically use the MIPS architecture
  which isn't supported yet in Guix.
- There is a GNU/Linux distribution[6] that runs inside the flash chip
  where Libreboot or Coreboot typically runs. The goal is to enable
  more flexible and/or secure booting by using GNU/Linux to boot
  GNU/Linux. Here too the flash chip of computers supported by
  Libreboot can be quite small, like 8M for Thinkpads with GM45
  chipsets.

In some case it might be possible to increase the flash chip size
(sometimes you don't need soldering for that), but at least with x86
mainboards, the chipset has limits on the size of the flash chip that it
can see. And the size cannot be increased that much: The biggest flash
chip that flashrom supports is 256M.

References:
---
[1]https://openwrt.org/supported_devices/864_warning
[2]The wiki[3] mention a MX25L25635F/MX25L25645E/MX25L25665E flash chip
   which is 32M according to flashrom -L
[3]https://wiki.raptorcs.com/wiki/Debricking_the_BMC#Flash_new_BMC_firmware_via_serial_port_.28Open_Source_Method.29
[4]Once uncompressed the image[5] size (for installation through the
   shell) is 32M.
[5]https://wiki.raptorcs.com/wiki/File:Talos-ii-openbmc-v2.00-bundle.tar
[6]https://github.com/osresearch/heads/
[7]https://github.com/osresearch/heads/tree/master/config

Denis.


pgpoPCdagb2In.pgp
Description: OpenPGP digital signature


Re: Question about Guix on Novena - mainly U-Boot

2020-12-05 Thread Denis &#x27;GNUtoo7; Carikli
On Fri, 4 Dec 2020 19:49:37 +0100
Danny Milosavljevic  wrote:> 
> Now I want to make it boot it from SATA instead.
The question is what "boot from SATA" means here, it could mean
different things:
- Have u-boot on the microSD card and load the rootfs from the SATA
  HDD/SSD.
- Make the bootrom load u-boot from the SATA HDD/SSD.

Luckily the I.MX6 SOC is capable of loading u-boot from a SATA HDD/SSD
but it needs to be configured for that.

However it looks like the novena-eeprom utility only somehow does the
former:
https://github.com/xobs/novena-eeprom/blob/master/novena-eeprom.h

In addition I'm unsure if upstream u-boot can parse the sataroot flag
as I didn't find it but I only looked very rapidely and not on the
latest source code.

To configure the I.MX6 SOC to boot from a SATA HDD/SSD you'll have to
dig in the I.MX6Q reference manual and the schematics of the novena to
see how it is configured.

- You have fuses that select a boot mode
- One of the boot mode selected by the fuses configuration enables GPIO
  overrides (this is what we want here).

So with the reference manual and the schematics depending on the
fuses configurations, you could be able to understand the boot order of
the SOC (which peripherals it tries to load u-boot from and in which
order).

And if it's set in GPIO override mode and that the GPIOs are routed to
some switch or jumpers, you can probably manage to change the way it
boots and make sure it tries to load u-boot from the SATA HDD/SSD.

The u-boot source code also may have documentation about that. Some
boards (like the TBS2910) have some documentation on how they are
configured to boot. Since I didn't find the novena in doc/boards, you
might still have some luck if there is some more generic documentation
about booting devices with I.MX6Q.

If the Novena can't boot from SATA as-is, you could try to see if there
isn't a way through the configuration headers to configure the bootrom
to try to boot on SATA somehow. That configuration header (DCD) will
probably need to be on a peripheral that the bootrom tries to boot on.
Booting of I2C eeproms is possible on I.MX6 but again you'll have to
check the documentation to see if it satisfies all requirements
(including if the eeprom is wired to the proper I2C controller
and/or pads to be able to be read from the bootrom).

If not in the worst case you will probably need some minimal code on a
peripheral the bootrom tries to load code from.

There is probably some resources for the Novena (Forums, IRC channels
etc) that already have all theses answers but in any case understanding
a bit of the context here could help parse the answers.

Denis.


pgp6cEQsdtOka.pgp
Description: OpenPGP digital signature


Re: [GNU-linux-libre] Free firmware - A redefinition of the term and a new metric for it's measurement.

2017-02-14 Thread Denis &#x27;GNUtoo7; Carikli
On Fri, 3 Feb 2017 15:37:32 +0100
David Craven  wrote:

> This leads to two models of loading the firmware that runs on the MCU.
> 
> 1. The peripheral does not contain persistent storage and the firmware
> is loaded by the linux kernel through a standard API.
When using the Linux kernel, the firmwares are sometimes loaded by
something else than the linux kernel:
- In most Replicant devices, the modem firmware is in a separate eMMC
  partition in the device(Smartphone/Tablet), and it is loaded by
  libsamsung-ipc.
- Some bootloaders such as u-boot have the ability to load some
  firmwares or FPGA bitstreams.

> 2. The peripheral contains persistent storage containing the firmware
> and uses a separate interface for flashing the firmware.
This doesn't differenciate between a chip with internal
non-voltaile memory, and a chip with external (potentially shared)
flash chip.

This can have some serious freedom privacy and security implications
when the peripheral's firmware is on the same flash chip than the OS
(GNU/Linux or Android/Replicant). In that case the processor running
that non-free firmware can also access the OS partition.

I think it is the case on some older qualcomm devices like the HTC
Dream, where the modem firmware is on the same flash chip than the
Android Operating system...

On samsung smartphones and tablets supported by recent Replicant
versions, libsamsung-ipc, which is a library that talks to the modem,
loads the modem firmware. Thanks to that hardware architecture, the
modem doesn't have access to the eMMC that holds the Android
distribution (here Replicant).

> Problem:
> Today as an example, a WiFi card using option 2 is considered more
> free than one using option 1.
I understand the point, but let's approach the issue from another point
of view to better understand its contradictions and the tradeoffs that
have been made.

Let's take it from a top-down perspective where the top is application
software that runs on top of lower level software. Down goes deep down
in the hardware, like down to how a resistor is made.

If applications have to be free software (It's morally wrong not to
respect the users freedom), the software that makes the hardware works
also needs to be free software:
- For the same reasons than applications have to be free software.
- Since that software is more privileged it's very useful and important
  for it to be free software.
- As you stated it also impacts the ability to use hardware beyond
  their end of life, which reduces waiste.

Given the above one might wonder how deep we should go down and what is
the fronteer between hardware and software.

Given that even hardware and chip design has freedom privacy and
security inplications it is desirable to have freedom there too.
However given that we are not there I think that we need to have some
criterias that are reachable.

One can for instance use a computer that respects the FSF RYF criterias
as of today. I am for instance using one to write this mail.
My computer is not ideal though since:
- Its hard disk has a non-free firmware
- Its embedded controller has a non-free firmware

Beside the fact that I added the tor-browser, all rest is RYF and FSDG
compliant.

The question for me is then how to use the acceptable/not-acceptable
line to get more freedom out of it:
- If redistributing (and using) non-free firmwares was:
  - still acceptable
  - not an issue in the FSDG guidelines
  - done in the FSDG compliant distributions 
  Then we would probably:
  - Not have had the ath9k_htc firmware liberated (thanks to
Thinkpenguin,Atheros and the people who made it possible) 
  - May have more people using FSDG compliant distributions.

Having the ath9k_htc firmware liberated was really really important,
especially because:
- The Intel WiFi cards present in many laptops require non-free
  firmware to work, at least with recent kernels.
- Many laptop boot-firwmare(BIOS, UEFI) will refuse to boot if the user
  either changed the wifi card like with the default BIOS of the Lenovo
  Thinkpad X60 and X200, or removed it like with at least one of the HP
  Envy laptops.
- The ath9k_htc compatible cards can still be bought and found and have
  been for a long time.
- The ath9k_htc compatible cards supports modern-enough WiFi standards.

With that we can still use WiFi by ignoring the intel wifi card and
using an USB wifi card instead.

There are also free software firmware to support some other peripherals
such as:
- Old b43 compatible wifi cards (OpenFWWF).
- keyspan compatible devices.
- Older atheros based USB wifi cards.
- Probably few other devices.

While this is really great and that each new free firmware is a great
achievement and is really important, they are also crucial because we
failed:
- ATI GPUs are almost unusable with free software, in the best case we
  can load the radeon driver but do not have 3D accelerations and many
  of the features of that driver working because of the lack of a free
  firmw

Re: [GNU-linux-libre] Free firmware - A redefinition of the term and a new metric for it's measurement.

2017-02-19 Thread Denis &#x27;GNUtoo7; Carikli
On Tue, 14 Feb 2017 19:43:48 +0100
David Craven  wrote:

> Hi Denis,
Hi,

> 
> > With that we can still use WiFi by ignoring the intel wifi card and
> > using an USB wifi card instead.  
> 
> [Thunderbolt] poses a much larger security issue,
> that I would not actually gain anything from replacing my wifi card.
> And besides these obvious and visible firmwares I have no clue what
> other non-free firmware is running on my laptop.
While security is important, it's far from being the only reason that
makes free software important.
When security and freedom conflicts, I usually prefer freedom.

That said, if you care about free software only for the security and
privacy benefits:
- With Respect Your Freedom(RYF) certified computer, firmware freedom
  matters a lot.
- Not considering non-free firmware as an issue and having most FSDG
  distribution users run them would make freeing firmwares appear way
  less important.
  Most GNU/Linux users aren't even aware of hardware related freedom
  issues, because it just works. According to many of them the ATI GPU
  can be used with fully free software, and some even think that
  everything in their distribution is free software.
  This doesn't help promoting the importance of having free firmwares,
  and way less developers would want to work on their replacement.
  More broadly, users that need the hardware to work would not care
  anymore about free firmwares anymore either.
  To successfully convince Atheros to liberate the firmware of the
  ath9k_htc compatible chips, thinkpenguin probalby needed a valid
  buisness case, which probably was selling USB WiFi dongles to users
  that desperately wanted WiFi to work with free software.

> While obviously you understand hardware and the hardware you are
> using, most people do not. And I think we need to make sure that
> people that don't - I consider myself being one of those people - can
> do the *best* with what we have and have the information available to
> us to make informed decisions.
I think that not using non-free firmwares is the best decision for all
users collectively. If more users and developers were taking that
decisions, we would not have the issue we have here:
- You have hardware that doesn't work because it requires non-free
  firmwares.
- Many non-free firmwares aren't being replaced because there is not
  enough interest in replacing them, because many GNU/Linux
  distributions still ship non-free firmwares and it works for their
  developers and/or users.

The more interest in free software replacement, the more probability
there is to have them replaced with free software.

> I bought my dell xps developer edition before I had any involvement
> with a GNU project, and I bought it because dell was actually
> providing at least some kind of linux support. I currently can't
> afford to buy a new laptop even if the one you are using is much more
> free.
You may be able to find cheap or gratis laptops supported by the
libreboot project but it will require you to spend time for that, with
no guarantee of success.
As for how cheap it can get, I bought a Lenovo
Thinkpad X60 for about 50E. The downside is that, at that time, I was
lucky to find it that cheap, and that its CPU is single core. Since I
bought it to use it for coreboot/libreboot development/testing only, I
didn't need a fast CPU.

> Besides I have the dream of building a replacement mainboard
> with a RISCV SoC for it. But that is still beyond my capabilities :)
> FYI: This dream mainboard would also feature a software defined radio
> [0] instead of a wifi card - another interesting free hardware
> project, although the sources have not been released yet.
RISCV is probably not yet ready to be used as a laptop SOC. However
there are some microcontrollers projects with that architecture:
- https://www.crowdsupply.com/onchip/open-v
- https://www.crowdsupply.com/sifive/hifive1

As a side note, if you think that microcontrollers are not very
useful, think again because, since you have some interest in security
and probably privacy as well:
- Microcontrollers can have critical security functions, as it is the
  case in this computer: https://www.crowdsupply.com/design-shift/orwl
  They can also be used for password external management.
- We probably have the Hardware description language source for it
  under a free software license.

> Another thing I found very frustrating was a conversation that I had
> on IRC. It went like this:
> 
> Can guixsd run on a RPiv2?
> 
> Yes, sure. You'll need to use vanilla linux and add some firmware,
> I'll show you how to do it.
> 
> No thank you. I don't want to use binary blobs. I'll just use another
> distro until guixsd works without binary blobs.
> 
> I expect that everyone recognizes the irony in that.
I don't. I don't see any issue with the above assuming that non-free
firmwares are the only difference between the "other distro" and the
free software distribution.

Missleading users into thinking that th

Making technology more inclusive Was: Leaving the GNU Guix community

2021-05-01 Thread Denis &#x27;GNUtoo7; Carikli
On Fri, 30 Apr 2021 01:43:37 +0200
Leo Le Bouter  wrote:

> I think that the technicality of software development must be
> redefined so that the hierarchy between the experienced and the
> beginner disappears [...]
I've been thinking a lot about these topics, and there are radical
solutions that can work today, but the scope is quite limited.

Sadly, technology in general is way too complex to enable any individual
to be able to practically exercise the freedom to modify how it works
at every level: For instance, computer hardware is way too complex, not
everyone is able to modify how the RAM initialization is done in
Libreboot. And that's just for the software side that is visible to
users. There is also a big interest in modifying how the hardware
works, for instance by making custom CPUs on FPGAs, which again
requires domain specific knowledge.

Despite that, several indigenous communities run their own GSM
networks[1] and while doing that at least some of them seem to have
managed to do what you are talking about (remove power relationships
between the people with specific knowledge and the people without that
specific knowledge):
- The people running the network have to obey what the village assembly
  decided. So everybody decide together with the people running the
  networks.
- They also managed to have the protocol modified for them at a deeper
  level[2] to make their GSM network behave more like peer to peer
  networks between villages instead of the way GSM networks are
  typically deployed.

Note that in this example above many of the communities that run their
own GSM networks didn't chose (yet?) to have Internet access for
instance so the scope is quite limited.

Things get more complicated when trying to bring this amount of control
down to every single individual for every aspect of every digital
technologies. And many people have personal computers this also looks
important to reflect on.

The approach taken by lisp machines was interesting: it enabled users to
practically modify all the source code (most or all of it wasn't free
software if I understood right). They used CPUs made specifically to
run lisp code to do that but as I understand the downside was that,
even if most of the code was in lisp, there was probably still some
code in assembly or other languages as the lisp interpreter was
probably not written in lisp.

Another approach that I find interesting is the one taken by operating
systems like OpenBSD (which is not FSDG compliant) where the design is
much more simple. The downside is that it lacks many functionalities
that some users might miss.

Hyperbola (which is FSDG compliant) is working on a new operating
system which will reuse the OpenBSD kernel, so it might be interesting.

Here the bar is probably higher as it requires to be able to write C to
modify the kernel, but at least some part of it looks a lot more simple
than Linux. For instance if we compare OpenBSD's pledge system call and
Linux's secomp, pledge is only one driver in the kernel whereas secomp
also requires a compiler and so on. And more importantly, software is
being written to take advantage of secomp, so I guess that at least in
some cases some people depend on secomp because of that.

One approach which seems to also have been taken by Guix is to work to
make it more simple to modify how things works. Since lisp is parsable
it might even be possible to write graphical user interfaces (in lisp
for instance) to enable users to modify how the system is configured,
how it works, etc.

But the downside is that it still depends on complex code in the
software it packages (like linux-libre, gcc, etc).

With learning, there are also interesting approaches used for learning
concepts used in digital technology (like the concepts used by git,
etc)[3] which could potentially enable more people to be able to modify
the way technology works, but it also requires time.

And for hardware, we start to have ISAs like RISCV or PPC64LE that can
at least be implemented with designs under free licenses. So it could
potentially open the door for more simple hardware, but that hardware
also needs to be fast and not too expensive or complex to produce, so
it could also not work out because of that.

So I'm really wondering where we could go with all that, could it all
become step by step, incrementally more accessible when combining
several of these things together (like better teaching + more simple
software and hardware)? Or do we really need to re-do it from scratch
to make technology accessible? Or change the way we live and interact
with technology to make it fit people instead of having people be
required to fit technology?

Unfortunately I don't really have a deep enough vision on this topic to
know which step to take in advance so I've mostly resorted to the
incremental improvements, hoping to advance things in the right
direction up to the point where it could work well enough or show us
its limit and push us to fin

Re: Effectively force all GNOME users to locally compile ZFS?

2021-11-19 Thread Denis &#x27;GNUtoo7; Carikli
On Sat, 3 Jul 2021 21:46:29 +0100
Domagoj Stolfa  wrote:

> Hi:
> 
> On Sat, Jul 03, 2021 at 10:16:54PM +0200, Tobias Geerinckx-Rice wrote:
> > Maxime,
> > 
> > Maxime Devos 写道:
> > > 
> > 
> > That's a very good idea if possible.
> 
> Why can substitutes not be offered for ZFS as a standalone module?
> I'm not a lawyer nor do I understand much lawyerese, but AIUI, the
> problem stems from the FSF lawyers thinking it wouldn't stand up in
> court to distribute CDDL software linked against GPL'd software as
> one big binary. Could someone please explain why it would not be
> acceptable to distribute substitutes of ZFS as a *standalone kernel
> module*, rather than as a part of linux-libre?
- The ZFS kernel module is a derived work of Linux.
- Linux is under the GPLv2 and compatible licenses.
- The ZFS kernel module has code that is only available under the
  CDDL license.
- The CDDL license is incompatible with the GPLv2.

So while I can change the license of Linux for any license I want and/or
make derived work under incompatible licenses for fun on my laptop, I
can't redistribute that work. Even in source code form[1].

The same applies to the ZFS kernel module source code and binaries.

And so because of that images with gnome can't be redistributed without
violating the GPL. And the corresponding source of the ZFS package is
also violating the GPL.

So the question is how to deal with it in Guix. 

We need to remove that kernel module from Guix, but the question is how.

In Parabola there is a mechanism to produce patched source releases of
software. 

Is there something in Guix that could produce a modified source code
tarball (without the kernel module code) that users could download with
guix build --source? Or do we need to patch the source?

I think we really need to fix that, at least in FSDG distributions
because if for some reason we start depending functionalities that
violates the GPL GPL, we would then have some strong interest in having
the GPLv2 be void and unenforcable.

Alternatively we could start working on and/or funding a ZFS driver for
Linux that is compatible with the GPLv2+, but I really wonder if it's a
good use of resources given that we now have an equivalent filesystem
(BTRFS), and that doing that is probably a lot of work which might even
never get done in the first place.

In addition, that ZFS kernel module doesn't build for i686 because
apparently there is no Makefile for that architecture. So depending on
it probably makes gnome only usable for architectures supported by that
kernel module.

Denis.


pgpTYndpe_Sg4.pgp
Description: OpenPGP digital signature


Re: Effectively force all GNOME users to locally compile ZFS?

2021-11-20 Thread Denis &#x27;GNUtoo7; Carikli
On Sat, 20 Nov 2021 03:34:26 +0100
Tobias Geerinckx-Rice  wrote:

> Hi Denis,
Hi,

> but did you mean to include a reference to someone who disagrees? 
I forgot to look for references on that.

> Denis 'GNUtoo' Carikli [wrote]:
> > Even in source code form[1].
> That's not the general consensus at all
On what part precisely is there no consensus?

In my statement here, the and/or conflates several issues together:
> So while I can change the license of Linux for any license I want
>and/or make derived work under incompatible licenses for fun on my
>laptop, I can't redistribute that work. Even in source code form[1].

Here I assume that the fact that the GPL and the CDDL are incompatible
as the FSF already made a statement about that[1]. I didn't check that
in details but I assume that there is some consensus on that.

Also, if I take Linux source and I change the license to CDDL, for
instance by changing all licenses headers to add the CDDL instead of
the GPL and redistribute it as-is, I hope that at least on that there
is some consensus[2] on the fact that this is not legal.

If instead I take Linux source code and add files under the CDDL (like
the ZFS driver in it) and says that this version of Linux is under both
the combination of the CDDL and the GPL, this is not legal either
because both licenses are incompatible[2]. I hope there is some
consensus here too.

If I take individual drivers from Linux which are under the GPLv2 or
the GPLv2 or later, and I combine them in a new combined work on a new
git repository with code under the CDDL license, this is not legal
either. And here too I hope that there is some consensus on that too.

So the question here is probably (if I understood correctly): if I
write a driver for Linux under an incompatible license (like a nonfree
license or the CDDL), and that it's clear that this driver is deeply
linked to Linux (it's not an userspace program like ls or cp that simply
uses Linux syscalls), and that I distribute the driver source code in a
separate way (like in a different tarball or in separate git?), is it
still a derived work of Linux? Does the Linux license still applies?.

Here I don't see how the mode of distribution is changing things at
all: I don't see why distributing code in a different tarball or
git repository makes any difference. Code from Linux is still being
used even if it's not redistributed within the tarball or git
repository.

How both project (Linux and the ZFS driver) are interfaced together is
what define the derived work boundary, not the way it's distributed, and
if we add the projects licenses to the equation, we can therefor know if
it's legal or not.

As for the boundary, Linux makes it clear (in the form of a
license exception[3]) that userspace programs using syscalls are not
derived work from Linux, so here we have a practical example[8] that
show the impact, not of the way it's distributed, but the impact of the
interface between programs / code.

And in general projects statements[4][5] can be important to know what
is considered a derived work or not.

And here, to work, that ZFS module has to be compiled with the Linux
kernel and it has to be linked to it at runtime. And it can only work
with code that is part of Linux, so I really don't see how it cannot be
considered as a derivative work.

If instead I want to write a driver for a nonfree operating system like
(for instance Microsoft Windows or any other nonfree operating system)
under the GPLv2, I can still do it if I'm the author of that driver: to
do that I would license my code under the GPLv2 with an exception that
enables anyone to link it to that nonfree operating system or kernel.

For a more concrete example, I can release code under the GPLv2 that
use a library under the Apache2 license if I wrote the GPLv2 code by
adding an exception for that. For instance I did that in a program
that I wrote to enable people to also use it under the GPLv2[6].

The key point here is that I can only do that because I'm
the copyright owner (I wrote that code, and I'm not employed by
anyone). So I can add the license I want on that code, and that license
isn't the GPLv2 (or later), instead it's the GPLv2 (or later)
with an exception (to enable to link against code under the Apache
license).

If I don't own the copyright on code, I cannot change the license of
that code. So I can't simply take Linux and add exceptions to it. Or I
can't take ZFS code under the CDDL and add exceptions to it.

And as I understand it, we cannot even change the licenses and
copyright of code released under non copyleft free software licenses
like the MIT/Expat license or the various BSD licenses.

I don't recall the details but I think that this happened during the
integration of the ath5k driver in Linux at some point (it came from
OpenBSD): At the end the orig

Re: ZFS part of Guix? RFC? (Re: Effectively force all GNOME users to locally compile ZFS?)

2021-11-22 Thread Denis &#x27;GNUtoo7; Carikli
On Sun, 21 Nov 2021 11:54:15 +0100
"pelzflorian (Florian Pelz)"  wrote:

> Hello Denis.  Thank you for your write-up.
Hi,

> raid5atemyhomework wrote patches to add ZFS to Guix
> <https://issues.guix.gnu.org/45692>.  I put them in CC.  That there is
> no decision on ZFS and their patches is bad.  Maybe their patches
> would be for the RFC model to decide?
> 
> As for Denis’ arguments
> <https://lists.gnu.org/archive/html/guix-devel/2021-11/msg00101.html>:
> 
> IANAL but I would dispute this:
> 
> On Sun, Nov 21, 2021 at 02:33:24AM +0100, Denis 'GNUtoo' Carikli
> wrote:
> > If I take individual drivers from Linux which are under the GPLv2 or
> > the GPLv2 or later, and I combine them in a new combined work on a
> > new git repository with code under the CDDL license, this is not
> > legal either. And here too I hope that there is some consensus on
> > that too.
> 
> If we are talking about source code, the GPLv2 files and the CDDL
> files are not intertwined into a combined work at all.  They are just
> in the same git repo on the same file-system.
Just adding GPLv2 and CDDL files in the same repository should not be a
problem as far as I know. 

For instance you can have a kernel module under the GPLv2, and a
userspace tool under the CDDL license that doesn't use code from the
GPLv2 driver, and in that case both don't constitute a combined work.

If the userspace tool uses syscalls from the kernel, the kernel headers
license has an exception for that so it shound't be an issue either.

However I've reviewed a bit the ZFS kernel driver and some files are
under the CDDL license, and that driver also uses functions from the
Linux kernel, and it needs to be directly linked to Linux to uses these
functions.

I didn't take into account the fact that the ZFS driver also has
GPLv2(+?) code or the structure of the repository because having
files under the CDDL licenses that are compiled in the ZFS driver and
having that driver use Linux function (through linking) is sufficient
to make sure that this is a combined work of Linux and that driver.

And since Linux's GPLv2[1] and the CDDL[2] are incompatible, even in
source code form the ZFS driver is not legal as it violates Linux's
GPLv2 license.

Adding extra layer(s) of indirection with code under GPLv2 compatible
licenses won't change anything here as the ZFS driver links with Linux
anyway and it uses functions in Linux.

As for the GPLv2 in the ZFS driver, in the module directory of
zfs-2.1.1, we have several files under the GPLv2 license or compatible
licenses.

If I "grep -i gpl" in the module directory, it gives several files, but
all the files I found are OK with that are OK with regard with the
GPLv2:
- lua/lapi.c has 'ZFS_MODULE_LICENSE("Dual MIT/GPL")', so we can can
  probably assume that GPL is the GPLv2 and use it under the GPLv2 here.
- The following files are under the GPLv2 or BSD 2 clauses, here we can
  use them under the GPLv2, so it's OK:
  - zcommon/zfs_fletcher_aarch64_neon.c
  - zcommon/zfs_fletcher_intel.c
  - zcommon/zfs_fletcher_sse.c
  - zcommon/zfs_fletcher_superscalar4.c: 
  - zcommon/zfs_fletcher_superscalar.c
- Finally, zstd/zfs_zstd.c is under the BSD 3 clauses, and also has
  "ZFS_MODULE_LICENSE("Dual BSD/GPL");" inside. In any case that BSD
  license isn't incompatible with the GPL, and we can use the GPL in
  "Dual BSD/GPL", so we're good in either cases.

As for the problematic symbols, for instance dequeue_signal is exported
by Linux and it's used by the ZFS driver.

To find about that you can use the following command in a Linux git
checkout to find the list of exported symbols:
> git grep -P "EXPORT_SYMBOL(_GPL)?\(.*\);"

And then the idea is to grep for them in the module directory, and
check if they are reimplemented by the ZFS module or not.

Another way to do that check would be to look at the module (the .ko
file) with nm or a similar tool and look at the undefined symbols (U).

As I understand from what Bradley Kuhn told me, the EXPORT_SYMBOL_GPL
macro name is misleading and It doesn't mean that one can use symbols
exported by EXPORT_SYMBOLS without having to abide by the GPL, and I
need to look at EXPORT_SYMBOLS_GPL history to understand that in more
details.

But we don't need to do that either here as the dequeue_signal is
exported with EXPORT_SYMBOL_GPL anyway (it's in kernel/signal.c Linux)
and AFAIK it's not reimplemented by the ZFS driver either.

And I didn't check how many symbols from Linux are used but one is
enough to be an issue.

References:
---
[1] Many files that are being compiled in Linux are under the GPLv2
only or compatible licenses.
[2] The ZFS driver has code under the CDDL license that is compiled in
the ZFS driver.

Denis.


pgp3zoRSiktvQ.pgp
Description: OpenPGP digital signature


Re: ZFS part of Guix? RFC? (Re: Effectively force all GNOME users to locally compile ZFS?)

2021-11-23 Thread Denis &#x27;GNUtoo7; Carikli
On Mon, 22 Nov 2021 19:10:48 +0100
"pelzflorian (Florian Pelz)"  wrote:
> I don’t actually care about ZFS myself, but there should be a decision
> because I think current badly supported ZFS makes people here unhappy.
For people that really want the ZFS kernel module, would using an extra
channel for that be a big issue?

As I understand the ZFS module is already built from source so
maybe there is a way to make sure that everything that depends on zfs is
not rebuilt.

Or would there be other concerns for users of the ZFS kernel module if
the module is moved in an unofficial channel?

As long as the module isn't provided, it should also be safe to
maintain the rest (like the services), though I've no idea if doing
that in Guix is desirable or not.

Denis.


pgpE88TrMqbz6.pgp
Description: OpenPGP digital signature


Re: ZFS part of Guix? RFC? (Re: Effectively force all GNOME users to locally compile ZFS?)

2021-11-23 Thread Denis &#x27;GNUtoo7; Carikli
Hi,

On Tue, 23 Nov 2021 18:29:22 +0100
Ludovic Courtès  wrote:

> When consensus cannot be met, maintainers have the last say.
> 
> But again, my understanding is that there’s no new decision to be made
> here.
If I understood correctly Florian, the argument here is that it is safe
to redistribute source code under a GPL incompatible license that links
to GPL code because it's in source form?

Denis.


pgptAYKX6Bb82.pgp
Description: OpenPGP digital signature


Re: ZFS part of Guix? RFC? (Re: Effectively force all GNOME users to locally compile ZFS?)

2021-11-23 Thread Denis &#x27;GNUtoo7; Carikli
On Wed, 24 Nov 2021 00:50:04 +0100
Denis 'GNUtoo' Carikli  wrote:

> Hi,
> 
> On Tue, 23 Nov 2021 18:29:22 +0100
> Ludovic Courtès  wrote:
> 
> > When consensus cannot be met, maintainers have the last say.
> > 
> > But again, my understanding is that there’s no new decision to be
> > made here.
> If I understood correctly Florian, the argument here is that it is
> safe to redistribute source code under a GPL incompatible license
> that links to GPL code because it's in source form?
After having thought about it, I think I think I found a rationale that
could make sense.

Maybe it's because if the code is in source form, both code are not
combined in the same binary. 

If that's the case then it would also be legal to redistribute binaries
too as long as they are dynamically linked as the linking happens at
runtime.

And that should also not be limited to Linux. 

We could then through dlopen or any similar method reuse code from
one binary in the other because the linking is dynamic as long as both
binaries are not linked together statically?

Or am I on the wrong track here?

Denis.


pgpE4V5jiUsd6.pgp
Description: OpenPGP digital signature


Re: ZFS part of Guix? RFC? (Re: Effectively force all GNOME users to locally compile ZFS?)

2021-11-24 Thread Denis &#x27;GNUtoo7; Carikli
On Wed, 24 Nov 2021 13:03:18 +0100
"pelzflorian (Florian Pelz)"  wrote:

> On Wed, Nov 24, 2021 at 01:45:19AM +0100, Denis 'GNUtoo' Carikli
> wrote:
> > If that's the case then it would also be legal to redistribute
> > binaries too as long as they are dynamically linked as the linking
> > happens at runtime.
> 
> The FSF is unable to have such a position.
What I didn't understand is what magically made source exempt of the
GPLv2 requirement while binaries aren't.

For instance if I make a module for Linux and uses symbols for Linux:
- The source code uses code from Linux. But if it's distributed
  separately both are not combined. To be compilable, the source needs
  to use headers or function definitions from Linux.
- Modules being linked dynamically (=m) also use code from Linux and
  during the compilation, as I understand it, it only uses the headers
  and/or functions definitions that I mentioned above. So this case
  is not very different from the source code.
- Binaries being statically linked (=y) are being included in the Linux
  binary.

So from the GPLv2 side, I don't see what could make source code and
dynamically linked module that different as to justify different
applications of the GPL.

That article states that:
> Pure distribution of source with no binaries is undeniably different.
> When distributing source code and no binaries, requirements in those
> sections of GPLv2 and CDDLv1 that cover modification and/or binary
> (or “Executable”, as CDDLv1 calls it) distribution do not activate.
> Therefore, the analysis is simpler, 
So is it legal because zfs-on-linux is distributed as source and that
the CDDL license incompatible requirements are waived when it is
distributed as source? And that combining that work with GPLv2 code in
source form is OK because GPLv2 is not violated because the
incompatible CDDL requirements are only activated when distributed in
executable form?

If that's the case that would be the first explanation that
doesn't undermine copyleft that I come across, and that is OK for me.

If it's not the case then we have an issue and I think that we still
need to find a valid explanation that doesn't undermine copyleft and/or
get rid of the ZFS kernel module.

It also states that it's risky legally:
> Nevertheless, there may be arguments for contributory and/or indirect
> copyright infringement in many jurisdictions. We present no specific
> analysis ourselves on the efficacy of a contributory infringement
> claim regarding source-only distributions of ZFS and Linux. However,
> in our GPL litigation experience, we have noticed that judges are
> savvy at sniffing out attempts to circumvent legal requirements, and
> they are skeptical about attempts to exploit loopholes. Furthermore,
> we cannot predict Oracle's view — given its past willingness to
> enforce copyleft licenses, and Oracle's recent attempts to adjudicate
> the limits of copyright in Court. Downstream users should consider
> carefully before engaging in even source-only distribution. 
But as long as the rationale behind doesn't undermine copyleft, I've no
issue with it.

> It seems unrelated to the FSDG, so GNU Guix need not care.
The issue here is that I think that we need to find a valid and
plausible explanation that makes the ZFS kernel module source code legal
in a way that doesn't undermine copyleft.

And in some cases, laws or interpretations of laws that are undermine
copyleft might be good if they also brings systemic advantages to free
software: for instance if new laws makes all software free in
theory and in practice too (by also making sure that we have the
corresponding source code, or because we have tools to derive it from
binaries).

But here if we don't have a rationale that doesn't undermine copyleft,
what we gain here is just the ability to use a filesystem in the kernel
instead of using it through FUSE, so it's an awful tradeoffs for free
software.

But if we do have a rationale that doesn't undermine copyleft, it just
brings some legal risk, but doesn't undermine copyleft, so I'm OK with
that.

In the past and present, distributions also had/have to deal with
patents, anti DRM circumvention legislation, and many other legal
risks, and the consensus in the FLOSS community (at least for patents
and anti DRM circumvention) is that the choice of distributing risky
packages is to be made by the individual distributions and not the whole
FLOSS and/or free software community at large.

Denis.


pgp21tTZwt_eJ.pgp
Description: OpenPGP digital signature


Re: ZFS part of Guix? RFC?

2021-11-26 Thread Denis &#x27;GNUtoo7; Carikli
On Wed, 24 Nov 2021 12:02:11 -0800
Vagrant Cascadian  wrote:

> On 2021-11-24, Denis 'GNUtoo' Carikli wrote:
> > On Wed, 24 Nov 2021 13:03:18 +0100
> > "pelzflorian (Florian Pelz)"  wrote:
> >
> >> On Wed, Nov 24, 2021 at 01:45:19AM +0100, Denis 'GNUtoo' Carikli
> >> wrote:
> 
> https://sfconservancy.org/blog/2016/feb/25/zfs-and-linux/
> 
> > That article states that:
> >> Pure distribution of source with no binaries is undeniably
> >> different. When distributing source code and no binaries,
> >> requirements in those sections of GPLv2 and CDDLv1 that cover
> >> modification and/or binary (or “Executable”, as CDDLv1 calls it)
> >> distribution do not activate. Therefore, the analysis is simpler, 
> > So is it legal because zfs-on-linux is distributed as source and
> > that the CDDL license incompatible requirements are waived when it
> > is distributed as source?
> 
> Rather than "waived", they are simply not applicable. There is
> basically an "if" statement in the CDDL that triggers the
> incompatibility, and in the case of source-only distribution, the
> conflicting parts of the licenses do not come into play.

I've not checked that in details yet but for now I'll assume that this
holds (until proven otherwise).

While thinking about this very weird case of combining GPL and CDDL
code together, I wonder if the fact that we can't redistribute binaries
still makes it free software.

At least the free software definition doesn't have anything that cover
this specific case:
> The freedom to run the program as you wish, for any purpose
> (freedom 0).

> The freedom to study how the program works, and change it so it
> does your computing as you wish (freedom 1). Access to the source
> code is a precondition for this.

> The freedom to redistribute copies so you can help your neighbor
> (freedom 2).

> The freedom to distribute copies of your modified versions to others
> (freedom 3). By doing this you can give the whole community a chance
> to benefit from your changes. Access to the source code is a
> precondition for this.

But I wonder if a license that forbid binary redistribution would still
be considered free or not. 

And also conditions may apply to the specific case, for instance here
nobody has an alternative (including Oracle) for redistributing
binaries unless Oracle releases ZFS under a license fully compatible
with the GPL or that Linux is re-licensed (that would probably be more
complicated than rewriting ZFS from scratch).

Other cases like a vendor forbidding binary distribution to make its
users pay for nonfree licenses might be way more problematic.

Denis.


pgpLrFSk1HILf.pgp
Description: OpenPGP digital signature


Re: ZFS part of Guix? RFC?

2021-11-26 Thread Denis &#x27;GNUtoo7; Carikli
On Fri, 26 Nov 2021 16:28:04 +0100
Denis 'GNUtoo' Carikli  wrote:
> But I wonder if a license that forbid binary redistribution would
> still be considered free or not.
When we'll have more infos on if that is free or if we consider it as
free until proven otherwise, we still have two remaining issues to deal
with:
- On some architectures (for instance i686) the kernel module doesn't
  build. Should we disable the module? Add support for these
  architectures? Or disable zfs as a dependency of Gnome?
- Images with the zfs modules won't be redistributable. So if we keep
  the ability to build the zfs module, would it be possible to add
  opt-in or opt-out settings to make sure that the images are still
  redistributable without violating the GPL?
  Or will all users always need to use transformations for that?

Here's the build error I have with i686:
> make -C
> /gnu/store/c5n1drdj3j780r6yxnqfldifkmwdz01d-linux-libre-module-builder-5.14.21/lib/modules/build
> M=`pwd`  CONFIG_ZFS=m modules make[3]: Entering directory
> '/gnu/store/c5n1drdj3j780r6yxnqfldifkmwdz01d-linux-libre-module-builder-5.14.21/lib/modules/build'
> arch/x86/Makefile:78: arch/x86/Makefile_32.cpu: No such file or
> directory make[3]: *** No rule to make target
> 'arch/x86/Makefile_32.cpu'.  Stop.

Denis.


pgplquChDFwav.pgp
Description: OpenPGP digital signature


Re: ZFS part of Guix? RFC?

2021-11-27 Thread Denis &#x27;GNUtoo7; Carikli
On Fri, 26 Nov 2021 12:34:55 -0800
Vagrant Cascadian  wrote:

> On 2021-11-26, Denis Carikli wrote:
> > Or disable zfs as a dependency of Gnome?
> 
> This specific point is a bit dated; the issue was both introduced and
> shortly after reverted in early July:
> 
>   61ccd756e5ff73b2f8dc3449df537f1c5adb5872 gnu: libvirt: Support ZFS.
>   3fb6c96106df85ba47f8fea34b224071bd75a1b4 Revert "gnu: libvirt:
> Support ZFS."
> 
> Basically libvirt is a dependency of gnome-boxes, which is a
> dependency of gnome, as I understand it, which is why the initial
> topic was mentioning GNOME at all...
Thanks a lot for the info. I had that issue long after July, like I
still had it few months ago.

I've now retried to use guix system reconfigure and the issue is now
gone. It might be becuase of some issue / bugs with or within my
setup[1] though.

References:
---
[1]I've a dual boot between Parabola i686 (that also has Guix) and Guix
SD i686 and I share /gnu and my home between both. 

Denis.


pgpZ0wLkkmq4G.pgp
Description: OpenPGP digital signature


Re: ZFS part of Guix? RFC?

2021-12-03 Thread Denis &#x27;GNUtoo7; Carikli
On Tue, 30 Nov 2021 15:22:04 +
raid5atemyhomework  wrote:

> Hello Denis,
Hi,

> > While thinking about this very weird case of combining GPL and CDDL
> > code together, I wonder if the fact that we can't redistribute
> > binaries still makes it free software.
> 
> AS I understood from early writings of GNU ---
> 
> "Freedom" here is the freedom to modify how *the hardware you
> purchased, which is supposedly your own*, works.
> 
> In principle, "binaries are enough", because you *can* modify
> executable binaries, and until Tivoization you could thus modify how
> the hardware you purchased and is supposedly owned by you works.
> However, early GNU writers (RMS I think?) noted that binaries are
> really awful and that you need source code in order to modify how
> your hardware work, unless you are willing to sacrifice a ridiculous
> portion of your life reverse-engineering executable binaries.

In case of binaries, when some people have the source code and you
don't, there is also an inequality and power dynamic: people with
source code have more power to modify the software than people without.

We can see some mention of a somewhat similar power dynamic in the GPLv3
for instance:
> But this requirement does not apply if neither you nor any third
> party retains the ability to install modified object code on the User
> Product (for example, the work has been installed in ROM).

And it seems that in the weird case of zfs-on-linux, that power dynamic
at least doesn't apply directly as nobody can redistribute binaries
unless they are the copyright holder of ZFS and redistribute it all
under licenses fully compatible with the GPLv2.

Though one could also argue that not everybody is equals when breaking
the law (so here when redistributing binaries) but that's probably out
of scope here as we only (re)distribute source code here.

> Thus, the essential freedom is preserved (users can fork ZFS and
> point their personal ZFS package definition at their fork), even if a
> legal snag prevents redistribution of binaries.
Good point.

> I am well aware that *somebody* at Sun Microsystems screwed up by
> inventing the CDDL and putting the excellent ZFS under the CDDL and
> that is certainly a very cringey decision, but I want my hardware to
> work how I want it (i.e. without RAID5 write holes and memory buffer
> corruption bugs like in BTRFS "RAID5" mode) and not having ZFS on
> Guix is not helping that essential freedom.

I also wonder if we have a way to fix that issue for good somehow.

It would be neat if somehow the copyright holder of ZFS redistributed
zfs-on-linux binaries at some point (for instance by redistributing the
Ubuntu kernel). As I understand this wouldn't automatically make that
code GPL compliant but we could probably manage to force the copyright
holder to re-release the ZFS code under GPL compatible licenses.

Rewriting the ZFS code under GPLv2 compatible licenses also looks
possible as GRUB has a GPLv3 implementation of ZFS, but it's probably
still a lot of work. It would have been a way better idea for Canonical
to hire people to do that (like the people that worked to add ZFS to
GRUB) rather than trying to circumvent the GPLv2[1][2].

References:
---
[1]https://sfconservancy.org/blog/2016/feb/25/zfs-and-linux/
[2]https://ubuntu.com/blog/zfs-licensing-and-linux

Denis.


pgp7YN1DhEZLJ.pgp
Description: OpenPGP digital signature


Re: [GNU-linux-libre] [PATCH] gnu: Add ungoogled-chromium.

2019-02-18 Thread Denis &#x27;GNUtoo7; Carikli
On Sat, 16 Feb 2019 12:16:41 +0100
Gábor Boskovits  wrote:

> It seems to me, that there is a whole bunch of people interested in
> this, but due to lack of resources or for some other reasons nothing
> is really happening. Do you know any we we could help getting this
> resolved?
This is a very good point.

I also wonder if at the end, working to fix the problem by reviewing
chromium source code more carefully would take less resources than
discussing endlessly on how to deal with the fact that the source code
hasn't been reviewed.

Denis.


pgp5Jwx_cHBQn.pgp
Description: OpenPGP digital signature


Re: FSDG issues of SCUMMVM-based games

2023-11-24 Thread Denis &#x27;GNUtoo7; Carikli
Hi again,

On Tue, 20 Jun 2023 06:30:26 +0200
Liliana Marie Prikler  wrote:
> If in some one to five years we still find no practical way of using
> ScummVM with only free software, that might be a reason to remove it
> then.
With lot of help from anthk_ #hyperbola I finally found a practical way
to use it, and even without recompiling it, so we can keep ScummVM.

We need 3 repositories:
- https://jxself.org/git/inform.git GPLv3+
- https://jxself.org/git/devours.git AGPLv3+
- https://jxself.org/git/informlib.git (devours submodule) AGPLv3+

Here's how to do it:
> $ git clone https://jxself.org/git/inform.git
> $ cd inform
> $ gcc src/*.c -o inform
> $ git clone --recursive https://jxself.org/git/devours.git
> $ cd devours
> $ sed 's#inform#../inform#g' -i build.sh 
> $ ./build

That creates the devours.z5 file.

We can then start scummvm:
> $ scummvm glk:devours

And we can then choose "add game" and add the game in the current
directory and accept the warnings.

Then pressing start starts the game.

Denis.


pgpVkcUvYwhG5.pgp
Description: OpenPGP digital signature


Re: [GNU-linux-libre] MAME emulator is giving incentive to use non-free software

2016-04-02 Thread Denis &#x27;GNUtoo7; Carikli
On Wed, 30 Mar 2016 16:30:17 -0600
Isaac David  wrote:

> Hi,
Hi,

> My view was that while useless in a 100% free environment just
> having them installed and inspecting their user interfaces wouldn't
> violate your freedom in any way. A free emulator with free
> dependencies wouldn't be unethical unless it recommended using
> proprietary software with it. However in the last few days I have
> seen many arguments showing there are yet more valid uses I hadn't
> imagined, like learning from the source code and testing portability
> without leaving your comfy libre OS.
Just requiring documentation that shows how at least one valid use case
(that works) while remaining 100% free would be great:
It would fix the issue for good, while improving users freedom by
limiting the steer towards non-free software that such virtual machines
create.

For instance:
- For qemu, libvirt and so on, we would ship or point to documentation
  explaining how to run a 100% free software distribution like Trisquel.
- For wine we would document compiling and running of a 100% free
  software.
- For emulators, unless 100% free distributions do exist for the
  machines they emulate, we'd document how to compile and run an
  application or game.
- For emulators that have no 100% free games but that have a toolchain,
  we could document how to do compile and run a hello world. That would
  count as 100% free software compiling and running.

> Meanwhile other emulators and wine are completely out of the
> question because there's free applications for them, even though
> using the non-free ones is more common.
I don't doubt that, however is it possible to compile and run such
applications 100% free? Since some GNU software is ported on wine, I
would guess that there is a way to do it, but I've no proof.
I fear that some free software applications would include some non-free
runtime libraries. Given how poorly I know non-free OS, I've no idea if
it's a legitimate concern.

> Parabola documents emulators extensively in a wiki page.
Should we document how to compile and run free software there, or
should we ship that documentation with the package?
In the former case, should we point the user to the wiki page at the
end of the package installation, in the case of Parabola.

Denis.


pgpcmg1xj314Y.pgp
Description: OpenPGP digital signature


Re: [GNU-linux-libre] MAME emulator is giving incentive to use non-free software

2016-04-02 Thread Denis &#x27;GNUtoo7; Carikli
On Tue, 29 Mar 2016 16:31:40 +
alírio eyng  wrote:

> these are the approaches i can think:
> *extremely conservative (eliminating false positive errors)[1]
>  removing all emulators
> *conservative (eliminating false positive errors)[1]
>  make packages/executables like game1-emulator1, game1-emulator2, ...
> and not allowing direct emulator installation/execution
> *liberal (avoiding false positive errors[1] and false negative
> errors[2]) allowing all emulators with free games know
> *extremely liberal (eliminating false negative errors)[2]
>  allowing all emulators
Why not just requiring some documentation along the emulator that
documents at least one fully free software that can run on it.

That software would have to be able to be built and run 100% free
software.

Making that documentation available and known to the user will steer
that user toward free software.

Denis.


pgptMGZj3pQ7E.pgp
Description: OpenPGP digital signature


Re: [GNU-linux-libre] MAME emulator is giving incentive to use non-free software

2016-04-05 Thread Denis &#x27;GNUtoo7; Carikli
On Sat, 2 Apr 2016 08:48:58 +
alírio eyng  wrote:

> On 4/2/16, Denis 'GNUtoo' Carikli  wrote:
> > Why not just requiring some documentation along the emulator that
> > documents at least one fully free software that can run on it.  
> this is missing some complexity:
> we don't want something better done natively (we exclude
> ndiswrapper)[1] but we still want to allow introducing free software
> on nonfree platforms[2]
My point was that documentation (and packaging as you point it) can
steer users towards free software.

The goal of the software may even be altered this way, if it cannot
be used fully free with its regular uses cases.

The former case might be faster to do, but getting it right would be
difficult since the user would have to be aware of that documentation.

Which one to do would then depend on the context.
For instance with qemu and libvirt, the software was modified not to
steer users towards running non-free GNU/Linux distributions.

While unrelated, the case of debootstrap is also interesting, since, on
parabola, it by default debootstraps free software distributions.
References and configuration related to non-100%-free distributions
were removed.

> i think packaging is better than documenting, shouldn't be much more
> effort
Right, I assumed documenting was way faster. I was probably wrong.

> but this doesn't address the problem of discernment
> example: i can go to [3] and see there are four games, i know they are
> free because they are inside a free distro frontier
> if users need to exit the free distro frontier, they probably will
> find nonfree and free games and don't see much difference
> the ideal would be to have a comprehensive set of games packaged
> inside the free distro frontier
The documentation would have had to take that into account.
I was thinking of something along the lines of HOWTO that you find in
the documentation of the distributions. Such as list of commands that
would explain how to do it, while making sure that freedom is preserved.

But as you pointed out, packaging might be faster and easier.

> hiding the emulator executable/package
I don't understand what it means.

> would warn when they are exiting the free distro frontier and poke
> them to add free games to the distro (suggesting to developers or
> sending patches)
That is very similar to documentation for me.
We might also want to do that on the parabola wiki, trying to implicate
people who might want to use such emulators.
Example: Why is  not in Parabola
 |-> 

> alternatively, forking all emulators and creating a
> free community around them would also provide a freedom frontier
That is nice too. Uzebox seem in the right direction with that.

Denis.


pgpwHbNAKbibc.pgp
Description: OpenPGP digital signature


Re: [GNU-linux-libre] MAME emulator is giving incentive to use non-free software

2016-04-09 Thread Denis &#x27;GNUtoo7; Carikli
On Mon, 4 Apr 2016 22:23:17 +
alírio eyng  wrote:

> Felipe Sanches:
> >MAME provides an interactive debugger  
> so mame is not just an emulator.
> it is a emulator, disassembler and debugger.
> this is relevant information i can't see in official documentation,
> thanks.
> 
[...]
> a interesting development environment is useful in itself and don't
> need free games.
> is there a similar environment to a current architecture?
community/qtspim 9.1.17-2
New user interface for spim, a MIPS simulator.

Denis.


pgpLepsBMner4.pgp
Description: OpenPGP digital signature


Re: Go Package with multiple subpackage

2024-10-18 Thread Denis &#x27;GNUtoo7; Carikli
Hi,

Sorry for the delay,

On Sun, 22 Sep 2024 13:21:30 -0400
Superfly Johnson  wrote:

> The Azure SDK for Go 
> (https://github.com/Azure/azure-sdk-for-go/releases) has many 
> sub-packages within the same directory and the guix import method
> won't work directly. I think the best solution for packaging the
> requirements for rclone would be to make the sub-packages individual
> guix packages using the url-fetch method instead of the git method.
> Each also depends on several sub-packages.
I had a similar issue with the matterbridge package which has about 500
dependencies that are not in Guix.

I verified most of the licenses for the dependencies with a combination
of recursive guix import and manually looking for the ones that weren't
detected.

And given the number of dependencies I was told that it was okay to
have them bundled in.

As I understand, packaging too many dependencies would create
complications for the maintenance.

Though the current situation is far from ideal as checking the license
of ~500 dependencies is also very time consuming and if problems
appears in newer releases it would be difficult to detect them.

Also note that we didn't know about the dependencies issues of
matterbridge when it got in, so maybe it played a role in the decisions
that was taken at the time.

Denis.


pgprjMq85h23z.pgp
Description: OpenPGP digital signature


Re: About Guix OS VM and Guix Package Management support request from Operating System developers

2024-10-18 Thread Denis &#x27;GNUtoo7; Carikli
On Thu, 17 Oct 2024 21:18:16 +0200 (CEST)
wearefromuniverse--- via  wrote:
> Hi,
Hi,

> For this we need to adapt Guix OS to replace fedora, the main
> operating system of Qubes OS. To run Guix OS inside VM Qubes we need
> a GNU Guix OS virtual machine. We need to ensure that this virtual
> machine can interact and communicate with other virtual machines and
> the host operating system through Xen technology, for which we need
> technical and software support from you.
[...]
> We also need open source volunteer developers to work on the software
> team. We are still a small community and we were founded 1 month ago.

The best way to do that would probably be to send patches directly to
Guix and to find people with commit access that are interested in
reviewing these patches.

As I understand Guix already has some Xen packages for instance,
but I've no idea how to use them. For instance the Guix manual doesn't
have anything at all on Xen. 

So finding out how to create a Guix VM compatible with Xen and/or
adding the missing support/documentation for Xen and sending relevant
patches to Guix (like to its cookbook or documentation) could be a good
start. It is also possible to add definitions for VMs inside the
Guix source code as well, and to reference that from the
manual/cookbook.

If you also need a fully free distribution that already supports
running Xen VMs easily, Trisquel 11 can probably do that.

I tried it personally on a ThinkPad X200 to understand if Xen worked
with a boot software distribution I co-maintain: I installed the
xen-system-amd64 and libvirt-daemon-driver-xen Trisquel packages and
rebooted and after that virt-manager could find the local Xen
hypervisor. I don't remember if I needed to add my user in some group
or not and I already had virt-manager and libvirt installed.

However I didn't go further as I lacked a Xen compatible VM to
completely validate that Xen worked for real.

Also note that I'm not a Guix maintainer. I'm just a user who also
contribute from time to time, and I also reuse Guix in other projects I
co-maintain / contribute to.

Denis.


pgp4xhL3cAJKx.pgp
Description: OpenPGP digital signature


Re: 1.5.0 release?

2024-10-18 Thread Denis &#x27;GNUtoo7; Carikli
On Tue, 10 Sep 2024 18:21:17 -0400
Greg Hogan  wrote:

> With Guix embracing the chaos of rolling releases, and a presumption
> that users will `guix pull` soon after installation, I count only
> three motivations to tag a new release: 1) replacing an old release
> with an outdated Guix unable to self update, 2) security fixes for
> installation packages so as not to be immediately pwned, and 3)
> minimizing the number of replacement installation packages (especially
> after core packages updates).

There is also at least 1 project (GNU Boot, which I'm involved in) that
currently uses a released Guix version (Guix 1.4.0 for i686) to build
other software as the Guix manual for the latest release is easily
accessible and doesn't change much, so contributors can easily refer to
it.

It's not a big issue to workaround some things on top of a release but
if a complete language that we use is missing that creates a lot of
complications for us.

Bitcoin can also use Guix to build things but they seem to use an
arbitrary revision not based on any releases (guix 1.3 with lots of
commits on top). I've no idea if there are many other projects that
reuse Guix fixed revisions.

Another thing that may be relevant (not related to projects I'm
involved in) could be to somehow validate if all the architectures
supported by Guix work fine and maybe get important packages working on
them. Though note that I'm not a Guix maintainer and I don't have
commit access, so I can't participate in decisions on what is important
or not.

Denis.


pgp1VDgAZqngp.pgp
Description: OpenPGP digital signature


Re: Bootstrap a GNU source distribution from git

2024-10-05 Thread Denis &#x27;GNUtoo7; Carikli
On Tue, 01 Oct 2024 10:20:54 +
Tobias Geerinckx-Rice  wrote:
> >Since Guix also checks the hash of the source code an idea to improve
> >things could also be to modify Guix to allow the use of external
> >tools to bootstrap the download of source code through version
> >control and for instance download git from git.
> 
> I don't understand what you mean by this, or what 'modify Guix' means
> and why it would be needed?

We currently have something like that:
> (define-public git-minimal
>   (package
> (name "git-minimal")
> (version "2.46.0")
> (source (origin
>  (method url-fetch)
>  (uri (string-append
> "mirror://kernel.org/software/scm/git/git-" version ".tar.xz"))
>  (sha256
>   (base32
>"15bzq9m6c033qiz5q5gw1nqw4m452vvqax30wbms6z4bl9i384kz"
> [...]

If we replace with something like that:
> (define-public git-minimal
>   (package
> (name "git-minimal")
> (version "2.46.0")
> (source
>   (origin
> (method git-fetch)
> (uri 
>   (git-reference
> (url "https://git.kernel.org/pub/scm/git/git.git";))
> (commit "")))
> (file-name (git-file-name name version))
> (sha256
>   (base32
> "15bzq9m6c033qiz5q5gw1nqw4m452vvqax30wbms6z4bl9i384kz"
> [...]

Then we have at least 2 issues.

The first one is that we might end up with circular dependencies inside
the Guix source code somehow that creates issues when building packages
and/or guix, etc. But that might be fixable with some work.

However if I understand well, that circular dependency would not create
any security/reproducibility issue since we would already have a base32
hash of the source code of "git-minimal".

And so if for instance someone packages Guix on a foreign distribution,
we could imagine some system(s) where the the git source code is somehow
provided to Guix as a dependency, and so once built, Guix would be able
to use that provided source code by verifying its hash and then using
it to build git, and enabling Guix to download subsequent packages
using git.

This could then be extended to all the packages that git depend on, and
with that we'd then be able to use git a lot more without security
issues.

The downside is that as always someone needs to be interested in it,
and find the time to work on it. It also might make building Guix
harder.

Denis.


pgpRsdI92RclF.pgp
Description: OpenPGP digital signature


Re: Announcing shepherd-run

2024-11-03 Thread Denis &#x27;GNUtoo7; Carikli
Hi,

On Sun, 3 Nov 2024 15:19:04 +0200
Efraim Flashner  wrote:

> Announcing the initial release of shepherd-run!
> 
> Do you have experience with systemd and systemd-run? Do you wish you
> were able to quickly and easily add a simple service to your (user or
> system) shepherd instance?
> 
> Using the finest technologies from the 70's, written in gawk, I
> present shepherd-run!
Is there any plans to integrate that with Guix and Shepherd later on?

I'm thinking of uses cases like netctl which is an utility from Arch
Linux that is present in Parabola. Users define network profiles and
netctl somehow interact with systemd to setup the network.

Here for instance Guix system services or Guix home services are not
dynamic, and especially for the network it could make sense to have
different profiles.

As I understand netctl generates systemd unit files, so there is
also some similarities between netctl and shepherd-run.

Denis.


pgpDdFXboWuHc.pgp
Description: OpenPGP digital signature


Re: Running a Guix User and Contributor survey

2024-11-04 Thread Denis &#x27;GNUtoo7; Carikli
On Thu, 31 Oct 2024 16:44:22 +0100
Ekaitz Zarraga  wrote:

> I think we could do with Framasoft:
> https://framasoft.frama.io/framaforms/en/
The downside of framaforms is that they block Tor.

Denis.


pgpkATUAGHcJY.pgp
Description: OpenPGP digital signature


Re: Running a Guix User and Contributor survey

2024-11-04 Thread Denis &#x27;GNUtoo7; Carikli
Hi,

On Wed, 30 Oct 2024 12:03:26 +
Steve George  wrote:


Here's some feedback on the proposal below.

> # Audience
> The audience for this survey are all Guix users and contributors
> [^1]. This means:
> 
> - Guix user: anyone who uses all or part of Guix, whether as their
> operating system or hosted on another GNU/Linux distro.
> - Guix contributor: anyone who sends changes (patches) to the
> project. This includes code changes, but also other improvements
> including documentation, design and translation. This is an extensive
> group beyond those with commit rights.
> - Guix community: the totality of both groups.
Most Guix contributors are also users, so this may need to be reflected
in some ways.

> **Q1. How knowledgeable a Linux user are you?**
GNU/Linux would probably be better given the audience here.

>   - an official GNU FSF (Free Software Foundation) project
The distribution is certified by the FSF but it's a GNU package. The
FSF doesn't maintain the Guix package though.

So maybe this could be better:
> **Q5. Why were you initially interested in Guix?**
[...]
> An FSF certified 100% free software distribution.

I'm also unsure if it should be added to the list or not but being able
to install software on top of another distribution is a common use case
so that might be a reason to use it. And this can be done for a wide
variety of reasons (ship software to users, use it in some QA process,
etc).

I'm also aware that this option is also included in a question on how
we use Guix.

Denis.


pgpye57hUTK7b.pgp
Description: OpenPGP digital signature


Re: Go Package with multiple subpackage

2024-10-27 Thread Denis &#x27;GNUtoo7; Carikli
On Sat, 26 Oct 2024 23:11:17 +0100
Sharlatan Hellseher  wrote:

> Take a look at the current effort of unbundle (gnu packages ipfs) -
> kubo. Bit by bit and we nearly unweaved the rainbow.
Thanks a lot, that was the part that I lacked. I assumed I needed to do
all 500 at once because go didn't provide a way to partially unbundle
dependencies.

I'll try to reproduce that with matterbridge. I assume that it's OK if
I add you in the list of reviewers if/when I get something ready.

Denis.


pgp7JjYDlywen.pgp
Description: OpenPGP digital signature


Re: Go Package with multiple subpackage

2024-10-28 Thread Denis &#x27;GNUtoo7; Carikli
On Sun, 27 Oct 2024 18:56:11 +0100
Andreas Enge  wrote:
> Also, there is some magic in etc/git/gitconfig in the Guix
> repository: When you do a "git send-email" to guix-patc...@gnu.org
> with a commit touching any of the Go team files above, the team
> members will be automatically cc-ed.
Yes, this is exactly why I didn't notice that Sharlatan was part of the
team: this is done almost automatically now.

Thanks for the information.

Denis.


pgpvMgcucabNu.pgp
Description: OpenPGP digital signature


Re: Does anyone use i686-linux? [was Re: bug#67535: ci.guix.gnu.org 'Cannot allocate memory' while building for i686-linux]

2024-11-12 Thread Denis &#x27;GNUtoo7; Carikli
Hi,

On Tue, 12 Nov 2024 21:59:42 +0900
Maxim Cournoyer  wrote:
> Great.  That said, I wouldn't be against stopping building i686
> packages on our build farm.  Nobody has shown much interested in
> fixing the broken ones or hunting down test failures... it seems
> better to focus our energy elsewhere and clear the view in my opinion
> (such as old bugs on our bug tracker that lingers on)
> 
> So I'd be of the opinion to:
> 
> 1) Stop building i686 packages
> 2) Otherwise preserve the architecture in Guix source so that someone
> can at least build from source and hack on it if they wish, e.g. to
> test cross-building packages.
In GNU Boot we chose to use i686-linux as the system we build packages
for as this way we support both i686 and x86_64 (some of the computers
we support are still i686).

Though for now we fixed the revision to Guix 1.4.0 so it means that we
don't find regressions affecting newer revisions.

I also personally also depend on i686 computers (ThinkPad X60) that I
don't use every day but that are important for me: they hold the
signature key of my gpg key and they are way easier to secure than
x86_64 machines against evil maid attacks (the machines were audited,
and don't allow DMA from external ports unlike all the x86_64 machines
supported by GNU Boot). But here too they are not updated regularly.

So does it means that we ultimately need to run our own builder for
i686 or are there other options (like setting up our own CI, going back
to i686 to test builds (I was running i686 to be able to find and fix
what didn't work before), etc), using latest Guix revisions to test more
often, etc?

All the use cases above only require very basic software to work: we
don't need full blown desktop systems (that would probably require to
bootstrap rust and I didn't really manage to find a way that would work
in Guix).

Denis.


pgpLBpJwMlli6.pgp
Description: OpenPGP digital signature


Re: Bootstrap a GNU source distribution from git

2024-09-30 Thread Denis &#x27;GNUtoo7; Carikli
Hi,

On Sun, 29 Sep 2024 19:52:13 +0200
Vivien Kraus  wrote:

> GNU sources are usually shipped as tarballs with some pre-compiled
> sources included. This can be a bit scary at times, so the question
> now is, can we skip the tarballs and build everything from
> human-authored sources?
In some cases it is also possible to build from the tarballs and also
build everything from human-authored sources.

The solution to that is to treat the generated files as things that are
not wanted during the build and just delete them before starting to
build. It's similar to tarballs which also contain the binaries of some
of their dependencies (example: .so files, often with their
corresponding source code as well for licensing compliance).

In such case the answer of the distributions is simply to delete such
binaries before the build.

The advantage of these bundled binaries is that the same tarball makes
it possible for more people to more easily build the software but it
also increase the maintenance from the distributions as they need to
find and delete such files, so to me it doesn't look ideal. Having an
easy way to automatically delete such generated files safely could be a
good idea for source tarballs releases as both uses cases could be
covered with a single tarball release.

But this also brings an interesting questions that I also had myself but
I never really had the opportunity to ask them: what is Guix policy with
regard to source code when there are multiple providers (typically git
vs tarball)?

As I understand source from version control gives us the ability to
make some package transformation option work out of the box. For
instance we have:
> $ guix build \
> --with-commit=hello=2633763362586903cf6506f4c4d708727a981025 hello
> guix build: error: the source of hello@2.12.1 is not a Git reference

So is there some (implicit or explicit) rule to always prefer the
source from version control unless it's not possible or practical (no
version control being used, too complicated to build like with GNU
hello, or the package is required for the version control to work) ?.

Since Guix also checks the hash of the source code an idea to improve
things could also be to modify Guix to allow the use of external tools
to bootstrap the download of source code through version control and
for instance download git from git. Though that could require some
substantial work and discussions.

Denis.


pgp1qbxQE7IVo.pgp
Description: OpenPGP digital signature


Re: Go Package with multiple subpackage

2024-10-25 Thread Denis &#x27;GNUtoo7; Carikli
On Mon, 21 Oct 2024 16:18:56 +0200
Andreas Enge  wrote:
> > As I understand, packaging too many dependencies would create
> > complications for the maintenance.
> 
> Is that true? It looks opposite to the general Guix philosophy;
> once you have invested all the work of checking the licenses, it would
> seem a progress to submit the corresponding packages. But maybe Go is
> special in that respect; it would be nice to have the Go team's
> opinion.
One of the issue is also that I didn't find a way to have a path where
things are done step by step, so adding about 500 extra packages just
for the matterbridge package would be complicated I guess.

But in another hand using bundled in dependencies doesn't look great
either.

This also bring in more complicated questions as there is also some
tradeoffs made here. 

For instance here things are not fine with matterbridge but it's not
something a user can immediately see. So should we keep the package?
What would be the quality of the maintenance in the long run with
about 500 packages to update?

I've also no idea about how many go packages use bundled dependencies,
so maybe if there is a way to somehow un-bundle part of the
dependencies it could be a road to improve the situations as the
maintenance the dependencies shared by many go packages could be shared
somehow (assuming people do check that when updating things it doesn't
break other packages).

If packages also patch some dependencies, it would not prevent from
using non-bundled dependencies.

Another issue is that all that is statically built but that's part of
the default go compiler if I understood well, though given how Guix
works, it might easier to somehow use shared libraries (compared to
more standard distributions) if some compilers that support that since
we don't need very strict/strong ABI guarantees with Guix, and thanks
to that, reduce build times and resources consumption (like RAM, space,
etc).

Denis.


pgpGYX4gykbip.pgp
Description: OpenPGP digital signature


Re: Scaling issues with forges Was: Trying out Codeberg

2025-03-15 Thread Denis &#x27;GNUtoo7; Carikli
On Sun, 9 Mar 2025 17:26:07 -0400
Leo Famulari  wrote:

> And only using GPL2 is part of that. It's a pragmatic choice in favor
> of the goals of Linux's leadership team, which are different from
> GNU's goals. Of course, Linux couldn't feasibly change to GPL3
> because their copyright licensing model is like ours: contributors
> own the copyright to their contributions. There are too many people
> to ask for permission to make the change.
I heard something different about the GPLv3 and Linux.

It is possible to require to license things under GPLv2-or-later for
instance, so technically it is not a big issue. VLC also managed to do
license changes, as well as Openstreetmap.

As I understand, what happened instead is that Linux took a decision
against the GPLv3 on purpose for completely different reasons.

One of the reasons I heard was that if some software is under the GPLv3,
you can also make derivative works under the AGPLv3.

Another reasons I heard that is also related to that is that the lawyer
who tried to convince Linux to switch to the GPLv3(+) did it without
considering the interests of Linux itself (to put it lightly), so that
didn't go well because of that.

Another reason may also related to the anti-DRM provisions for consumer
devices inside the GPLv3.

And the first and the third reason might indeed be related to the
interests of the companies that fund work on Linux.

Denis.


pgpBaF6OQEmd8.pgp
Description: OpenPGP digital signature


Re: Guix on the MNT/Reform

2025-03-19 Thread Denis &#x27;GNUtoo7; Carikli
On Mon, 17 Mar 2025 12:30:29 -0700
Vagrant Cascadian  wrote:

> On 2025-03-16, Denis 'GNUtoo' Carikli wrote:
> > On Thu, 13 Mar 2025 00:37:09 -0700
> > Vagrant Cascadian  wrote:  
> >> I have successfully built and booted a
> >> linux-libre-arm64-mnt-reform@6.12 kernel on a "MNT Reform2 with
> >> RCORE RK3588 Module" ... running Debian, I know... but Guix System
> >> cannot be too far off! In theory it also supports the other MNT
> >> Reform platforms, but I have not tested!  
> > [...]  
> >> One could not be enabled due to DEBLOBBING the wifi drivers, and
> >> the other may need a closer look. Although the second was for a
> >> platform I am not currently using, so... :)  
> > What is the WiFi chip being used[1]?  
> 
> Heh. Hard to tell, because I am running linux-libre. :)
Using 'sudo dmesg' usually prints something with DEBLOBBED and the
driver name.

Another option is to use lspci like that:
> # lspci -s 02:00.0
> 02:00.0 Network controller: Qualcomm Atheros AR9285 Wireless Network
> Adapter (PCI-Express) (rev 01)
root@primary_laptop /home/gnutoo# lspci -s 02:00.0 -v
> 02:00.0 Network controller: Qualcomm Atheros AR9285 Wireless Network
> Adapter (PCI-Express) (rev 01)
>   [...]
>   Kernel driver in use: ath9k
>   Kernel modules: ath9k

> Looking at the card through the transparent case bottom (yes!):
> 
>   WLE200NX 7A
> 
> A quick search says some Compex dual-band wifi, but not sure what that
> translates to in linux driver terms...
> 
> The original MNT/Reform used the Atheros ath9k, if I recall correctly
> ... could possibly switch back to that too, presumably, if that has
> libre drivers.
It does. There are also ath9k compatible chips that support both
2.4 GHz and 5GHz. If you want WiFi to work in conferences or other
very crowded environments (like a flat with a ton of people) you need a
chip which support 5GHz.

> > An option could also be to upstream as much as possible of the DTS
> > somehow (basically only send the easy dts patches) to be able to
> > more easily track what is missing upstream and so find out why this
> > or that patches are really needed.  
> 
> Yes, that is indeed the eventual goal and best outcome, but for the
> near future we still have to use patches
Indeed, I was just pointing in addition to shipping a patched kernel
(which is required to make the hardware work), some very
limited upstream contributions are a good idea to get reliable
information on what patches are really required because things evolve
upstream.

Reading or trying to remove some of the patches you currently use to
try to understand the consequences is probably still be required anyway,
but just having that done doesn't provide some easy way to test things
on more recent kernel versions.

> There is some good news on that front, too:
> 
>   
> https://web.git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git/tree/arch/arm64/boot/dts/rockchip/rk3588-mnt-reform2.dts?h=next-20250317
Nice. I'm currently offline so I'll try to remember to take a look later
on. Also note that I don't have an MNT Reform but I'm very curious about
them.

Denis.


pgpUShjrTrmbu.pgp
Description: OpenPGP digital signature


Re: Guix on the MNT/Reform

2025-03-19 Thread Denis &#x27;GNUtoo7; Carikli
On Tue, 18 Mar 2025 14:36:23 +0100
"pelzflorian (Florian Pelz)"  wrote:

> Hello all; regarding dystopian direction;
> 
> Christine Lemmer-Webber  writes:
> > The modularity of the Reform design is the most hope I have for a
> > FOSS future on the otherwise largely dystopian direction of
> > hardware lately. Hopefully we will get better and better options
> > over time for the SoCs too.  
> 
> I guess DDR4 RAM suffers from board-specific cross-talk and that is
> the main reason for free software support getting worse.  Maybe
> firmware is made with proprietary board information to avoid
> cross-talk.  Maybe free firmware could be made with time-intensive
> testing of the particular board, each time the firmware is built.
> Maybe instead of the real board, a virtual board “digital twin” could
> be used for training, which would be free software if the virtual
> board would only coarsely resemble the real non-free board.
If I remember well what phcoder did for the ThinkPad X201, the trick to
write DDR3 RAM init was to make it work without optimizing anything at
first.

For DDR3 you need to do training to precisely configure the delays to
have good performances, but once how the RAM controller work is
understood, you could simply configure it to use very big delays.

Basically delays tell the RAM controller how much time it needs to wait
for all the signals to have arrived.

And to understand how the hardware works, tracing what nonfree binary do
is a possible option but it also require some software that can run the
blob in a way that can trace the hardware accesses. 

For instance in Coreboot there is something called SerialICE that can
run the nonfree BIOS and print the MIMO accesses for instance.

neox also wrote a paper on DDR3 RAM initialization for the KGPE-D16 but
it's not public yet (and it needs some improvements as well), so if you
want to help review it you need to write to him. Once released, it will
be published under one or more free licenses.

Compared to DDR3, DDR4 might require additional things, but similar
tricks could probably be used to at least make it work in non-optimized
ways first. For instance if we configure the RAM controller to be very
lax, then we might not need to re-calibrate constantly because of
temperature changes and so on.

> Maybe USB3 has similar cross-talk?
A lot of the hardware (HDMI, probably USB3) nowadays do require
training.

Denis.


pgpjIJNVknkT6.pgp
Description: OpenPGP digital signature


Re: Guix on the MNT/Reform

2025-03-24 Thread Denis &#x27;GNUtoo7; Carikli
On Wed, 19 Mar 2025 22:02:12 -0700
Vagrant Cascadian  wrote:
> Well, turns out that it was simply missing the kernel configuration
> for...
> 
> CONFIG_ATH9K=m
Nice.

> ... now it at least partly works and sees some access points, although
> there are issues that prevent associating successfully... I recall
> similar symptoms when using the ath9k_htc usb dongle before, and there
> was a workaround for it. Possibly related, reform-tools has this:
> 
>   
> https://source.mnt.re/reform/reform-tools/-/blob/main/NetworkManager/default-wifi-powersave-off.conf

Since you use a custom kernel, it is also possible to use a custom
configuration, so you could try to disable this option:
> config CFG80211_DEFAULT_PS
> bool "enable powersave by default"
> default y
> help
>   This option enables powersave mode by default.
> 
>   If this causes your applications to misbehave you should
> fix your applications instead -- they need to register their network
>   latency requirement, see
> Documentation/power/pm_qos_interface.rst.
I'm unsure if this is sufficient though as userspace can easily enable
it back.

For instance with iw, anyone can do:
> sudo iw dev wlp2s0 set power_save 
(I'm not sure if the interface needs to up or down though),

so I wonder if wpa_supplicant / NetworkManager or other userspace
tool/daemon do it automatically or not.

> I suspect only one of the supported GHz frequencies is enabled in the
> kernel too as it sees one access point but not another (and I forget
> which is which, they're on the same physical machine).  But at least I
> know this is likely to work with a bit more fiddling!

Here's how to find the supported frequencies:
> $ guix install iw
> [...]
> $ iw phy
> Wiphy phy0
>   wiphy index: 0
>   max # scan SSIDs: 4
> [...]
>   * 2412 MHz [1] (17.0 dBm)
>   * 2417 MHz [2] (17.0 dBm)
>   * 2422 MHz [3] (17.0 dBm)
>   * 2427 MHz [4] (17.0 dBm)
>   * 2432 MHz [5] (17.0 dBm)
>   * 2437 MHz [6] (17.0 dBm)
>   * 2442 MHz [7] (17.0 dBm)
>   * 2447 MHz [8] (17.0 dBm)
>   * 2452 MHz [9] (17.0 dBm)
>   * 2457 MHz [10] (17.0 dBm)
>   * 2462 MHz [11] (17.0 dBm)
>   * 2467 MHz [12] (17.0 dBm) (no IR)
>   * 2472 MHz [13] (17.0 dBm) (no IR)
>   * 2484 MHz [14] (17.0 dBm) (no IR)
Here I only have 2.4 GHz.

Denis.


pgpNTBD84DOMz.pgp
Description: OpenPGP digital signature


Re: Guix on the MNT/Reform

2025-03-20 Thread Denis &#x27;GNUtoo7; Carikli
On Tue, 18 Mar 2025 08:38:02 -0400
Christine Lemmer-Webber  wrote:

> The modularity of the Reform design is the most hope I have for a FOSS
> future on the otherwise largely dystopian direction of hardware
> lately. Hopefully we will get better and better options over time for
> the SoCs too.

It's also repairable so if there is enough interest people could work
on it during years for instance to make one of the hardware combination
boot with fully free software.

Denis.


pgpwZTLy2A5Y3.pgp
Description: OpenPGP digital signature


Re: Please don't leave GNU

2025-04-09 Thread Denis &#x27;GNUtoo7; Carikli
Hi,

On Sun, 30 Mar 2025 12:55:33 +0200
"pelzflorian (Florian Pelz)"  wrote:

> Your mail alerted me; I too hope but also believe there are no such
> plans to leave GNU.  Where have you heard?

There was a talk about the usefulness of integrating nonfree software
into Guix for instance[1], and I discussed with a Guix contributor
telling that the FSDG was too strict, so there is some concern, and
moving to a forge outside of GNU can also be interpreted as a step
toward leaving GNU.

However I've discussed with other people in Guix and they seem to
instead want to find ways to make everybody happy, and I also agree
with this strategy.

In practice it would mean that Guix itself will still respect the FSDG,
and so users that don't want to run nonfree software will see almost no
changes (or even improvements in freedom).

And for users that reluctantly need to use nonfree software would also
find that to be easier.

An example would be to switch from linux-libre to some 100% free linux
kernel that doesn't block nonfree firmware, so if users reluctantly
need nonfree firmware they would, on their own, add them.

However I think that the best situation would be to make it as easy as
possible to provide a complete distribution based on Guix, with a
website, releases with installation images, etc.

This way, if people use that to make new distributions based on
Guix, with a different name (something where people can't make
confusions with Guix, like Lax, Nerds, NerdX, Pix, etc), people
that reluctantly need nonfree software would use that instead and they
won't forget that they use nonfree software, they could find support
for it, and they would also know that the distribution they use is
based on Guix and that they can contribute to Guix as well.

And people that want to use only free software would not be pressured
to install nonfree software.

In addition, making it easier to reuse Guix would be a good thing
anyway.

Also note that Pantherx is already based on Guix for instance, but it
might not suit everybody, and I've not looked in details how it
compares to the creation of a distribution based on Guix and non-guix
for instance.

> There are not yet decided discussions that GNU Guix leave Savannah and
> Debbugs and replace them for Codeberg/Forgejo.
> 
> 
> > Guix has several drawbacks that, while trivial, make it worse than
> > Fedora Silverblue:
> >
> > * Guix asks for my LUKS password twice
> 
> Not sure of the current situation, but this was because GNU GRUB
> lacked support for passing on the unlocked LUKS device with a secure
> key derivation function or some such thing.  The fix should be made
> upstream.
Here's the configuration I use (in case that can help avoid trial and
errors):
> (bootloader (bootloader-configuration
>  (bootloader (bootloader (inherit grub-bootloader)
>[...]))
>  (keyboard-layout keyboard-layout)
>  (extra-initrd
> "/boot/keys/primary_laptop-key-file.cpio")))

And I generated this cpio with the following command
(primary_laptop.key is the keyfile):
> /boot/keys/primary_laptop-key-file.cpio: primary_laptop.key
>   @# It can work with sudo, but then we got errors like that:
>   @# make: stat:
>   @# /boot/keys/primary_laptop-key-file.cpio: Permission
>   @# denied
>   @if [ `id -u` != "0" ] ; then \
>   echo "You need root permissions. try sudo make $@" ; \
>   false; \
>   fi
> 
>   echo primary_laptop.key | cpio -oH newc > $@

Also note that I use GNU Boot, so I've not tested that with the regular
GRUB.

With:
> Except for guix pull and similar commands, is that really true?  The
> installed software is like in other package managers.
And:

On Sun, 30 Mar 2025 20:51:03 +0200
Tomas Volf <~@wolfsden.cz> wrote:
> $ guix size deluge
> [...]
> total: 1954.5 MiB
> [...]
> 
> I decided to use Archlinux for comparison [...] I just started a
> container, installed the deluge package and did `du -sh /'. [...]
> # du -sh /
> [..]
> 909M  /

I think that in practice it does use a lot more space, especially if we
keep several revisions of the current system or user profile in
/gnu/store.

It also requires about 2GiB of RAM per core being used.

References:
---
[1]https://10years.guix.gnu.org/program/#how-to-make-gnu-guix-irresistible-in-2022-and-beyond

Denis.


pgpNbBD0oTJXk.pgp
Description: OpenPGP digital signature


Re: Guix on the MNT/Reform

2025-03-15 Thread Denis &#x27;GNUtoo7; Carikli
Hi,

On Thu, 13 Mar 2025 00:37:09 -0700
Vagrant Cascadian  wrote:
> I have successfully built and booted a
> linux-libre-arm64-mnt-reform@6.12 kernel on a "MNT Reform2 with RCORE
> RK3588 Module" ... running Debian, I know... but Guix System cannot
> be too far off! In theory it also supports the other MNT Reform
> platforms, but I have not tested!
[...]
> One could not be enabled due to DEBLOBBING the wifi drivers, and the
> other may need a closer look. Although the second was for a platform I
> am not currently using, so... :)
What is the WiFi chip being used[1]?

> Rather than embedding all those patches into guix, I could really use
> help with figuring out how to apply those patches from the git
> checkout! It is a lot of patch:
> [...]
An option could also be to upstream as much as possible of the DTS
somehow (basically only send the easy dts patches) to be able to more
easily track what is missing upstream and so find out why this or that
patches are really needed.

References:
---
[1]https://mntre.com/modularity.html says "via mPCIe card" for the WiFi
   so it's probably hard (for me) to find out by reading the source
   code.

Denis.


pgpdiZA2GZLFW.pgp
Description: OpenPGP digital signature


Re: Guix on the MNT/Reform

2025-03-15 Thread Denis &#x27;GNUtoo7; Carikli
On Sat, 15 Mar 2025 11:49:14 +0100
Simon Josefsson via "Development of GNU Guix and the GNU System
distribution."  wrote:

> +  (bootloader (bootloader-configuration
> +   ;; Due to FSDG issues with the DDR training binaries,
> we cannot
> +   ;; currently ship u-boot in guix:
> +
> ;; 
> https://www.collabora.com/news-and-blog/blog/2024/02/21/almost-a-fully-open-source-boot-chain-for-rockchips-rk3588/
> +   ;; Defining an empty bootloader generates an
> extlinux.conf that
> +   ;; nearly any modern u-boot can read.
> +  (bootloader u-boot-bootloader)))
Thanks a lot for this trick (that could be handy with
u-boot-qemu-arm64).

> I assume something must have written the non-free u-boot blob to
> internal flash memory or sdcard?  Is it necessary to re-run 'guix
> system reconfigure' to re-create the extlinux.conf for Guix after
> that external process rewrote the u-boot blob, or how would the
> entire workflow look like?
Another option could be to tell the system configuration to only ship
GRUB and have u-boot provided by either mnt-reform or another project
load that GRUB.

This worked with the Pinephone with TowBoot when I tested few years ago.

Though I'm unsure if it would work in all cases since there is a
bug where GRUB requires the same block size (like 512 bytes / 4KiB)
between the filesystem and the block device.

Denis.


pgpSmY7XOU5wy.pgp
Description: OpenPGP digital signature


Re: Visiting a future of GNU? (was Re: Please don't leave GNU)

2025-04-14 Thread Denis &#x27;GNUtoo7; Carikli
On Wed, 2 Apr 2025 10:28:04 -0500
Caleb Herbert  wrote:
> I agree that we must move beyond Richard and take the reigns. This is 
> already happening in GNU proper.  I disagree that we should take away 
> the old man's honor over nit-picking the things he says.  I don't
> think we should blot out his name or disparage him.

The problem is much more complex I think. I think it's a byproduct of
centralizing a movement toward a single individual and over-relying on
the reputation of a single person.

Doing that also has good aspects as for instance it works well with the
media as long as the person reputation keeps being good, so you can
spread the word much much faster this way, but it's also risky (live by
the media reputation, die by the media reputation?).

And I don't have a definite answer on which one is better because I
lack a lot of the historic context. For instance, going faster might
have been the only viable option in order to grow fast before we were
in practice outlawed by Microsoft or software patents for instance.

Also note that it's also possible to "hack" all that to get advantage
of both going fast and going far. For instance a given person can talk
for a collective, and it's also possible to have someone famous come in
a place to make people talk instead of talking, which has also the
effect of bringing local people together.

This has already been done in practice for instance:
https://en.wikipedia.org/wiki/The_Other_Campaign

But like in my previous mail it also brings down the question of if we
want to go fast or far, and what has been done has been done, so the
only question we face is what to do now. 

This brings a question of where to spend resources (to clarify what
happened, have the truth emerge, etc, or to go forward trying to fix
issues that might stay for a longer term if we do nothing, and
choosing is not necessarily easy as understanding what happened also
helps us learning lessons, but doing so without too much infighting
is complex given that people are still in conflict about all that).

So I think that in any case we should take this mess as an opportunity
in order to make free software stronger rather than only having to deal
with all the bad aspects of it.

This may also be what makes things stronger: to be able to learn from
the environment and adapt, but here even if I have some historical
example in mind (like the Roman empire or Linux), it's only a hypothesis
and I've no proof for it (what seems to make sense is not necessarily
true).

Denis.


pgpx_81irK53r.pgp
Description: OpenPGP digital signature


Re: Wireshark with capabilities

2025-04-15 Thread Denis &#x27;GNUtoo7; Carikli
Hi,

On Tue, 15 Apr 2025 13:52:45 +0200
Denis 'GNUtoo' Carikli  wrote:
> The wrapper should be relatively easy to write but I wonder if the
> string to change can be predicted in advance.
Sorry for that but I saw that after: there is a GCD to reduce program
wrappers.

So we probably need to take that into account somehow.

Denis.


pgpzfClCO9Rz_.pgp
Description: OpenPGP digital signature


Re: Please don't leave GNU

2025-04-14 Thread Denis &#x27;GNUtoo7; Carikli
On Mon, 14 Apr 2025 10:52:31 +0200
Simon Josefsson  wrote:
> > Last time I discussed it with the linux-libre, the reason loading
> > non-free firmware is outright disabled is because it'd be trivial
> > for any privileged (or maybe that's not even a condition?)
> > processes to make a system call to Linux to load non-free firmware,
> > which would make it difficult to control for users.
> 
> Oh, is that really the case?  I had assumed that this was a policy
> decision, that linux-libre didn't want to allow users to have the
> ability to load non-free firmware, to make sure the goals of
> linux-libre aren't compromised.
Note that some firmwares can probably also be loaded from userspace
without having Linux involved.

I remember having to remove nonfree firmware in SDR related packages in
Parabola, in that case the firmware was for some FPGAs and it was
nonfree in practice because it required nonfree tools to be "compiled"
(the technical term is synthesized for FPGAs). These can probably be
loaded with some utility that talks to some USB device directly with
libusb.

Nowadays there are probably drivers for that kind of things, so I'm
unsure what is the current practice.

So in practice linux-libre only prevent the kernel from picking some
firmwares put in /lib/firmware.

But my understanding was that in the case of linux-libre that was a
bug not a feature.

> Is the syscall available for non-root users? If so isn't that a linux
> kernel bug, surely non-privileged users shouldn't be allowed to load
> firmware that can modify hardware behaviour?
There is no syscall. You can do it by hand with echo and cat.

It works in this way:
# echo 1 > /sys/class/firmware/loading
# cat /lib/firmware/my-firmware.bin > \
  /sys/class/firmware/data
# echo 0 > /sys/class/firmware/loading

If I remember well, to run that at the right moment, there is also an
interface to be notified when a firmware is requested. But that can
also be done with a shell command:
# nano /bin/my-udev-replacement
# echo /bin/my-udev-replacement > /proc/sys/kernel/hotplug

I don't remember how firmware request look like though. It's been many
years since I last used that.

> I have thought that a middle ground project like 'linux-free' would be
> possible: it would be identical to linux-libre but re-add the hooks to
> allow root to load non-free firmware, if they so chose to do it.  I'm
> more comfortable with this approach than using linux upstream, since I
> think that linux-libre improves more than just non-free firmware
> loading.
Indeed. It makes some GPU work.

> I don't think a strict kernel policy to disallow users to run non-free
> code serves user freedom: it would prevent running a binary that I
> build using GCC built on a 5 lines C code that doesn't have a license
> (such a program would also be non-free).
There is also another consequence: it doesn't print the firmware name,
so users are not steered toward finding it and putting it in
/lib/firmware, though I'm unsure how much that steers people in
practice. For instance are there cases where some software parses the
kernel logs and popups shows up when you don't have firmwares? If we
don't package that we are probably OK.

Another consequence I see is that it makes refusing these firmware
harder, though I'm unsure if it happens in practice for firmwares. 

Do project that indirectly depend on 3D acceleration or nonfree firmware
treat users the same if they don't want to use the nonfree firmware or
if they can't ? 

The Radeon probably doesn't count here because if in practice the
upstream for users is linux-libre or Guix (they would report bugs
there), it probably doesn't bring any pressure to install the
nonfree firmwares.

If the upstream is Gnome in practice, that may or may not have a
collective impact, but they also need to make Gnome work in VMs without
3D acceleration, so the question is more when to enable it to work
without 3D acceleration (this could be hardcoded or configurable at
runtime, I'm unsure, dllud looked into it for Replicant few years ago, 
but at least patching mesa and/or gnome source code can always make it
work, the question is also if it works in Guix, and if not are we
willing to make it work to make sure to remove pressure and make
everybody happy, effectively improving both freedom and also the
ability to use nonfree firmwares).

A decision probably would have no impact on some software that
really depend on 3D accelerations like some games unless the CPU is
fast enough to run llvmpipe (and in this case it's the same issue as
above: is it configured to run llvmpipe or does it just fail, do we
need to patch mesa?).

For communication software like skype, this is way more documented as it
did happen a lot though: some people were really pressured by other
people to install it and use it, so we can clearly say there was
pressure here.

Note that if we manage to patch/configure MESA it could also help
support more hardware in general (computers with out of 

initrd-modules on non-x86 Was: Guix on the MNT/Reform Status Update

2025-04-14 Thread Denis &#x27;GNUtoo7; Carikli
On Thu, 27 Mar 2025 11:48:21 -0700
Vagrant Cascadian  wrote:

> First I would boot your MNT Reform with whatever OS you have now. You
> will need to make some changes to kernel-arguments (check the contents
> of /proc/cmdline) and initrd-modules (check lsmod output).
[...]
> For the initrd-modules, you should be able to just add all the modules
> you get from lsmod. Probably overkill, but hopefully will work! :)
On many ARM computers it's not overkill, you often lack very basic
modules for linux-libre or linux-libre-lts (example: rockpro64). I'm
unsure how to fix this mess.

linux-libre-arm64-generic usually works fine for booting but then you
miss things like the Wireguard module, so I'm unsure if there is only
Wireguard or if it's a bigger issue.

The way forward now is to create system configurations in
gnu/system/images/ but it doesn't address the problem of how to
actually generate this module list in a convenient way.

And while the module list in the machine config might work, the list is
also tied to a specific kernel version as modules get renamed or
split (like rk808_regulator, rk8xx-i2c), even for modules that are
required for booting, so it also requires some maintenance (basically
to reconfigure + reboot from time to time + sending patches).

If someone has ideas here on how to generate module names from
linux-libre-arm64-generic it would be more than welcome as it would
simplify things a lot.

So far I did it manually, by looking in the devicetree and from there
getting the driver names and from there getting the module name, cross
referenced with the kernel configuration shipped by Guix (CONFIG_*) and
I end up with something like that:
> (initrd-modules
>  (append 
>   (list 
>"dw_mmc-rockchip";; CONFIG_MMC_DW_ROCKCHIP for uSD boot
>"dwc3"   ;; CONFIG_USB_DWC3for USB boot
>"dwc3_of_simple" ;; CONFIG_USB_DWC3_OF_SIMPLE  for USB boot
>"ehci_platform"  ;; CONFIG_USB_EHCI_HCD_PLATFORM   for USB boot
>"fixed"  ;; CONFIG_REGULATOR_FIXED_VOLTAGE for USB boot
>"i2c_rk3x"   ;; CONFIG_I2C_RK3Xfor uSD boot
>"mmc_block"  ;; CONFIG_MMC_BLOCK   for eMMC boot
>"ohci_platform"  ;; CONFIG_USB_OHCI_HCD_PLATFORM   for USB boot
>"phy_rockchip_emmc"  ;; CONFIG_PHY_ROCKCHIP_EMMC   for eMMC boot
>"phy_rockchip_inno_usb2" ;; CONFIG_PHY_ROCKCHIP_INNO_USB2  for USB boot
>"phy_rockchip_usb"   ;; CONFIG_PHY_ROCKCHIP_USBfor USB boot
>"pl330"  ;; CONFIG_USB_SERIAL_PL2303   for uSD boot
>"rk8xx-core" ;; CONFIG_MFD_RK8XX   for uSD boot
>"rk8xx-i2c"  ;; CONFIG_MFD_RK8XX_I2C   for uSD boot
>"rk808_regulator";; CONFIG_REGULATOR_RK808 for uSD boot
>"sd_mod" ;; CONFIG_BLK_DEV_SD  for USB boot
>"sdhci_of_arasan";; CONFIG_MMC_SDHCI_OF_ARASAN for eMMC boot
>"uas";; CONFIG_USB_UAS for USB boot
>"usb_storage";; CONFIG_USB_STORAGE for USB boot
>"xhci_plat_hcd") ;; CONFIG_USB_XHCI_PLATFORM   for USB boot
>%base-initrd-modules))

I also plan to upstream all that at some point, but I also have other
issues with GRUB on this computer (I want to upstream something that I
can test and that actually works), and it's also my main server so that
complicates things.

So it would probably be easier for me to upstream support for another
ARM computer first (like the rock (pi) 4c plus), hence this mail as
once u-boot/grub is fixed I'll need to re-generate the modules for this
computer to upstream support for it.

Denis.


pgpcd6HNK3asU.pgp
Description: OpenPGP digital signature


u-boot and GRUB on ARM

2025-04-12 Thread Denis &#x27;GNUtoo7; Carikli
Hi,

I've a patch to add a new ARM computer to Guix (attached), but when I
add this to the system definition (to generate an image):
>   (bootloader (bootloader-configuration
>(bootloader u-boot-rock-4c-plus-rk3399-bootloader)
>(targets '("/dev/mmcblk0"

I then get an image that boots on GRUB and then GRUB doesn't find its
grub.cfg.

Is this behavior intended or is that a consequence of u-boot
having introduced the new bootflow way of booting?

If it's intended, how do I fix my configuration?

Also what would be the ideal way of dealing with that? Do we intend to
support both syslinux and GRUB? 

On another computer (rockpro64) I also had an issue with GRUB not
loading due to block size mismatch (I didn't investigate it yet in
depth), so it might be worth to also keep syslinux for strange cases
like that.

Note that on the rock-4c-plus, I can boot Guix but it requires messing
with u-boot by doing the following:
(1) I need to interrupt the boot in u-boot.
(2) I then need to run 'bootflow scan' and wait enough to populate the
list of ways it can boot. During the scan it also tries to see if it
can boot from the network and that is super long but it can also be
interrupted manually as this is the last option. At the end, the
'bootflow list' can then list the available boot options.
(3) I then need to run 'bootflow select 2' to use syslinux and then
   'bootflow boot'.

I've not investigated yet how to always select 2 beside adding some
bootcmd in the environment, but that would also require to run
'bootflow scan' and u-boot should be managed by the guix
system configuration anyway.

Denis.
From d11c723f7e19788e15464f11012c7cc366217504 Mon Sep 17 00:00:00 2001
Message-ID: 
From: Denis 'GNUtoo' Carikli 
Date: Fri, 21 Mar 2025 00:48:58 +0100
Subject: [PATCH] system: Add u-boot-rock-4c-plus-rk3399.

* gnu/packages/bootloaders.scm (u-boot-rock-4c-plus-rk3399): New variable.
* gnu/bootloader/u-boot.scm (u-boot-rock-4c-plus-rk3399-bootloader):
  New exported variable.
* gnu/system/install.scm (rock-4c-plus-installation-os):
  New exported variable.

Change-Id: I37025b248178311ccf8246cb0e02ed9399f9c6ac
Signed-off-by: Denis 'GNUtoo' Carikli 
---
 gnu/bootloader/u-boot.scm|  6 ++
 gnu/packages/bootloaders.scm | 10 ++
 gnu/system/install.scm   |  5 +
 3 files changed, 21 insertions(+)

diff --git a/gnu/bootloader/u-boot.scm b/gnu/bootloader/u-boot.scm
index 64fb319f50..0e7eb95ba4 100644
--- a/gnu/bootloader/u-boot.scm
+++ b/gnu/bootloader/u-boot.scm
@@ -47,6 +47,7 @@ (define-module (gnu bootloader u-boot)
 u-boot-pinebook-bootloader
 u-boot-pinebook-pro-rk3399-bootloader
 u-boot-puma-rk3399-bootloader
+u-boot-rock-4c-plus-rk3399-bootloader
 u-boot-rock64-rk3328-bootloader
 u-boot-rockpro64-rk3399-bootloader
 u-boot-sifive-unmatched-bootloader
@@ -252,6 +253,11 @@ (define u-boot-puma-rk3399-bootloader
(package u-boot-puma-rk3399)
(disk-image-installer install-puma-rk3399-u-boot)))
 
+(define u-boot-rock-4c-plus-rk3399-bootloader
+  (bootloader
+   (inherit u-boot-rockchip-bootloader)
+   (package u-boot-rock-4c-plus-rk3399)))
+
 (define u-boot-rock64-rk3328-bootloader
   (bootloader
(inherit u-boot-rockchip-bootloader)
diff --git a/gnu/packages/bootloaders.scm b/gnu/packages/bootloaders.scm
index 8ece61f11c..a9f70f8bf1 100644
--- a/gnu/packages/bootloaders.scm
+++ b/gnu/packages/bootloaders.scm
@@ -1430,6 +1430,16 @@ (define-public u-boot-rock64-rk3328
 (define-public u-boot-firefly-rk3399
   (make-u-boot-rockchip-package "firefly" 'rk3399))
 
+(define-public u-boot-rock-4c-plus-rk3399
+  (let ((base (make-u-boot-rockchip-package
+   "rock-4c-plus" 'rk3399
+   '("CONFIG_USB=y"
+ ;; Disable SPL FIT signatures, due to GPLv2 and
+ ;; OpenSSL license incompatibilities.
+ "# CONFIG_SPL_FIT_SIGNATURE is not set"
+(package
+  (inherit base
+
 (define-public u-boot-rockpro64-rk3399
   (let ((base (make-u-boot-rockchip-package
"rockpro64" 'rk3399
diff --git a/gnu/system/install.scm b/gnu/system/install.scm
index 15ea401f1c..60e0825ce3 100644
--- a/gnu/system/install.scm
+++ b/gnu/system/install.scm
@@ -662,6 +662,11 @@ (define rock64-installation-os
 "/dev/mmcblk0" ; SD card/eMMC (SD priority) storage
 "ttyS2")) ; UART2 connected on the Pi2 bus
 
+(define rock-4c-plus-installation-os
+  (embedded-installation-os u-boot-rock-4c-plus-rk3399-bootloader
+"/dev/mmcblk0" ; SD card storage
+"ttyS2")) ;; 

Re: GCD 004 deliberation

2025-04-15 Thread Denis &#x27;GNUtoo7; Carikli
Hi,

> Sure, I'll try it later..  Thank you for the feedback!
Sorry for the delay. These GCD are going too fast for me.

I have some questions that could be useful for when you retry. The GCD
mentions that:
> To find its search path configuration files when an executable is
> running,
> we can first find the location of the executable.  Conveniently, Linux
> provides a pseudo-file `/proc/self/exe` for this exact purpose, which
> works well for ELF executables.   But for an interpreter script,
> `/proc/self/exe` would return the file name of its interpreter
> instead of the script, so we patch interpreters to set 2 environment
> variables:
> 
>   - `GUIX_INTERPRETER_FILE`: absolute file name of the interpreter
>   - `GUIX_MAIN_SCRIPT_FILE`: absolute file name of the script

Did you look if binfmt had any effects on all that? What happens if you
run some ARM binaries with QEMU on x86, would it break all that?

Also, for next time, it might be useful to look if there are
alternatives that enable not to patch interpreters and their costs.

For instance Android has a tool named path_interposer whose goal is to
somehow sandbox builds to make sure host tools are not used unless
their path are in the allowed list. I don't remember how it does the
sandboxing though but if I recall well it really worked for the use
case (the host tools are not in the same location than the Android
source code).

And in general, it would be good to understand if it's possible to
have something as generic as possible and the costs as well (we might
not want to pay huge performance penalty for them).

Denis.


pgpPUahL0zqu0.pgp
Description: OpenPGP digital signature


Re: Visiting a future of GNU? (was Re: Please don't leave GNU)

2025-04-14 Thread Denis &#x27;GNUtoo7; Carikli
On Wed, 02 Apr 2025 10:03:03 +0200
Simon Tournier  wrote:
> Today, Richard is 71 years old.  The question isn’t the past but the
> future: What will be GNU in 5 years?  10 years? 20 years?  40 years?
> What does it mean being part of GNU once Richard will be “retired”?
> Please do not take me wrong, I wish all the best to Richard and a very
> long life!  Being just a human implies becoming older and older and
> passing away.  For one, not a personal opinion. ;-)

An big practical problem I saw in discussions on the gnu-linux-libre
mailing list (which is a mailing list meant for coordination of all FSDG
distributions like Guix, Trisquel, but also non-GNU/Linux distros like
Replicant) is that RMS's opinion enable to close a discussion.

This means that without RMS people are probably not able to
collectively take decisions on controversial topics.

Another issue related to this one is that we also do need both to have
ways to grow strategic capacity on our own and also to have experience
in taking collective decisions.

The first would mean to understand better things that RMS knows well
and be able to take strategic decisions for GNU and/or free
software.

For the second, while I would have liked to slowly ramp up the GCD (try
it with more consensual decisions first, to see potential issues and
limitations of the approach and fix them), it is at least a step in the
right direction as it enables to do exactly that.

Both are different because we can also take bad collective decisions if
we are not correctly informed, even if there is (at some point) a good
process for reaching consensus and/or taking decisions.

Another longer term issue I see is that we also need multiple people to
step in individually or collectively to be able to write the kind of
articles RMS was writing because this is something that is extremely
strategic: it defines and unify the free software movement.

Without that I fear that it would produce too much infighting.

It might also be possible to do it somewhat collectively as there are
historic examples where that worked (example: 
https://en.wikipedia.org/wiki/Freedom_Charter) and the big advantage 
here would probably to have a more robust and inclusive movement.

So we could probably try to write articles (like the ones written by
RMS like the "JavaScript trap", etc) in case new threats or
opportunities arise for free software.

> I think the question “leave GNU or not?” is empty.  Because it asks to
> look back when we must focus on look next.
It's also probably the wrong question being asked, as it's probably
implied that leaving GNU will lower freedom standards.

So the real question should rather be with that directly: "Please don't
lower Guix's freedom standards" or "Please don't leave the FSDG" or
similar.

There might completely different reasons to join, not join or leave GNU
and that has probably not be mentioned despite the Subject of the
thread.

Many distributions that follow the FSDG Guidelines are not GNU at all,
and some probably can't become GNU (Replicant, Hyperbola BSD) because
they are not even GNU/Linux distributions, and joining would cause too
much confusion (For Replicant it would be an Android distribution which
is not GNU/Linux joining the GNU project while not using the GNU
userland, that would look very strange, Hyperbola BSD also doesn't plan
to use the GNU userland).

Beside FSDG guidelines there are things like hosting requirements for
GNU (https://www.gnu.org/software/repo-criteria.en.html), or other 
implied requirements, and all that could be discussed instead for
instance. 

Or maybe the subject should be "Please don't leave the the GNU
(freedom) standards".

As for practical reasons for Guix, for instance, present or future
regulations in the USA could be good reasons to leave GNU with no
intentions to lower the freedom standards or to change anything to its
architecture.

> After 40 years, when people are still putting the founder in the
> middle of the project, it means either the project failed, either the
> project is going to fail once the very founder stops their
> activities.  Or, slippery slope – without any willing to be harsh –,
> either people devote a cult of personality to the founder.  No?
> After 40 years…

I think it's something like "If you want to go fast, go alone; if you
want to go far, go together.": too much centralization on one
individual allows to go faster, but then the movement becomes less
robust, with bias (so it reaches less people, misses a lot of
opportunities), etc.

Retrospectively I don't have the knowledge to understand if it was a
good or bad choice (free software had got a lot of threats, from
Microsoft to software patents, etc), but we have to deal with the
consequences (both good and bad) of this choice now.

And the fear I have is that we don't find ways to continue doing what
RMS was doing and that we end up being stuck without ways to evolve.

And the problem is that we need to do that in a world where re

Re: Why YOU should join a Team!

2025-04-28 Thread Denis &#x27;GNUtoo7; Carikli
On Sun, 27 Apr 2025 14:37:24 +0100
Steve George  wrote:
> There's no particular rule on how much you need to have contributed
> to become a Team member. Personally, I think that if you consider
> yourself as someone who's working on the project then the door is
> open for you to join a team. See the manual for the details!
> 
>   https://guix.gnu.org/manual/devel/en/guix.html#Teams
I've tried to apply to the bootloaders team after the FOSDEM but it
probably got lost in the mails.

Does joining a team also give access to QA tools? Currently bisecting
issues takes a lot of time for me and I'd like to be able to somehow
retrieve information from the QA system and/or trigger builds of known
commits there.

Denis.


pgpYT0FXgEmJ6.pgp
Description: OpenPGP digital signature


Re: [GCD] Migrating repositories, issues, and patches to Codeberg

2025-02-18 Thread Denis &#x27;GNUtoo7; Carikli
On Wed, 12 Feb 2025 11:44:42 +0100
Ekaitz Zarraga  wrote:
> [...] in Git there's no slave.

Personally I find 'main' more accurate precisely because of that.

Git enables to more easily maintain branches (not necessarily in the
same repository) with modifications on top, and/or to diverge, and so
for me using 'main' also convey the idea that people can legitimately
use other branches as well, especially because more than one meaning of
master don't really encourage that ('master copy' and/or power
relationship, though the later is more for the noun than the adjective).

There is also this wording in the manual for the main channel, and here
too the Guix utilities and daemon can also be reused with alternative
repositories (even replacing the main one as I understand, though I'm
unsure if anybody tried that).

In both cases using a more accurate word can empower the users and
promote practical freedoms.

Denis.


pgpdq1PrhUExL.pgp
Description: OpenPGP digital signature


Re: [GCD] Migrating repositories, issues, and patches to Codeberg

2025-02-18 Thread Denis &#x27;GNUtoo7; Carikli
On Thu, 13 Feb 2025 13:15:01 +0100
Liliana Marie Prikler  wrote:

> Am Donnerstag, dem 13.02.2025 um 10:30 + schrieb Attila Lendvai:
> > > Here's my perspective: it will cost us basically nothing to rename
> > > the master branch,
> > 
> > i suspect you'd be surprised how many places will need to be touched
> > until the whole infra is back on track after such a rename...
> > 
> > e.g. consider just the "bootstrapping" of this rename:
> > 
> > if you simply rename the branch, then people won't be able to guix
> > pull after the rename.
> > 
> > if you keep two branches, then for how long until no users are left
> > who will attempt to guix pull using an unprepared guix binary?
> > 
> > or should we add code to guix preemptively that can deal with both
> > the pre and post rename environment? then have a grace period before
> > the rename? for how long?
> Consider these steps:
> 
> 1. Create 'main', following 'master'.
> 2. Push a commit that makes 'main' the branch of
> %default-guix-channel. 
> 3. Push that commit to both 'master' and 'main'. 
> 4. Lock master on said commit.

This doesn't take care of existing repositories, and it is possible to
handle that as well but the way I know does require practical control
over the infrastructure (there may be better ways though that works
without ssh access):

$ git checkout origin/master -b temporary
$ git push origin HEAD:main
$ ssh root@server
$ cd /path/to/repository.git
$ git symbolic-ref HEAD refs/heads/main # Change the main branch
$ git symbolic-ref refs/heads/master refs/heads/main # Make master point to main

I did it on many Replicant repositories for instance, and it's 100%
transparent to the users. With that, new clone of the repositories use
main by default.

Denis.


pgpjLYUq4tLOZ.pgp
Description: OpenPGP digital signature


Re: Trying out Codeberg

2025-03-03 Thread Denis &#x27;GNUtoo7; Carikli
On Sat, 22 Feb 2025 22:35:21 +0900
Maxim Cournoyer  wrote:
> [0]  https://forge.a-lec.org/ (self-hosted in France by a nonprofit! [1])
> [1]  https://www.a-lec.org/
Personally I have a private repository on forge.a-lec.org that I use
for Q/A for a project I participate in, and so I push and pull
regularly from it, and it has significant downtime (It's subjective but
I've seen it down way more than Savannah). So I ping neox each time that
happens and he does what needs to be done to bring the service back
online (he's involved in maintaining these services).

Since this is operated by volunteers, people can join and help somehow,
but not only it probably requires to be a member of the association,
but as usual it also requires time. International projects already
asked for hosting in this infrastructure so it may be possible to join
remotely but I didn't try that.

That infrastructure is pretty clean, but more work is needed in this
area: it runs on KGPE-D16 (that even run GNU Boot) on Trisquel, but
they didn't manage to disable some forgejo features that they wanted to
disable for freedom reasons, so they simply tell people not to use them.

I didn't follow all the discussions about that but according to Neox
who was involved in it, it's documented in
xmpp://comin...@salons.a-lec.org and in various bug reports that are in
the forgejo instance of Libre en communs.

The problem is that automatic builds depend on NodeJS and docker, and
while there might be ways to workaround both they require time and I
didn't look into it, and some of the ways to workaround might not be
straightforward (for instance docker-registry has no
usable authentication / authorization for such use cases, it requires
additional software that probably need to be packaged, all that
probably need to be integrated somehow not to point to docker.io, etc).

I've done work here and there to try to fix the docker issue in a more
generic way but it's far from finished.

My idea was to first find a way to enable communities to setup their
own public docker registry like Fedora does, and then find ways that
would work for FSDG distributions to publish their docker container in
either self-hosted repositories and/or in a public one that only
accepts FSDG compliant images. 

All that requires a flexible enough authentication/authorization to work
and that is however not packaged nor tested (or documented) in any FSDG
distro yet. Making 100% private repositories work fine though,
including in Guix.

Once this is taken care of, remains the fact that the security would be
downgraded from GPG to HTTPS, but that is probably not the end of the
world and things could probably be worked around if needed with the help
of that authentication/authorization for instance by mirroring docker
repositories locally, using self-signed certificates and/or localhost,
etc.

Having a less generic solution might be better though, like using
'guix' or 'debootstrap' to build containers within the forgejo, but
that also require volunteers to implement that.

Denis.


pgp4_huwMeXbj.pgp
Description: OpenPGP digital signature


Re: Trying out Codeberg

2025-03-07 Thread Denis &#x27;GNUtoo7; Carikli
On Thu, 06 Mar 2025 10:10:03 +0900
Maxim Cournoyer  wrote:
> 
> Is Docker the only current solution for runners in the CI?
This is my understanding from my discussion with neox.

> > Having a less generic solution might be better though, like using
> > 'guix' or 'debootstrap' to build containers within the forgejo, but
> > that also require volunteers to implement that.  
> 
> We already have Docker image generation support via 'guix pack -f
> docker', and also 'guix system image -t docker' so that should be
> feasible yes.
I'm aware of that. My point with using 'guix' or debootstrap was to find
ways not to have to run a docker registry.

Denis.


pgpKHzsBfN71w.pgp
Description: OpenPGP digital signature


Re: Trying OpenCL on Guix: An Experience Report

2025-03-04 Thread Denis &#x27;GNUtoo7; Carikli
Hi,

On Mon, 05 Jul 2021 07:27:54 -0500
Katherine Cox-Buday  wrote:

> I have written up a blog post here[1] which describes my experience
> with trying to use OpenCL on Guix. While researching this, I found a
> few messages in IRC and on guix-help wondering how to get this to
> work, so I hope this helps someone.
> 
> As always, thanks to everyone involved in Guix.
> 
> [1] 
> https://katherine.cox-buday.com/blog/2021/07/05/trying-opencl-on-guix-an-experience-report/
Thanks a lot for this writing.

I have the exact same issue but for a very different use case.

I wrote a free software utility that computes the sim-unlock code for a
very old smartphone model (Galaxy SII, GT-I9100), and I want to push it
in a free software project I somehow still maintain but we use Guix for
the CI, and so we are blocked by the lack of OpenCL as well.

Here is an example that works on Trisquel 11 (it even works within a
Trisquel 11 chroot from Guix):
> $ rm -rf ~/.local/share/hashcat/
> $ hashcat -d 1 -m 110 --hex-salt -a 3 \
> ef63bf26e2382917d96850ccf9632458ee6e6c77: \
> ?d?d?d?d?d?d?d?d
> [...]
> ef63bf26e2382917d96850ccf9632458ee6e6c77::50681318
>   
> Session..: hashcat
> Status...: Cracked
> Hash.Mode: 110 (sha1($pass.$salt))
> Hash.Target..:
> ef63bf26e2382917d96850ccf9632458ee6e6c77:
> Time.Started.: Tue Mar  4 21:11:40 2025 (4 secs)
> Time.Estimated...: Tue Mar  4 21:11:44 2025 (0 secs)
> Kernel.Feature...: Pure Kernel Guess.Mask...: ?d?d?d?d?d?d?d?d [8]
> Guess.Queue..: 1/1 (100.00%)
> Speed.#1.: 17403.7 kH/s (6.89ms) @ Accel:64 Loops:1000 Thr:1
> Vec:4 Recovered: 1/1 (100.00%) Digests
> Progress.: 70528000/1 (70.53%)
> Rejected.: 0/70528000 (0.00%)
> Restore.Point: 70400/10 (70.40%)
> Restore.Sub.#1...: Salt:0 Amplifier:0-1000 Iteration:0-1000
> Candidate.Engine.: Device Generator
> Candidates.#1: 12345128 -> 68860881
> Hardware.Mon.#1..: Util:100%
> [...]
> $ hashcat -d 1 -m 110 --hex-salt -a 3 \
> ef63bf26e2382917d96850ccf9632458ee6e6c77: \
> ?d?d?d?d?d?d?d?d --show
> ef63bf26e2382917d96850ccf9632458ee6e6c77::50681318

The same fails on Guix:
> $ rm -rf ~/.local/share/hashcat/
> $ hashcat -d 1 -m 110 --hex-salt -a 3 \
> ef63bf26e2382917d96850ccf9632458ee6e6c77: \
> ?d?d?d?d?d?d?d?d
> hashcat (v6.2.6) starting
> 
> ATTENTION! No OpenCL, Metal, HIP or CUDA installation found.
> [...]
> $ hashcat -d 1 -m 110 --hex-salt -a 3 \
> ef63bf26e2382917d96850ccf9632458ee6e6c77: \
> ?d?d?d?d?d?d?d?d --show
> $

Note that the examples above use the CPU (-d 1) to do the bruteforce so
at least it shows something that is really easily reproducible, it's
also relatively fast (few seconds) on a ThinkPad X200. Unfortunately,
beside that, I don't have much to bring to the table yet.

In contrast, 'clinfo -l' is almost identical between Guix and
the Trisquel chroot.

Though hashcat -I looks very different. In Guix we have:
> $ hashcat -I
> hashcat (v6.2.6) starting in backend information mode
> 
> ATTENTION! No OpenCL, Metal, HIP or CUDA installation found.
> 
> You are probably missing the CUDA, HIP or OpenCL runtime installation.
> 
> * AMD GPUs on Linux require this driver:
>   "AMDGPU" (21.50 or later) and "ROCm" (5.0 or later)
> * Intel CPUs require this runtime:
>   "OpenCL Runtime for Intel Core and Intel Xeon Processors" (16.1.1
> or later)
> * NVIDIA GPUs require this runtime and/or driver (both):
>   "NVIDIA Driver" (440.64 or later)
>   "CUDA Toolkit" (9.0 or later)

And in the Trisquel chroot:
> $ hashcat -I
> hashcat (v6.2.5) starting in backend information mode
> 
> clGetDeviceIDs(): CL_DEVICE_NOT_FOUND
> 
> clGetDeviceIDs(): CL_DEVICE_NOT_FOUND
> 
> OpenCL Info:
> 
> 
> OpenCL Platform ID #1
>   Vendor..: The pocl project
>   Name: Portable Computing Language
>   Version.: OpenCL 2.0 pocl 1.8  Linux, None+Asserts, RELOC, LLVM
> 11.1.0, SLEEF, DISTRO, POCL_DEBUG
> 
>   Backend Device ID #1
> Type...: CPU
> Vendor.ID..: 128
> Vendor.: GenuineIntel
> Name...: pthread-Intel(R) Core(TM)2 Duo CPU P8600  @
> 2.40GHz Version: OpenCL 1.2 pocl HSTR:
> pthread-x86_64-pc-linux-gnu-penryn Processor(s)...: 2
> Clock..: 2400
> Memory.Total...: 5542 MB (limited to 1024 MB allocatable in one
> block) Memory.Free: 2739 MB
> OpenCL.Version.: OpenCL C 1.2 pocl
> Driver.Version.: 1.8
> 
> OpenCL Platform ID #2
>   Vendor..: Mesa
>   Name: Clover
>   Version.: OpenCL 1.1 Mesa 23.2.1-1ubuntu3.1~22.04.3

I'll try to find the time to use the tips you mentioned to try to make
hashcat work, and try more things, like using Guix on top of Trisquel
and Parabola, to see if at some point things start working.

While any workaround might be nice and get things moving, the end I am
interested i

linux-libre, Was: Scaling issues with forges Was: Trying out Codeberg

2025-03-10 Thread Denis &#x27;GNUtoo7; Carikli
Hi,

Note that I also discussed various kernel options at the FOSDEM with
other people involved in Guix, so I'm taking the occasion to add the
info here as well.

On Mon, 10 Mar 2025 10:08:23 +0900
Maxim Cournoyer  wrote:
> In practice, Linux-libre deals pretty much with a single issue: the
> non-free device firmware, whether its loaded from external blobs or
> directly embedded in C arrays in the source (which thankfully appears
> a rare practice nowadays).
I've looked at it few years ago, and this is only part of what it does.

Nowadays, the deblobbing is trivial to do without linux-libre and can be
replaced with few 'rm -f'[1] on older Linux versions that requires
deblobbing.

We can do that easily because Debian has the information inside
Debian/copyrights inside the kernel package[2]. I'm not sure if some
nonfree code remains nowadays.

Now Linux-libre does much more and some of the things it does is really
interesting:
- It has tool to detect the kind of non-free software you're talking
  about. When there are new detection, they are investigated. So I
  guess that at the end of the day even projects like Debian benefit
  from the information and work in this area.

- It also blocks nonfree loadable firmwares files even if they are not
  provided by the kernel. It doesn't block non-files though, like the
  ACPI tables or the nonfree bytecode provided by the video BIOS.

- It keeps information on the amount of drivers that require nonfree
  firmwares as they are announced in releases. This is also possible
  because it blocks nonfree firmwares.

- It has patches to make some of the drivers work without the nonfree
  firmwares, like the radeon driver for some GPUs. I'm unsure if there
  are more, but some drivers I use seem to have "optional" firmwares
  like some Realteck Ethernet cards. I didn't try them with Linux
  though.

- It probably modifies the documentation as well to at least refer to
  GNU/Linux and maybe more I recall well.

Also note that FSDG distributions are not forced to use linux-libre or
to block the loading of nonfree firmware if the firmwares are already
there.

For instance in Replicant we always deblobbed the kernel ourselves, and
at some point we evaluated linux-libre but decided against it due to
the complexity of separating the different things it does (we were not
interested yet in blocking nonfree firwmares but we are also not
providing them).

In the case of Guix, I heard that some people might be interested in
using a deblobbed Linux (and even providing them by default) instead of
linux-libre, but I'd also think it's interesting to keep the option of
having linux-libre at least for the Radeon driver modifications that
makes some GPU work without nonfree firmwares.

With these modification we still have no 3D acceleration but we can use
the native display resolution[3] and even multiple displays, which
in some cases is sufficient to make an unusable computer usable again.

Trisquel 11 (aramo) also has a mix between linux-libre and linux to
allow some fimrware loading without reverting these modifications to
the Radeon driver.

References:
---
[1]rm -rf Documentation/netlabel/draft-ietf-cipso-ipsecurity-01.txt \
   arch/powerpc/sysdev/micropatch.c \
   drivers/media/usb/dvb-usb/af9005-script.h \
   drivers/media/i2c/vs6624.c \
   drivers/net/appletalk/cops* \
   drivers/video/fbdev/nvidia \
   drivers/video/fbdev/riva \
[2]https://metadata.ftp-master.debian.org/changelogs//main/l/linux-signed-i386/linux-signed-i386_4.19.249+2_copyright
[3]In a small laptop (Toshiba N550D) I keep for testing linux-libre,
   with the modifications you have a 1024x600 resolution instead of
   800x600.

Denis.


pgpPswATu2Kf6.pgp
Description: OpenPGP digital signature


Re: Scaling issues with forges Was: Trying out Codeberg

2025-03-10 Thread Denis &#x27;GNUtoo7; Carikli
On Mon, 10 Mar 2025 11:37:29 +0100
Simon Tournier  wrote:

> Hi Denis, all,
Hi,

> That’s said, we must recognize that sending patches by emails is not
> smooth at all.
Indeed. The configuration (smtp settings, or learning how to import
patches in mail clients before sending them, etc) is probably too
complex for most people.

> Yes, this can be fixed with tooling.  But that’s the wrong frame for
> an answer, IMHO.  The question is: who commits in maintaining such
> tools?
My question is more "what is the way that can get us there with the
least amount of work and that doesn't make the whole process less
efficient in the long run?".

Alternate proposal:
===
> Whatever my opinion about the proposed “Migration Path”, today I have
> nothing better to propose than accepting the proposal to implement the
> PR workflow in order to smooth the bottleneck.  Therefore, I try very
> hard to avoid the human bias of resistance to change and instead try
> to focus on what I can or cannot live with for my day-to-day
> collaboration with Guix.
Right now it seems a bit like having the choice between the Cholera
and the Plague, both with really bad aspects, but that are very
different, and having a difficult choice between both.

There could also be human bias at play here in case where some people
probably can't stand the current problem anymore (for good reasons) and
would probably like to exchange it as fast as possible for another
issue, but while it makes sense in the short run, in the longer run it
could be problematic because the trip is one-way only.

Having something that mix good aspect of both models looks viable
though.

For instance an extremely basic workflow that would probably be better
than both the current situation and a full-forge workflow would be for
a contributor to open an account on a forge vetted by Guix at first
(Codeberg for instance), then to send a link that work with "git fetch"
to review, by email, to the guix-patches mailing list.

Then it would be relatively easy for a reviewer to integrate the
patches in a mail client with git fetch and git-imap-send and send both
the patches and the comments at the same time to the mailing list.

I guess that people using Emacs would also find it relatively easy to
open a patch with emacsclient -n $(git format-patch -1) or some other
way, and copy-paste it in an email for commenting it, and send them
verbatim with git-send-email with the right --in-reply-to.

The risk here is to have duplicated patches being sent by 2 different
reviewers, but not duplicated threads as the contributor would send the
first mail, but that issue is probably less problematic than
abandoning the mail workflow completely.

Also note that patches carry their own git hash, so if people are
inclined, they could also find ways to remove duplicates, though even
if nobody does that it's probably fine.

Another issue is that we'd probably need to tell contributors not to
expect reviews within the forge. It could be told inside the Guix
manual. And at the end of the day, if contributors don't understand
that, it will probably not increase the maintainers work anyway.

And the contributors that do understand all that would get their
patches reviewed, so for a contributor, it's probably order of
magnitude better to have to learn about all that than not to get your
patch reviewed at all, especially if people do know how bad it was
before (this should be put in the manual as well along with the
explanation on the workflow).

And if why we don't review patches within a forge needs to be repeated
again and again, because contributors complain, then anybody could
reply and explain, not just the reviewers, or send a link, or at worse
not reply at all to emails like that.

Personally I've also been in the contributor situation described above
for patches for programs maintained by Debian, where I had to learn to
ping the maintainers though a bug report instead of just sending
a pull request, and that took a long time to understand, but at the end
the patch was reviewed so I was really happy.

So basically as a contributor I'd probably do anything it takes as
long as it respects my freedom to get things reviewed, even going
through a forge, going to nearby events, running special tools,
participating in this discussion about the GCD 002, etc.

As a maintainer or someone that reviews and accept patches however, I'd
expect to be able to be able to use tools that are up to the task or to
make my own from well known reusable components, and in the long run to
offload work as much as possible on the contributors for seasoned
contributors, and to still teach new contributors to some extent, a bit
at a time, or to have contributors teach each other (in some events
etc).

The Linux case
==
> 2. Because Linux is heavily used by many companies, they have
> developed and implemented many tools for CI and all that.  Well, it
> is not the point; the point is: companies financially 

Re: Scaling issues with forges Was: Trying out Codeberg

2025-03-10 Thread Denis &#x27;GNUtoo7; Carikli
On Fri, 7 Mar 2025 15:02:57 -0500
Leo Famulari  wrote:

> And still you can find endless complaints about their onerous
> contribution workflow
If more people can send patches, it is indeed very good, but the point
of these workflow and tools is also to prioritize the efficient of the
maintainers over things like the efficiency of new contributors, and so
if newer tools require more involvement from maintainers, then requiring
them puts the project in a dangerous situation.

For instance if you have a tool that checks for common errors, then
requiring to run it before sending a patch[1] can be a good idea
even if it increase the difficulty to contribute.

There was a very old presentation of git by Torvalds for instance, and
if you read between the lines, you can deduce that things like SVN were
probably easier than git as the maintainers would be the ones that do
the work of rebasing contributors patches. However if maintainers
burnout that is bad. So one of the point of git was also to move a lot
of the burden away from the maintainers to the contributors.

References:
---
[1]This can be done in the instructions to contribute. Actually
   enforcing this through technical means is also dangerous as tools
   can also have bugs.

Denis.


pgpITFSvARxaB.pgp
Description: OpenPGP digital signature


Re: Scaling issues with forges Was: Trying out Codeberg

2025-03-12 Thread Denis &#x27;GNUtoo7; Carikli
On Fri, 7 Mar 2025 15:02:57 -0500
Leo Famulari  wrote:
> One thing about how Linux solved these issues, is that it Linux became
> commercially valuable to the point where they pay people to maintain
> the code, which includes reviewing contributions.

I used Linux as an example because I know it way better than other
projects, but we also have Debian that is mainly based on volunteers
work and that has some similarities as well:
- They use mailing lists, for discussions and bugs
- They have their own tooling and/or specific tooling shared with other
  projects as well
- Most of the work is somehow integrated together (in the same apt
  repositories and/or project) even if it is also split and distributed
  (not everybody can work on the all the packages if I understand well).
- They are also big.

And Debian also uses their own forge as well for maintaining individual
packages.

But I didn't mention Debian in my previous mail because I also don't
know it well, so maybe other people that are also Debian contributors
or package maintainers could correct me and/or tell us what enables
Debian to scale.

Denis.


pgpKTLEv0Gret.pgp
Description: OpenPGP digital signature


Re: Scaling issues with forges Was: Trying out Codeberg

2025-03-12 Thread Denis &#x27;GNUtoo7; Carikli
On Mon, 10 Mar 2025 11:37:29 +0100
Simon Tournier  wrote:
> Yes, this can be fixed with tooling.  But that’s the wrong frame for
> an answer, IMHO.  The question is: who commits in maintaining such
> tools?
This is a good point. One possibility is that someone write tools and
that they are collectively improved step by step by people who use
them, like with checkpatch.pl, but that might not always work as I'm
unsure how to predict how much work a tool would need.

I've no idea if this is relevant or not here but I wrote a tool to
check patches like checkpatch.pl for GNU Boot that I attached and note
that it has a lot of limitations:

- It's made by someone that barely know scheme (me) and that learned
  about SICP and such design just before writing this code, and I still
  have a lot to learn, it has code duplication and so on.

- Its error handling is not great, but it also comes with some test
  coverage as I run it on almost all the patches that makes the GNU
  Boot history, and it has a few specific tests as well.

- It tests very few things as it's still extremely new.

- The worst part is probably that it's very specific to GNU Boot, and
  that it's not configurable yet. checkpatch.pl is configurable and
  while it's maintained within the Linux git, it is also imported in a
  wide variety of C projects (from u-boot, to anyone who wants to use
  it, I even used it for a library that I maintained) and for that it
  needs to be configurable to at least avoid some linux-specific tests.

The tool I wrote could easily be adapted to check if a given patch set
applies, but I also wonder how relevant such tools is because I've no
idea where it should run in the case of Guix, or if rewriting it from
scratch for that case make more sense.

Your setup is quite optimized and so would you (or anybody else that do
review patches) expect code that detects badly formatted patches or
patches that don't apply to run on your local machines in a shell?,
inside emacs?, inside the QA system (and tag the bug report / patch)?,
or in multiple environments? or in all these contexts?

Denis.
#!/usr/bin/env -S guix repl --
!#
;; Copyright (C) 2024 Denis 'GNUtoo' Carikli 
;;
;; This program is free software: you can redistribute it and/or modify
;; it under the terms of the GNU General Public License as published by
;; the Free Software Foundation, either version 3 of the License, or
;; (at your option) any later version.
;;
;; This program is distributed in the hope that it will be useful,
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
;; GNU General Public License for more details.
;;
;; You should have received a copy of the GNU General Public License
;; along with this program.  If not, see <https://www.gnu.org/licenses/>.

(use-modules (ice-9 popen))
(use-modules (ice-9 rdelim))
(use-modules (ice-9 regex))
(use-modules (srfi srfi-1))
(use-modules (srfi srfi-9))
(use-modules (srfi srfi-19))

(define (startswith str value)
  (if (> (string-length str) (string-length value))
  (string=? (substring str 0 (string-length value)) value)  #f))

(define (read-file path func)
  (define results #f)
  (let ((port (open-input-file path)))
(set! results (func path port))
(close-port port)
results))

(define (print-patch-name path)
  (define dashes
(string-append
 (string-join (make-list (string-length path) "-") "")
 "\n"))
  (display dashes)
  (display (string-append path "\n"))
  (display dashes))

(define (file-exists-at-commit? commit path)
  (not (eof-object?
(let*
((port
  (open-pipe*
   OPEN_READ
   "git" "ls-tree" commit "--" path))
 (str (read-line port)))
  str


;;;;
;; ;  ;;
;; ;; Patch parsing logic ;;  ;;
;; ;  ;;
;;;;


(define-record-type 
  (make-rule name default line-match line end)
  rule?
  (name   rule-name)   ;; Name of the rule
  (defaultrule-default);; Runs once at the beginning, inconditionally
  (line-match rule-line-match) ;; Runs each line, returns true/false
  (line   rule-line)   ;; Runs if rule-line-match is true
  (endrule-end))   ;; Runs once at the end, inconditionally

(define parse-rules
  (list

   ;; Here's an example of a parse r

Re: Scaling issues with forges Was: Trying out Codeberg

2025-03-12 Thread Denis &#x27;GNUtoo7; Carikli
On Tue, 11 Mar 2025 02:32:42 +0100
Denis 'GNUtoo' Carikli  wrote:
> Another issue is that we'd probably need to tell contributors not to
> expect reviews within the forge. It could be told inside the Guix
> manual. And at the end of the day, if contributors don't understand
> that, it will probably not increase the maintainers work anyway.
I've looked at that, and the Libre En Communs instance of forgejo
doesn't support that, but in another hand it's possible to disable
the builtin bug reports for a given git repository and point to an
external URL instead.

So this might be something that could be implemented for pull requests
as well as they can be disabled and both settings are in the same page,
so it would also make sense for consistency.

Another way to get the information of the review within a common
infrastructure would be be to somehow add an URL of the patch
review within the patch that will go inside Guix and to build automatic
tooling to somehow fetch the relevant discussion and integrate it in
the guix patch mailing list (and deploy public-inbox) and/or in a git
repository.

This could improve the ability to search bugs offline and/or make it
easier to integrate in workflows. Though we'd probably loose the
ability to search contributions that didn't make it in Guix, and that
could be relevant for people that need to be evaluated for commit
access, but for the rest, information on what is not yet in Guix is
probably not really needed for the maintenance of what made it in Guix.

In the later case it also enables to selectively migrate teams to
forges, depending on what each team prefer and still have a common
place to find the discussions. Both ideas could also be mixed and
matched depending on what individual team prefer.

Denis.


pgpMSofCDgG80.pgp
Description: OpenPGP digital signature


Questions about a duplicate package and naming of go/python/etc packages.

2025-02-20 Thread Denis &#x27;GNUtoo7; Carikli
Hi,

In January 2023 I added the docker-registry package while the
go-github-com-docker-distribution package was there since 2018.

This is most likely due to the way I named my package: I followed the
other distributions (here Trisquel and Parabola) package name.

While the way to go is to merge all my changes in the
go-github-com-docker-distribution package, once done, people looking for
the docker-registry packages won't find it.

What is the best way to deal with this issue. Is there
something better than mentioning the usual package name in the package
description and/or synopsis? If not, what is the canonical way to do it
(if everybody does it in the same way, then it becomes grep-able and
more easily translatable)?

Also, is guix-devel the right place to ask these questions?

Denis.


pgpYbZWhaDfiD.pgp
Description: OpenPGP digital signature


Blog posts for the most important GCDs (like the GCD 002)?

2025-02-26 Thread Denis &#x27;GNUtoo7; Carikli
Hi,

Given the time some patches take to be merged, we can safely assume
that some contributors only contribute occasionally, and a subset of
them probably have a long term relationship with the Guix project. 

I would also guess that some committers probably were in this situation
before being committers. 

In my case I didn't read the mailing list that often (I often do that
in batches), and so I found out quite recently about all that.

Because of that, and given the amount of disruption of the GCD 002 if
it passes (it will probably change the demographics of Guix
contributors at least to some extent by making it unpractical for some
people to contribute, while at the same time making it easier for other
people to join) I think it would be a good idea to at least make a blog
post about it and inform as many current or potential contributors as
possible about the change proposal.

Also, that could be out of scope here, but given the length of the
threads, and the importance of the change, it could be a good idea (or
not) to somehow summarize the various arguments not to have to repeat
them and to enable more people to join in the discussion. I'm thinking
of something like wikidebates
( https://en.wikidebates.org or https://fr.wikidebates.org ) where
different positions are summarized.

Since Guix has a wiki ( https://libreplanet.org/wiki/Group:Guix ) it 
could be possible to do that work there.

Denis.


pgptCxXqhDPuJ.pgp
Description: OpenPGP digital signature


Re: Build guix-daemon with Zig

2025-05-16 Thread Denis &#x27;GNUtoo7; Carikli
Hi,

On Tue, 13 May 2025 05:21:14 +0800
minung...@gmail.com wrote:
> But why Zig? As for me, Zig shows a possibitily to get rid of current
> toolchain. Even though C is not a bad language (I think C is good
> enough!), nowadays GCC is written in C++ which is a monster. Zig has
> lots of improvements comparing with C but it is still a elegant
> language. Zig can easily call and be call by C/C++, which means I can
> gradually apply Zig in a C/C++ project.

An issue to keep in mind is that there was a lot of work made to be
able to bootstrap the C toolchain from source[1].

So as I understand the current state of things in that area is that for
some architecture like x86_64 you just need a running GNU/Linux system,
guile and also and probably a script to bootstrap everything from
source.

So how could zig fit into that? Could it reduce even more the set of
minimal binaries required? Or would it require a significant amount of
work to keep all the work on bootstrapable builds if the zig language
is being used in the daemon at some point?

Another thing is that zig is known to be able to produce
binaries for recent macOS, and even cross compile them with a fully
free toolchain, and last time I checked, gcc toolchains were not
known to be able to do that but in practice I'm unsure how relevant
something like that would be as porting Guix to macOS always stalled
due to issues related to the absence of glibc for macOS.

But for that use case, it could also be relevant to use zig only for
cross compilation instead of building the guix-daemon with it, to do
something like in the case of mingw (the {i686,x8664}-w64-mingw32
targets of various guix commands like guix build), though I'm unsure if
there is a generic enough way to hook zig into various build systems
(zig cc command line options might not be exactly the same than the ones
provided by GCC, and wrappers do not always work fine (there was a GCD
about it)).

References:
---
[1]https://guix.gnu.org/manual/en/guix.html#Bootstrapping

Denis.


pgpD1iBb_WTBL.pgp
Description: OpenPGP digital signature


Re: Introducing Guixotic, a Guix/Guile worker cooperative

2025-07-20 Thread Denis &#x27;GNUtoo7; Carikli
Hi,

> Rather, this is a way to allow us to work full-time contributing. The
> idea is that paid projects, training, support, etc., will help
> improve Guix and Guile for everyone, while also supporting us to do
> more of the work we already love to do.

As I understand it, there is a lot of potential in Guix for commercial
work:

- Everything in Guix makes it easy to verify that the result of a work
  is trustworthy: it's fully free and has a community behind that
  hopefully reviews contributions, it accepts new packages easily, the
  machine definition of a VM or a package definition can easily be read
  by less technical people, even if it was hard to write in the first
  place.

- It is possible to package once and deploy everywhere and the
  abstractions in Guix allow to take that to the next level if
  necessary (cross compilation, more VM providers, run on more
  operating systems through virtualization, etc).

  For running on other operating systems, Ubuntu/Canonical has a VM
  system that is called multipass that integrate seamlessly with nonfree
  operating system terminals, so it might be possible to use that
  somehow, either with Ubuntu images (apt install guix) or if
  cloud-init is integrated in Guix at some point to also support
  nonfree operating systems.

  It might also just be possible build the 'guix' command for nonfree
  operating systems and have the daemon run in a VM somehow to be able
  to increase "the market share" of such cooperative.

But as I see it, Guix also has some fragility and limitations that can
limit a lot the market share and makes all that harder more complicated
to pull off:

- Clients need to be aware of Guix somehow and know a bit about it
  to be confident in using it somehow (instead of "Debian" for
  instance). Part of the scientific world seems to be aware at least.

- There is currently no stable branch of Guix, and some packages might
  need maintenance, especially since laws/regulations like the CRA. So
  the question is if organizations are willing to pay for regular
  maintenance on top of a rolling release somehow.

  Though to be fair I'm unsure if it's a real issue as Q/A could
  probably also be improved as here Guix also has a lot of potential. 

  For instance marionette can spawn full blown VMs, so even services
  can be tested. This could be leveraged to reduce the cost of
  maintenance hopefully to something acceptable (basically have package
  that do not break or are fixed rapidly, even with a rolling release
  models, for paying customers).

  So you could have a model where you are paid to do packaging and
  tests that go with it and then rely on a monthly/yearly subscription
  to run the official test suite and react when the the packages under
  subscription break.

  As I understand there are already rules not to break other
  people's packages in the manual anyway (in the section about sending
  patches), so we probably have all the building blocks here.

- Guix also needs to keep being as friction-less as possible to install
  and probably improve in this area.

  Right now there are discussions on getting rid of the Debian package,
  so if that happens it would have cascading effects that would make
  'guix' integration with a lot of things much more difficult, which
  complicates things a lot for the adoption of Guix for clients
  inclined to pay for commercial support. 

  Here it would be best to find ways to not only keep the Debian
  package, but in the long run also manage to fund (maybe through
  clients) improvements in making Guix also work more easily on Fedora,
  with just docker pull, making guix pull faster, etc. 

  As I understand (from feedback we got in a Guix monthly even in
  Paris), this could help the scientific world adopt Guix more which
  could then potentially bring more clients.

  Working on a scientific paper would be as simple as 'apt install guix
  && guix pull (and wait) && guix time-machine --commit=v1.4.0 -- shell
   -- command'. This looks easier than learning to create a
  DockerFile for instance.

  And then Guixotic could probably be contracted to package this or
  that dependency (either for 1 paper or with maintenance in mind)
  and/or make sure this important package does not break.

Denis.


pgpi8BfAsOh3O.pgp
Description: OpenPGP digital signature


Informal Guix 1.4.0 branch and security fixes?

2025-07-08 Thread Denis &#x27;GNUtoo7; Carikli
Hi,

Background:
---
If we look at guix packages in various distributions, we have Guix
1.4.0, 1.3.0 and 1.2.0[1].

For 1.3.0 we only have Ubuntu 22.04 and Trisquel 11, and the Trisquel
maintainer did a lot of work to update Guix from 1.3.0 to 1.4.0 but
this is not published yet as I understand.

Debian has both 1.4.0 and 1.2.0 and as I understand, many distributions
rely on Debian as the upstream for security fixes.

But the Debian package maintainer has the almost impossible task to
backport all the security fixes without a community nor help
behind[2][3] and as things are going, this will probably lead to the
Debian guix package being removed[2][3] with cascading effect for the
other distributions.

As I understand, this would also make it harder for projects that use
Guix and a forge for Q/A, because they typically use another
distribution and 'apt install guix' to run tests (guix build -f
guix.scm).

Personally I also maintain a guix package in Parabola and so I have
similar issues than Debian, and as part of GNU Boot, I also depend on
Guix from Trisquel and/or PureOS, and in Trisquel the guix package was
about to be removed at least in future Trisquel versions but I managed
to convince the Trisquel maintainer to keep the guix package if it
aligns with Debian.

Progress and questions:
---
Given the current status I gave a quick and dirty try at "backporting"
the patches and so far I have something that compiles and I will try to
test it soon[4], but it most likely requires way more work to be
something acceptable for distributions as I did it in the quickest way
possible by applying all the patches (~50) that touch the daemon between
1.4.0 and the last known security fix. I'm also not sure to find the
time to continue working on that.

The problem is also that I'm unsure how to collaborate on that. For
instance would it be possible to have some 1.4.0 branch where we could
send patches? This way it would make it easier for distributions to
collaborate, especially the less well known ones (no one will probably
look at Parabola for patches).

In the case of Debian for instance, some of the patches depend on
having a debian/ directory, so it's not ideal for downstreams that
are not Debian derivatives. 

So having some upstream could simplify things, especially if at the end
all it takes to get security fixes is to just increment a minor number
corresponding to a git tag and rebuild the package.

Manual:
---
Also I think that the pull request 927[3] that adds information in
the manual on how to workaround the slow or lack of security updates
from distributions is complementary.

Even if we get a 1.4.0 branch and that we do manage to backport fixes
correctly, it won't make it easier to update guix 1.3.0 and as I
remember seeing some user complain that Ubuntu 22.04 didn't fix the
security issues in the Guix 1.3.0 package, but I can't find it anymore.

But given the amount of work and that Ubuntu jammy is alone on that, and
that there is probably less and less interest in Debian packages due to
snap, we probably need to assume that this is the case even if I can't
find this web page anymore.

In addition backporting patches take time, and given the difficulty of
doing that here, having a better way to collaborate doesn't mean that
the patches will be backported before the announce of the
vulnerabilities and that everybody will publish the packages and the
announce and push the patches to the guix master branch at the same
time.

References:
---
[1]https://repology.org/project/guix/versions
[2]"I have no idea when or if I will be able to update the Guix package
in Debian ... at this point I am leaning towards getting it removed
from Debian, though I have put only minimal effort into trying to
backport the patches..."[2]
[3]https://codeberg.org/guix/guix/pulls/927
[4]https://codeberg.org/GNUtoo/guix-security-fixes.git

Denis.


pgp6LVrszao0J.pgp
Description: OpenPGP digital signature


Re: Informal Guix 1.4.0 branch and security fixes?

2025-07-12 Thread Denis &#x27;GNUtoo7; Carikli
On Tue, 8 Jul 2025 21:01:58 +0200
Denis 'GNUtoo' Carikli  wrote:

> Given the current status I gave a quick and dirty try at "backporting"
> the patches and so far I have something that compiles and I will try
> to test it soon[4]

I had to install slirp4netns and recompile Guix from scratch, but then
my quick and dirty "backport" seems to work:
> substitute: updating substitutes from
> 'https://bordeaux.guix.gnu.org'... 100.0% substitute: updating
> substitutes from 'https://ci.guix.gnu.org'... 100.0% building path(s)
> `/gnu/store/q7zx2204nxc1m8vdq0w4p05y4bp8jra2-check-abstract-socket-hole'
> killing process 1754127 Abstract Unix-domain socket hole is CLOSED,
> build failed with "while setting up the child process: in phase
> waitForSlirpReady: unexpected end-of-file".

Now I guess the next step could be to try to reduce the amount of
patches and test the previous security vulnerabilities as well. I've
code to do that automatically[1], but here too there is room for
improvements as this code that comes from the blog posts about security
issues probably needs to be integrated in Guix proper somehow.

References:
---
[1]https://git.sr.ht/~gnutoo/guix-security-tests

Denis.


pgpstmsB4KE81.pgp
Description: OpenPGP digital signature


Re: How (not to) deal with upstreams that have _extremely_ toxic maintainership Was: xlibre X11 server

2025-08-03 Thread Denis &#x27;GNUtoo7; Carikli
On Fri, 1 Aug 2025 16:34:22 +
spacecadet  wrote:

> Are you still talking about xlibre?
No, nothing in my mail was specific to Xlibre, this is why I changed the
subject name.

To discuss Xlibre specifically I would need to do more research
and try to assess the risk for Guix contributors. 

Many things can be subjective in that kind of assessments, so I'd
prefer looking at the facts myself before joining the discussion on
Xlibre specifically (assuming this becomes important and/or that I find
the time to do that).

Though I found important nevertheless to try to explain what is at
stake here more generally, especially because Xlibre isn't the only
software that could be affected by this more general problem (I also
know another one with potentially similar issues that isn't in Guix
and that is famous enough to got an article about it on lwn.net).

I also think that it could be easier to separate the discussions on the
more general problem and on the specific case of Xlibre. This of course
doesn't prevent each discussions to inform each other.

For instance if no extremely toxic upstreams exist, all that discussion
is pointless. But if there are real issues, and that people are
seriously considering packaging software that have such upstream,
having some criteria to look at them is something worth discussing.

> Most of what you wrote boils down to "what if" the maintainers make
> some bad decision or yell at a packager.

Not exactly, it's more about finding ways to manage risks for
Guix contributors.

The Debian documentation that Efraim Flashner pointed to shows that
Debian is doing that kind of assessments in some way on a case-by-case
basis already and their rationale for doing that makes sense.

So I don't think it would be a bad thing to consider doing something
like that as well when the health of contributors is at stake.

This doesn't mean that we never need to deal with aspects that
aren't health related, but these are way easier to deal with as we
already have everything we need to do that (we can patch, fork,
discuss with upstream, not package because the maintenance is too high,
etc).

I also can't talk for everybody but for me as long as the contributor
experience is okay, I can even contribute to various upstream that have
goals that are completely opposed to mine and/or that actively hurt me
and other people in other contexts, and I've done that many times with
very different upstreams, and these contribution didn't have any
negative health effects.

These contributions were usually limited to things that a reviewer
of a Guix package might ask to contribute upstream (licensing issues,
packaging issues) or to things I needed personally or for another
project so the cost benefit analysis was good each time.

However I would like to avoid being pushed to contribute to projects
that try to actively harm some of their contributors when they
contribute, and I don't expect that being on my own to try to
understand when this is the case will work.

And the fact that some people did bring up issues with Xlibre shows
that a community response can work here: some people were aware of
potential issues and they spoke up.

Denis.


pgp1VZCiOgo7W.pgp
Description: OpenPGP digital signature


How (not to) deal with upstreams that have _extremely_ toxic maintainership Was: xlibre X11 server

2025-07-31 Thread Denis &#x27;GNUtoo7; Carikli
On Wed, 02 Jul 2025 15:40:34 +0200
Ludovic Courtès  wrote:
> > So yeah, spacecadet, if you really want to continue to package it,
> > we would add it to Guix, I don't think there's any policy in Guix
> > against it (unless their documentation or so is also part of the
> > package and includes political messages that promote any kind of
> > discrimination).
> 
> This is entirely correct.  However, as a project, we have a code of
> conduct and generally work to be inclusive, which is apparently the
> exact opposite of what this people are doing.
> 
> I think we can’t ignore it or we’d be sending the wrong signal.

This is a good point, but many people probably don't understand what it
means practically and I'd like to explain that to make sure we don't do
the wrong thing here.

To do that I'd like to add a trigger warning first because unwrapping
what all that means means looking at extremely negative things that are
not technical anymore but human issues (which are at the end of this
post).

The practical consequences and risks that could turn out to be
disastrous, depend a lot on how upstream really behaves.

For a start, I think that how upstream behaves with regard to
contributions is relevant to any downstream in general.

For instance if the maintainers take really bad technical decisions,
that also affect Guix as a downstream.

For instance they could refuse to fix security issues, refuse patches
because "ARM is not important", purposely include code that sabotage
their software when they detect it is running under Debian, include
nonfree software, have bad legal practices, etc.

Then all that affect downstream in some way, forcing the downstream
projects to take decisions and at least to discuss in some way with the
upstream project to hopefully reach some way to make things work for
everybody.

The example I gave are all real and this has led to discussions inside
downstream distributions (especially Debian) and sometimes even to forks
if the matter could not be resolved. These discussions also take time
and energy from the contributors.

Here I didn't verify the allegations against Xlibre, and I'm more
concerned about the general issue: basically software with
extremely toxic maintainership (more on what it means below, 
between the trigger warnings).

The problem is that that kind of software makes it in Guix, it would
push Guix users and contributors to interact with its upstream in
some way, to fix this or that issue, especially when it affects Guix
(for instance fix a compilation issue with a newer compiler, etc). And
if upstream is extremely toxic that could have disastrous consequences
for these contributors.

And this happened to me multiple times: I contributed to upstream to
fix issues I had in Guix, and once I was even very strongly pushed by
Guix to do so (with adl-submit) and became (co-)maintainer of the
project because of that. And in these cases the maintainers were nice.

And we definitely don't want to push contributors to interact with
projects that are known to be extremely toxic, so when there are
strong allegations like the ones that were reported earlier in this
thread, if they are true, the risk of having extremely toxic
maintainership is extremely high, especially if there are not
safeguards against toxic behavior.

And the problem here is that if upstream behave in an extremely toxic
way and if a fork is made, it will also push the people who are
responsible of the fork to have to interact with upstream, which again
raises the same issues.

And if the fork is abandoned because upstream is way too toxic, it
creates again the same issues.

And if people go their own ways (like re-implement the project with
extremely toxic maintainership from scratch) instead of simply forking
it, the alternative project will needs to be very robust not to push
people toward the original project if the alternative fails.

So all that are good reasons to stay as far as possible from this mess.

/!\ Trigger warning /!\

This is especially the case because I don't see anyway to give
guarantees that extremely bad things won't happen.

Usually the guarantees are not that great as some maintainers are
difficult to work with, while other are really nice, so it depends a
lot on the maintainers or how well they feel and the interactions
themselves (which depend on the people and on a lot of things). There
are also a lot of different opinion and feelings on that.

But here we are talking about maintainers specifically discriminating
people in very violent ways, during their role as a maintainer, so we
probably all agree that this is way too dangerous, and that this is
bad, and that it needs to be avoided. 

I assume we all agree here because the only discussion here was if we
could package the software maintained by such people, not if the
behavior of these people was justified in some way.

And given that I've shown that there is a risk that people contributing
to Guix could be exposed to such maintain

Re: xlibre X11 server

2025-07-31 Thread Denis &#x27;GNUtoo7; Carikli
Hi,

> X.org is not getting developed further, but Xlibre is trying to
> update the codebase.

I would also like to note that Wayland is still not a drop-in
replacement for Xorg, even with a compatibility layer, and it's not
necessary a problem either as long as people can choose.

For instance I somewhat recently switched from sway to i3 because I can
see 1080p videos with VLC on a ThinkPad X200 but I'm limited to 480p on
Wayland with VLC (and maybe 720p with mplayer but some 1080p videos are
too slow to be played).

I suspect it has something to do with the xv video resizing
acceleration that is missing on Wayland.

Not so long ago there was also a huge gap with graphical tablets on
Wayland[1], though over time this has more probability of getting fixed
than the lack of XV.

These are the two thing on the top of my head but I guess there are
more and people are probably working to address some of these gaps
as well.

References:
---
[1]https://www.davidrevoy.com/article1030/debian-12-kde-plasma-2024-install-guide#1-wayland

Denis.


pgp1u1EYMgUzw.pgp
Description: OpenPGP digital signature