directory-discuss
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: About the status of Microsoft .NET


From: Denis 'GNUtoo' Carikli
Subject: Re: About the status of Microsoft .NET
Date: Sat, 23 Dec 2023 04:16:38 +0100

On Thu, 21 Dec 2023 02:06:40 -0500
bill-auger <bill-auger@peers.community> wrote:
> to be sure we are on the same page, that ticket and this mail thread
> are not about 'mono' - mono is a different implementation and
> distinct parabola package, with it own set of dependents, and no
> intersection or conflict with dotnet dependents
I only looked into mono itself and I misunderstood because people
usually use mono under GNU/Linux to write/execute C# programs. And I
didn't know people packaged Microsoft C# implementation.

Though:
- Mono has the bootstrapping issue I described[1]. Though I was wrong
  as it doesn't need any patching as it can use the system mono. The
  'monolite' method that download mono is only used as an alternative
  to that.
- I'm not aware of any spying issue in mono. That doesn't mean there is
  none or that there are some.
- Mono probably also contains part of .NET if that document is still up
  to date:
  https://www.mono-project.com/docs/about-mono/dotnet-integration/

> i was thinking more that i could not build it from source - that also
> may be an FSDG grey area; but i would consider it to be a loophole
> which should be closed
I didn't look into the Microsoft .NET implementation so I can't tell
but it could very well downloads binaries of itself or its previous
version just to bootstrap the compiler.

If it is the case several options are possible here but if you want
to keep that package the easiest approach is probably the one that I've
described in my previous mail. Removing the packages also work and is
less work.

Note that building from source is different from "having no circular
dependencies" and/or having a "full source bootstrap".

For instance in Parabola java8-openjdk is built from source but to
build it you need the 'java-environment=8' dependency which is provided
by java8-openjdk.

In contrast in Guix icedtea-7 depends on jamvm which depends on
jamvm-1-bootstrap which is written in C if I recall well and it's built
from source. This is a full source bootstrap (assuming the C is human
readable and not machine generated).

The downside of the full source bootstrap is that bootstrapping
compilers that can't already be bootstrapped from only source code is
usually a very big work that often requires to write new compilers
(like mrustc that can bootstrap rust from C).

> On Thu, 21 Dec 2023 04:36:13 +0100 Denis wrote:
> > If someone wants to ship Mono in Parabola an easy way to fix it
> > could be to make a package that first downloads the mono binaries to
> > bootstrap mono, install but not ship the resulting package and then
> > use it to build a second package that doesn't download binaries but
> > use the previously built mono instead.  
> 
> so maybe we need a bug reports about that?
The issue is probably finding someone interested in working on that
and/or deciding what to do if that doesn't happen.

> On Thu, 21 Dec 2023 04:36:13 +0100 Denis wrote:
> > For shipping Mono in Guix it would most likely need to be
> > bootstrapped from source somehow or at least from some generated
> > source code (like Vala) which probably require a lot more work.  
> 
> why would guix bootsrapping dotnet be different than parabola? -
> areHere I don't see why it would be impossible to build it from
> source. you referring to policy?
Yes. In Guix you can't use a java binary to bootstrap java. In Parabola
you could.

The Guix policy requires you to at least use some form of source code
to bootstrap packages like compilers, build systems (like make, ant,
grade, etc) and so on. People manage to get funding through NLnet to
fix that issue one compiler at a time.

Though Guix still has some binaries for GCC for some architectures but
these are really small and they got rid of it for at least x86_64.

And Guix is the most advanced distribution (of all distributions, not
only FSDG) on that issue.

Though the reality is that even in Guix the situation looks like a
compromise as generated source code is allowed. For instance Vala is a
compiler that translates vala to not-very-readable C, and the vala
compiler is written in vala. Since vala also releases not-very-redeable
C versions of that compiler, Guix uses that to bootstrap the vala
compiler.

What is nice here is that nothing prevent other distributions from
reusing Guix's work to make more compilers bootstrapable in other FSDG
distributions like Parabola. Personally I worked a bit on that
by making GCC cross compilers bootstrapable in Parabola but I didn't
try to bootstrap java in Parabola for instance (it's relatively easy to
do though).

References:
-----------
[1]From https://github.com/mono/mono/raw/main/README.md
   "Note that building from Git assumes that you already have Mono
   installed, so please download and install the latest Mono release
   before trying to build from Git. This is required because the Mono
   build relies on a working Mono C# compiler to compile itself (also
   known as bootstrapping)."

Denis.

Attachment: pgp8kjx3VMpMj.pgp
Description: OpenPGP digital signature


reply via email to

[Prev in Thread] Current Thread [Next in Thread]