unofficial mirror of guix-devel@gnu.org 
 help / color / mirror / code / Atom feed
* Guix Front End (GUI) and making it more mainstream, popular in scientific community.
@ 2020-10-29 16:25 Aniket Patil
  2020-10-29 18:22 ` jbranso
                   ` (2 more replies)
  0 siblings, 3 replies; 30+ messages in thread
From: Aniket Patil @ 2020-10-29 16:25 UTC (permalink / raw)
  To: guix-devel

[-- Attachment #1: Type: text/plain, Size: 1603 bytes --]

Hi all,

I am a researcher in the field of AI. Many of the people in the field of AI
are inclining towards GNU/Linux operating systems. Particularly I would say
they use Ubuntu. In general, they can also use LinuxMint or any other
GNU/Linux distro of their choice. What I noticed in these people
(researchers) they tend to be more focused on mathematical aspects and
scientific programming. If we build a GUI frontend then we can attract more
people who don't identify themselves with CLI users. As such there are many
people like writers, Graphic Designers, General users, etc. who don't
bother about CLI, will love to see such a package manager.  And considering
the fact GUIX lets rollback to the previous version of the package it will
be very helpful in the scientific community, to maintain and work with
different versions of packages.

For example, the LAMBDA ( consist of TensorFlow, PyTorch, Keras, NVIDIA
Cuda, Ubuntu) stack is very popular in the field of AI. Now if a person
with a fresh install of GNU/Linux wants to install the stack and work
immediately, through GUI he can search for the recipe of LAMBDA and install
it. Not only that if it doesn't exist, but they can also create and share
their own recipe with other guix users or to the main server/repo. E.g
Linus Torvalds shares the recipe of building a Linux kernel environment.
User finds it, installs it, and start working on the development of the
Linux kernel immediately.

P.S: I don't know whether GUI for Guix exists or not, to my knowledge it
doesn't. If I am mistaken please enlighten me on this topic.

Regards,
Aniket.

[-- Attachment #2: Type: text/html, Size: 1772 bytes --]

^ permalink raw reply	[flat|nested] 30+ messages in thread
* GNOME in Guix
@ 2020-11-02 13:51 Leo Prikler
  2020-11-03  9:14 ` Danny Milosavljevic
  0 siblings, 1 reply; 30+ messages in thread
From: Leo Prikler @ 2020-11-02 13:51 UTC (permalink / raw)
  To: dannym; +Cc: guix-devel

Hi Danny,

Am Montag, den 02.11.2020, 11:17 +0100 schrieb Danny Milosavljevic:
> Hi,
> 
> On Mon, 02 Nov 2020 08:44:29 +0100
> Pierre Neidhardt <mail@ambrevar.xyz> wrote:
> 
> > Danny Milosavljevic <dannym@scratchpost.org> writes:
> > > Not much more works yet because I've hit this (design) bug in
> Guix and/or 
> > > GNOME:
> > >
> > > * https://github.com/spk121/guile-gi/issues/96  
> > 
> > Have you tried g-golf?  The Nomad browser uses it, it may not
> suffer
> > from the aforementioned issue.
> > Thoughts on that?
> 
> It really depends on what you mean.  If it also uses gobject-
> introspection, it
> will have the same problem.
As much as I rant about nomad in IRC now and then, it is still a rather
sophisticated program, and as a user I have not yet encountered any
problem similar in effect to what is described here.  
The bugs I do encounter whenever I try it out for my own amusement are
much rather due to g-golf and emacsy being in rather early stages of
development and therefore not feature-complete.

I am not sure, whether the Nomad devs have encountered a problem
similar to Guile-GI#96 (I myself am not one), but the Guile-GI devs
speculate, that the problem is somewhat specific to their
implementation.
They also mention, that you should still be able to prototype your
application by using "--no-grafts" for the development environment.  Do
you still encounter Guile-GI#96 after packaging?  If so, you might want
to explain your situation upstream, so that they can better help you.

> Even gobject-introspection links to glib internally, then registers a
> class in
> that, THEN opens (potentially another) glib at runtime using dlopen
> in the same
> address same.
> I'm pretty sure that GNOME is not designed for that.  If you then use
> the
> dlopened glib to use the first-mentioned class, good luck with that.
> 
> The only reason it didn't fall onto the head of users of other
> distributions
> is because those don't support internal dependencies of packages at
> all--so
> you always have to update all in lockstep.  So the following can only
> happen
> in Guix:
> 
> If a library A has an input Q, and library B has the same input Q,
> and you
> use A and B in your program, and then you (guix-) update just B to
> use Q'
> (for example a newer version of Q) and recompile your program, then
> you have
> both Q and Q' in your process address space!
> 
> Q is an internal dependency of A, and by coincidence it's an internal
> dependency of B, too. Just because the internal dependency of B
> changed
> shouldn't change the internal depenency of A--that's what "internal"
> means.
Sure, but that's only if either of them ends up using a different
version.  That should not be the case for Guix' GNOME stack apart from
some bootstrap shenanigans, that don't really matter at the point of
application packages.

In order to make use of any GI in Guix, you need
- the GI bindings (one of python-gobject, g-golf, guile-gi, gjs, etc.),
- *and* the packages of the libraries themselves
as inputs to your package.  So the resulting graph for your package
will always be complete and should only contain one relevant package
per library.

And yes, you can totally do that on other distros as well.  (One way to
do so would be to use Guix on them ;D)  It's just that users typically
shy away from installing conflicting versions of the same package,
whereas Guix will happily allow them to coexist and go out of its way
to deal with potential issues arising from that.

> I think that the gobject type registry does not consider that it can
> happen
> to have to classes with the same class name, registered in respective
> internal dependencies.  The objects of the internal dependency
> shouldn't
> be available to the outside program in the first place.

Yes it does, or at least you can check, whether a type of that name is
already registered and bail.  You could even do so in Guile-GI as you
are instantiating the types, but I doubt upstream devs want to bail
when they encounter a reserved type.

> That means actually we should propagate a lot of GNOME inputs, which
> means
> in practice what a regular user has in his profile will be very much
> like
> in other distributions, and internal dependencies will become a weird
> corner
> feature nobody uses.

No, it does not.  It perhaps means, that we might want to take care of
GI_TYPELIB_PATH in glib-or-gtk-build-system.  It at least would make
sense to add logic dealing with gobject-introspection to glib-or-gtk-
wrap, which could then be reused in other build systems as well.

Packages, be they GNOME or not, should be dynamically linked, so that
Guix can correctly graft them.  Assuming correct grafting, the library
loaded from GI_TYPELIB_PATH should be the same as the library loaded
internally with the build setup I discussed earlier. 

> Does anyone know how to make dlopen fail on duplicate global
> variables?
No, but I don't think that is too relevant here.  See my earlier point
on how it *is* possible to handle this with the methods GLib provides.

Am Donnerstag, den 29.10.2020, 20:34 +0100 schrieb Danny Milosavljevic:
> Or I could just use Gtk in C and use popen("guix ...").
You're probably joking, but you should know, that I had moderate
success passing around just data from Guile to Gtk while not using g-
golf or guile-gi.  You could either do all your conversions in C like I
did back then or declare your own data models as C structs and then
fill them from guile using e.g. guile-bytestructures.
Obviously, it would be nicer if one could program the GUI itself in
Guile, but you are free to make the choices you feel are fitting.

A slightly more elaborate approach would be to try and expose Guix over
DBUS (this would require guile bindings to dbus, that afaik don't exist
outside of projects that want to happily marry Guile and GNOME).  Once
that is written, you could again write your GUI in any language.  Using
DBUS would probably also enable you to get fine-grained control over
when to grant administrative privileges for `guix system`.

Regards, Leo



^ permalink raw reply	[flat|nested] 30+ messages in thread

end of thread, other threads:[~2020-11-06  9:56 UTC | newest]

Thread overview: 30+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-10-29 16:25 Guix Front End (GUI) and making it more mainstream, popular in scientific community Aniket Patil
2020-10-29 18:22 ` jbranso
2020-10-29 18:38   ` Pierre Neidhardt
2020-11-01 21:46     ` Ludovic Courtès
2020-11-02  7:40       ` Pierre Neidhardt
2020-11-02  8:27         ` Jan Nieuwenhuizen
2020-10-29 18:45   ` jbranso
2020-11-02  7:41     ` Pierre Neidhardt
2020-10-29 19:15 ` zimoun
2020-10-30  8:49   ` Lars-Dominik Braun
2020-11-01 21:53     ` Ludovic Courtès
2020-11-02 10:03       ` Taylan Kammer
2020-11-02 10:24       ` Gtk via the web Danny Milosavljevic
2020-11-03  9:54         ` aviva
2020-11-03 13:31         ` Ludovic Courtès
2020-10-29 19:34 ` Guix Front End (GUI) and making it more mainstream, popular in scientific community Danny Milosavljevic
2020-11-01 22:09   ` Ludovic Courtès
2020-11-02  7:44   ` Pierre Neidhardt
2020-11-02 10:17     ` GNOME in Guix Danny Milosavljevic
2020-11-06  9:41       ` Pierre Neidhardt
  -- strict thread matches above, loose matches on Subject: below --
2020-11-02 13:51 Leo Prikler
2020-11-03  9:14 ` Danny Milosavljevic
2020-11-03 13:41   ` Leo Prikler
2020-11-03 19:26     ` Danny Milosavljevic
2020-11-03 23:20       ` Leo Prikler
2020-11-04  8:08         ` Danny Milosavljevic
2020-11-04  9:45           ` Leo Prikler
2020-11-04 13:43             ` Danny Milosavljevic
2020-11-04 14:02               ` Leo Prikler
2020-11-06  9:55   ` Pierre Neidhardt

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/guix.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).