From mboxrd@z Thu Jan 1 00:00:00 1970 From: Julien Lepiller Subject: Re: [GSoC 2020] [Proposal draft #0] Initial JVM support for Guix Date: Mon, 23 Mar 2020 11:39:15 -0400 Message-ID: References: Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Return-path: Received: from eggs.gnu.org ([2001:470:142:3::10]:55158) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jGPAz-0007m1-5V for guix-devel@gnu.org; Mon, 23 Mar 2020 11:39:42 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1jGPAx-0003nz-DP for guix-devel@gnu.org; Mon, 23 Mar 2020 11:39:40 -0400 Received: from lepiller.eu ([2a00:5884:8208::1]:34208) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1jGPAw-0003iv-RM for guix-devel@gnu.org; Mon, 23 Mar 2020 11:39:39 -0400 In-Reply-To: List-Id: "Development of GNU Guix and the GNU System distribution." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guix-devel-bounces+gcggd-guix-devel=m.gmane-mx.org@gnu.org Sender: "Guix-devel" To: guix-devel@gnu.org, Leandro Doctors Le 23 mars 2020 11:21:06 GMT-04:00, Leandro Doctors = a =C3=A9crit : >On Fri, 20 Mar 2020 at 21:41, Leandro Doctors >wrote: >> On Tue, 3 Mar 2020 at 19:32, zimoun >wrote: >> > Based on your interests (Clojure, Leiningen, etc=2E), you should >> > consider something around a Clojure "importer"=2E >> >> I am preparing my proposal=2E I will send it in the next few days=2E > >Hello, everybody! > >This is my first draft (at the bottom of this message)=2E Please note >that the document is in a very early stage, so at this point there are >still many questions unanswered (to which I have added some notes >below)=2E > >Your feedback will be crucial in answering questions and evolving the >attached draft into a full proposal=2E > >Best, >Leandro > > >****** Notes ****** >- Whereas I may switch to org-mode, I am currently using LyX for >writing the proposal=2E >- I thought plain text was the best for getting feedback=2E If you think >another format is better (Markdown, LaTeX, PDF=2E=2E=2E) please let me kn= ow=2E >Pandoc is my friend :-) >- I watched the whole Guix-Jupyter Scicloj video session from last >January 9th, 2020=2E >https://scicloj=2Egithub=2Eio/posts/2020-03-07-guix-jupyter/ >- From what I see, in Guix there are compilers and importers (I'm in >the process of getting familiar to this terminology)=2E >- There is already a compiler for Clojure, and Clojure has been >packaged into Guix=2E However, there is no importer for Clojure >packages=2E=2E=2E >- I agree with some comments from the talk: given that Clojure is a >hosted language, merely importing "Clojure packages" is impossible=2E In >this case, as Clojure is hosted in the JVM, we should aim to importing >Maven (an eventually, also Clojars) packages=2E So, adding "Clojure >support" would mean "adding JVM support"=2E >- I guess that supporting tools/deps=2Eedn would enable supporting Maven >dependencies? >- Packaging clojupyter would be a potential task to consider during >the first coding period (maybe even before?) > > > > >******************** Draft ********************** > > >Initial JVM support for Guix > >Leandro Doctors > > >1 Overview > >Add support for importing JVM packages (jar files) into Guix=2E > > >2 Status Quo > >Guix supports importing package metadata from multiple sources=2E >Currently, these sources are as diverse as GNU packages, >repositories such as the Python Package Index and the >Comprehensive R Archive Network, and JSON files=2E However, there >is another source not yet supported by Guix: JVM-based languages=2E >Currently, Guix does not support importing from any JVM-based >language, such as Java, Clojure=2E Considering Java is the most >used programming language, this would be a very valuable addition >for Guix=2E > > >3 Status Desideravit > > >3=2E1 Objectives > >1=2E Add a JVM importer=2E > >2=2E Also support Clojure jars=2E > > >3=2E2 Benefits > >=E2=80=A2 Gain access to the JVM environment=2E > > >4 Implementation Plan > > >4=2E1 Stages & Deliverables > > > >4=2E2 Timeline & Milestones > > >Note: I have considered 5-days weeks for all periods, so there >can be slack time if needed=2E > >1=2E Student Application Period (March 16th - 31st) (2 weeks) > > =E2=80=A2 Start flicking through Guix's code=2E [done] > =E2=80=A2 Set up a development environment=2E [done] > =E2=80=A2 Start learning the basics about Guix's internal processes > (release management, developer interactions, codes of > conduct=2E=2E=2E)=2E > =E2=80=A2 Start reading Guix documentation=2E [in progress] > =E2=80=A2 Start exploring possible approaches to implement proposed > features=2E [in progress] > >2=2E Application Review Period (March 31st - April 27th) (4 weeks) > > =E2=80=A2 Open PRs with small code and/or documentation glitches > discovered during the first step of this list=2E > =E2=80=A2 Finish reading introductory material=2E > =E2=80=A2 Start experimenting with possible approaches to implement > proposed features=2E > =E2=80=A2 Finish learning the basics about Guix internal processes > (release management, developer interactions, codes of > conduct=2E=2E=2E)=2E > =E2=80=A2 Continue hacking into Guix's codebase to get to know it > better=2E > =E2=80=A2 Engage with the Community and develop possible features not >initially considered=2E > > >3=2E Student Projects Announced (April 27th) (1 day) > >4=2E Community Bonding (April 27th - May 18th) (3 weeks) > > =E2=80=A2 Continue hacking into Guix's codebase to get to know it > better=2E > =E2=80=A2 Finish experimenting with possible approaches found during > the Application Review period with which to implement > proposed features=2E > =E2=80=A2 Explore options to implement proposed features=2E > =E2=80=A2 Re-assessment of implementation difficulty proposed features= =2E > >5=2E Coding #1 (May 18th - June 12th) (4 working weeks) > > Implement Stage #1: > > (a) Weeks 1 & 2: > i=2E > > Milestones: > i=2E M1=2E1: > > (b) Weeks 2 & 3 > > (c) Week 4 > >6=2E Partial Evaluation #1 (June 15th - 19th) (1 buffer week) > > (a) Week 5: (Buffer) > > Milestones: > i=2E (finish unfinished milestones) > >7=2E Coding #2 (June 23rd - July 10th) (3 working weeks) > > Implement Stage #2: > > (a) Week 6 > > (b) Week 7 > > (c) Week 8 > >8=2E Partial Evaluation #2 (July 13th - 17th) (1 buffer week) > > (a) Week 9: (Buffer) > > Milestones: > i=2E (finish unfinished milestones) > >9=2E Coding #3 (July 20th - August 7th) (3 working weeks) > > Implement Stage #3: > > (a) Weeks 10 & 11 > > (b) Week 12 > >10=2E Students Submit Code and Final Evaluations (August 10th - > 17th) (1 buffer week) > > (a) Week 13: (Buffer) > > Milestones: > i=2E (finish unfinished milestones) > >11=2E Mentors Submit Final Evaluations (August 17th - 24th) (1 > week) > >12=2E Results Announced (August 25th) (1 day) > > >A About the Applicant > > Hi Leandro! I'm glad you're interested in JVM languages=2E I am currently trying to bu= ild a proper maven-build-system (it's a matter of days now)=2E Some of the = issues we have with JVM languages and that you should take into account fo= r your proposal: - a jar file is a binary file that needs to be built from source=2E Except= ions are compilers when there is no alternative (gcc used to be an example,= but there is nim, ocaml, maybe closure itself) and some tools that need th= emselves to build (such as a parser, like javacc)=2E - maven allows programmers to upload a "source" jar, but it is meant for d= ebugging, contains generated sources and might be incomplete=2E - maven doesn't link to source repositories - how to find a source repository from a groupId and an artifactId is not = clear to me=2E Considering that, I don't know if your project is doable=2E At least, all = other importers are able to give you a working source, but if it's really i= mpossible, having a list of dependencies would already be great :) We have a lot of java packages, but none of them are usable with maven yet= =2E I've worked on those that are directly required to run maven and its co= mmon plugins already, and will send patches as soon as everything works=2E = There will need to be a huge work on these packages to rebuild them, probab= ly with the maven-build-system=2E