* [GSoC 2020] [Proposal draft #1] Clojars importer for Guix
@ 2020-03-27 4:09 Leandro Doctors
2020-03-27 19:30 ` [GSoC 2020] Mentors? (Clojars importer for Guix) Leandro Doctors
` (2 more replies)
0 siblings, 3 replies; 7+ messages in thread
From: Leandro Doctors @ 2020-03-27 4:09 UTC (permalink / raw)
To: Guix Devel
Dear all,
Below, I share my second draft.
1. Overview: still needs to be completed with material from the
unfinished sections.
2. Problem Statement: fully developed, only need to add some data (you
will note [the placeholders])
3. Solution Overview: this is definitely the less developed section. I
still need to add much more details (which options I see, which one I
will implement, why...)
Even though I have a stub for the remaining sections (mainly, the
implementation stages and planning), their content will be defined
once I have stabilized the content for these sections.
Again, you will notice a few placeholders for data [note: marked with
notes like this one :-)].
Looking forward for your feedback!
Best,
Leandro
***************************
Clojars importer for Guix
Leandro Doctors
1 Overview<sec:Overview>
Guix supports importing packages from multiple, diverse sources.
All this offering of software platforms enables Guix as a
competitive option to a wide variety of users.
Whereas the array of supported Guix sources is indeed vast and
diverse, there is a major source yet to be supported: JVM
packages. JVM comprise a major source of software: as of March
2020, there are more than LLL[note:
TODO: add number (with source).
] languages that run on the JVM, with more than PPP[note:
TODO: add number (with source).
] packages.
The main de facto repository for JVM packages is “The Central
Repository” (formerly known as “Maven Central”). However, as TCR
does not support license metadata and explicit repository
linking, supporting it does not seem to be an ethical choice for
Guix.
Fortunately, Clojars, the de facto repository for Clojure
packages, supports the features Guix requires. Considering that
Clojure (a libre, modern LISP dialect) is among the most popular
JVM languages, Clojars would be a very valuable addition to the
list of Guix importers. Finally, as Guix is also written in a
LISP dialect, this would have the additional benefit of bringing
together a kindred functional programming community.
[note: TODO: add list of deliverables]
2 Problem Statement<sec:Problem-Statement>
Guix supports importing packages from multiple, diverse sources.
They range from metadata from the GNU System, repositories such
as the Python Package Index and the Comprehensive R Archive
Network, down to plain JSON metadata files. Supporting a broad
offering of package sources does not only provide Guix with a
broad catalog of packages, it also enriches it with a plethora of
languages to choose from. All this offering of software platforms
enables Guix as a competitive option to a wide variety of users.
Whereas the array of supported Guix sources is indeed vast and
diverse, there is a major source yet to be supported: JVM
packages[footnote: Guix does include many Java packages, but none of
them support
their dependencies]. The Java Virtual Machine is one of the most
popular platforms
for software development, comprising around DDD[note:
TODO: add number (with source).] of estimated developers worldwide.
Whereas initially intended
for a single language (Java), the JVM has been used as a platform
to develop new languages. The only requirement that any language
hosted on the JVM platform has to comply with is to generating
bytecode artifacts compliant with the JVM specifications. In this
way, as of March 2020, there are more than LLL[note:
TODO: add number (with source).] languages that run on the JVM.
JVM packages are distributed via .jar files -compressed files
containing bytecode files. The main de facto repository for JVM
packages is “The Central Repository” (formerly known as “Maven
Central”)[footnote: The Central Repository Search Engine:
https://search.maven.org/]. TCR mainains a network of over PPP[note:
TODO: add number (with source).]
JVM packages, mainly written in Java. Every package from TCR
also specifies on which other packages it depends on. As with any
client-server architecture, TCR takes care of maintaining the
dependency graph and any tool that wants to fetch packages from
TCR takes care of defining the best way of traversing it,
according to its user's commands. There are many tools used to
access TCR and manage package dependencies according to different
heuristics. Depending on the programming language used, the most
popular include Ant, Maven, Gradle, Ivy...
However, supporting TCR does not seem to be an ethical choice for
Guix. To begin with, TCR does not encourage package maintainers
to publish their packages under a free software license (nor to
even publish their sources). Moreover, even though a considerable
number of TCR-hosted packages do use a free software license, TCR
fails to provide any explicit licensing metadata, nor an explicit
link to their repository. These two points force the user to use
a third-party search engine with respect to both license
compliance and package auditing. Therefore, whereas it is
definitely possible reconciling Guix freedom-respecting values
with using TCR-hosted packages, supporting TCR as a Guix import
source (unless TCR adds license metadata and explicit repository
linking) seems extremely difficult, if not impossible.
Whereas supporting JVM languages that rely on TCR as a primary
package repository source may be unfeasible at this point,
nothing prevents supporting any other JVM package repository, as
long as it supports both license compliance and repository
linking metadata. Fortunately, Clojars, the de facto repository
for Clojure packages, supports the features Guix requires.
Considering that Clojure (a libre, modern LISP dialect) is among
the most popular JVM languages, Clojars would be a very valuable
addition to the list of Guix importers. Finally, as Guix is also
written in a LISP dialect, this would have the additional benefit
of bringing together a kindred functional programming community.
3 Solution Overview<sec:Solution-Overview>
Clojars[footnote: Clojars: https://clojars.org], the de facto
repository for Clojure packages, would be a very valuable addition to
the list of Guix importers. Firstly, Clojure
(a libre, modern LISP dialect) is the third most popular JVM
language[footnote:Source: the 2020 JVM Ecosystem Report
https://snyk.io/blog/jvm-ecosystem-report-2020/]. Moveover, as the
main Guix language, Scheme, is another LISP
dialect, it would be certainly beneficial for Guix developers to
bring together a kindred functional programming community: it is
very likely that among the new Clojure users we may find new
potential contributors to Guix.
Considering that many Clojure packages are replicated across
Clojars and TCR, the importer could work in the following way[footnote:
Thanks to Julien Lepiller for the first draft of this mechanism.]:
when requesting a package, first, it would try importing it
from Clojars. If this fails, it would import the package from
TCR, without source nor licensing information. In short, to try
multiple repositories, from the most desirable to the least
desirable. In all cases, it would use the existing dependency
information.
4 Implementation Plan<sec:Implementation-Plan>
4.1 Stages & Deliverables
4.2 Timeline & Milestones<sec:Timeline-&-Milestones>
A About the Applicant<sec:Personal-background>
*******************
^ permalink raw reply [flat|nested] 7+ messages in thread
* [GSoC 2020] Mentors? (Clojars importer for Guix)
2020-03-27 4:09 [GSoC 2020] [Proposal draft #1] Clojars importer for Guix Leandro Doctors
@ 2020-03-27 19:30 ` Leandro Doctors
2020-03-27 19:47 ` [GSoC 2020] [Proposal draft #1] Clojars importer for Guix Leandro Doctors
2020-03-31 18:06 ` [GSoC 2020] [Final Proposal] " Leandro Doctors
2 siblings, 0 replies; 7+ messages in thread
From: Leandro Doctors @ 2020-03-27 19:30 UTC (permalink / raw)
To: Guix Devel
On Fri, 27 Mar 2020 at 01:09, Leandro Doctors <ldoctors@gmail.com> wrote:
> Below, I share my second draft.
One very important question:
Even though my draft still needs to be improved to be considered a
complete proposal...
Are there people willing to mentor this idea?
Best,
Leandro
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [GSoC 2020] [Proposal draft #1] Clojars importer for Guix
2020-03-27 4:09 [GSoC 2020] [Proposal draft #1] Clojars importer for Guix Leandro Doctors
2020-03-27 19:30 ` [GSoC 2020] Mentors? (Clojars importer for Guix) Leandro Doctors
@ 2020-03-27 19:47 ` Leandro Doctors
2020-04-15 20:57 ` Pjotr Prins
2020-03-31 18:06 ` [GSoC 2020] [Final Proposal] " Leandro Doctors
2 siblings, 1 reply; 7+ messages in thread
From: Leandro Doctors @ 2020-03-27 19:47 UTC (permalink / raw)
To: Guix Devel
On Fri, 27 Mar 2020 at 01:09, Leandro Doctors <ldoctors@gmail.com> wrote:
> Below, I share my second draft.
I've just realized I haven't used the template from the GNU GSoC
Guidelines page[1]...
Sorry for that. I will use that template for my next draft.
Best,
Leandro
[1]: GNU guidelines for Summer of Code projects:
https://www.gnu.org/software/soc-projects/guidelines.html
^ permalink raw reply [flat|nested] 7+ messages in thread
* [GSoC 2020] [Final Proposal] Clojars importer for Guix
2020-03-27 4:09 [GSoC 2020] [Proposal draft #1] Clojars importer for Guix Leandro Doctors
2020-03-27 19:30 ` [GSoC 2020] Mentors? (Clojars importer for Guix) Leandro Doctors
2020-03-27 19:47 ` [GSoC 2020] [Proposal draft #1] Clojars importer for Guix Leandro Doctors
@ 2020-03-31 18:06 ` Leandro Doctors
2020-03-31 18:15 ` Leandro Doctors
2 siblings, 1 reply; 7+ messages in thread
From: Leandro Doctors @ 2020-03-31 18:06 UTC (permalink / raw)
To: Guix Devel
[-- Attachment #1: Type: text/plain, Size: 411 bytes --]
Dear all,
Below, I share the final version I uploaded to the GSoC website.
Known bug: I have noticed that the timeline table does not fully fit
into the page size I chose. I am working on a fix, and will send a
amended version to this list ASAP.
Again, please feel free to submit your feedback so I can address any
comments you may have during the review phase.
Thank you for your time and support,
Leandro
[-- Attachment #2: full.proposal--guix--clojars.importer.pdf --]
[-- Type: application/pdf, Size: 236467 bytes --]
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [GSoC 2020] [Final Proposal] Clojars importer for Guix
2020-03-31 18:06 ` [GSoC 2020] [Final Proposal] " Leandro Doctors
@ 2020-03-31 18:15 ` Leandro Doctors
2020-04-01 6:51 ` Pierre Neidhardt
0 siblings, 1 reply; 7+ messages in thread
From: Leandro Doctors @ 2020-03-31 18:15 UTC (permalink / raw)
To: Guix Devel
On Tue, 31 Mar 2020 at 15:06, Leandro Doctors <ldoctors@gmail.com> wrote:
> Below, I share the final version I uploaded to the GSoC website.
Another bug: I didn't mention how I plan to publicly report my
progress over the course of my work. Besides the normal interaction
via this list, I will send (at least) three progress reports. One
progress report to this list (with a post on the Guix blog) after each
Evaluation. Additionally, I may also send irregular updates when I
achieve important milestones.
Sorry for this oversight,
Leandro
^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2020-04-15 21:03 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2020-03-27 4:09 [GSoC 2020] [Proposal draft #1] Clojars importer for Guix Leandro Doctors
2020-03-27 19:30 ` [GSoC 2020] Mentors? (Clojars importer for Guix) Leandro Doctors
2020-03-27 19:47 ` [GSoC 2020] [Proposal draft #1] Clojars importer for Guix Leandro Doctors
2020-04-15 20:57 ` Pjotr Prins
2020-03-31 18:06 ` [GSoC 2020] [Final Proposal] " Leandro Doctors
2020-03-31 18:15 ` Leandro Doctors
2020-04-01 6:51 ` 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).