whye / Maxima_Installers

Implement installer of Maxima in Mac, Windows and Linux system.
0 stars 0 forks source link

Getting started on GSOC project #1

Open robert-dodier opened 6 years ago

robert-dodier commented 6 years ago

Hanye, I guess you must be getting started on the GSOC project these days. What are you working on so far? I have some suggestions for getting started which I'll outline below.

Let us clarify the scope of the work that you will be doing. I submitted to Google two task descriptions. Are you planning to work on one or the other or both of them? I don't know what agreement you made with Google about the project tasks.

Whatever the scope of your work, I will suggest that it is important for you to get acquainted with the working environment for Maxima. In order to make progress on either task, you will need (1) to be able to compile and run Maxima on Linux, Mac, and Windows platforms, and (2) using various Lisp implementations. I will suggest getting Maxima compiled with at least three of the available open source Lisp implementations: SBCL, Clisp, CMUCL, ECL, GCL, and Clozure CL are the ones used most for Maxima. I will suggest SBCL, Clisp, and Clozure CL. A web search should find the project pages for these.

(3) You will need some familiarity with Lisp programming in order to work on Maxima. There are many tutorials on the web; I don't have a particular suggestion.

(4) You will need to understand Maxima to some extent as well. Please take a look at http://maxima.sourceforge.net/documentation.html . Please briefly review some of the documents. I recommend "Minimal Maxima" which is listed there. Disclaimer: I wrote it.

(5) Your first goal is to be able to compile Maxima on each platform (Linux, Mac, and Windows), using at least one Lisp implementation per platform (may be different Lisps for different platforms) and to verify that it works: run_testsuite(); runs to completion, "? foo" returns documentation for foo; and plot2d(sin(x), [x, 0, 10]); makes a plot.

Of course there are many more goals, but just getting that far is the basis to being able to do further work.

robert-dodier commented 6 years ago

For reference, here are the two task descriptions which I submitted to Google.

  1. Package Manager for Maxima.

This GSOC project will create software for Maxima to download and install packages from hosts such as Github, Sourceforge, Gitlab, and possibly others. The package manager will track versions and dependencies and maintain a collection of installed packages. It will be possible to invoke the package manager from within a Maxima session or possibly through a stand-alone program as well. There are some parts of a package manager for Maxima at present; this project will reuse and extend the existing parts or replace them as needed. The emphasis for this project will be to get a simple package manager working on a variety of systems (Windows, Linux, Mac) and Lisp implementations. Additional functionality will be considered if time permits.

  1. Jupyter interface.

There is an existing Jupyter interface for Maxima, but it is extremely difficult to install. This GSOC project will be to take the code for the existing interface and modify or replace it as needed, so that it is easy to install and works out of the box on a variety of systems (Windows, Linux, Mac). The emphasis for this project will be to focus on the installation problem, and just get basic functionality working in the user interface (text, math formulas, and plotting). Additional features in the user interface can be considered if time permits.