Skip to content

Future of M2

Zach Teitler edited this page Jun 1, 2015 · 12 revisions

Final Session for Workshop: Boise 2015

Idea behind Macaulay 2: Providing good infrastructure for mathematicians to perform their own research, and we want to make sure that what you really WANT is there.

Question: What do YOU want to see in future Macaulay?

Originally, M2 was "What do Dan and Mike want to calculate?" Now it's a little more than that. Keep writing packages, keep contributing.

Request: Can (and will?) Macaulay2 start implementing parallel processing?

There IS some of this, at a very low level, but the garbage collection in Macaulay2 has been the limiting factor. Things need to be separated enough in the engine so that you can run multiple Grobner bases in the engine and they don't conflict with each other, but going into garbage-collection and fixing that has been the problem. If anyone has ideas of how to fix this (and is good at this type of problem), we would love some help.

Alternately, consider breaking up your problem into multiple pieces (for example, if you are running many different examples) and running them on different computers/copies of Macaulay2. However, if your computation is one BIG computation, there is an experimental package for Grobner bases. There is also a compiled executable called "mgb" that is (probably?) distributed with Macaulay2 that works over finite fields, performing GB bases with modified Fougere algorithm (linear algebra-y.)

Question: What is garbage collection?

When you're done running a calculation in Macaulay2, the memory/data you used during the computation doesn't automatically go away. That's what garbage collection does -- clears out old processes that you're done using. With many threads going simultaneously and lots of memory usage though sometimes this fails.

Also, consider looking for machines with more RAM directly (perhaps check with colleagues at your University/College.)

Question: Is there any interface between Macaulay and C++? Or any other scientific language?

Short answer is no, not without recompiling the system. Even with recompiling, it takes a little bit of effort. If you have a program you want to connect to, you can use a textual interface. (There are several M2 packages that call other programs for calculations and recover results, for reference, e.g. gfan, 4ti2, normalize, GAP, Nauty. There are (undistributed) things to send data to Magma and Singular too.)

Question: Is there a reason ZZ/n isn't implemented for n composite?

Short answer again: Nobody has really asked for them, but we could add there. There IS a way to do that

Note also: Finite field sizes have increased since the last distribution! You can go to 2^32 with factorization, and up to 2^64 if you don't need to factor.

R = ZZ[vars 0]
R/sub(ideal"6",R)

We also want to improve how fraction fields work in Macaulay2. Some grad students have worked on it, but it hasn't been a particularly good project for them. We also want to improve how Macaulay2 handles noncommutative rings (Frank Moore has done some of this) and local rings (Mike would REALLY like this!)

One of the reasons local rings have been on the back burner is that they can be done sort of by hand, but would be nice to have more natively implemented.

Question: Can you say a few words about the future of the journal JSAG: Journal of Software for Algebra and Geometry?

This journal was started a few years ago with Greg Smith and Amelia Taylor as managing editors. One of the main reasons for this is to encourage package development in Macaulay2 AND a refereed publication. You also get a star for your package!

Recently, the journal has expanded to include developers in Singular and [GAP] (http://www.gap-system.org/). This is meant to provide a professional incentive for time spent developing packages.

Question: What about "authors" vs. "contributing writers" for code or JSAG papers?

This is tricky -- some packages have had many active developers over time, but authors moving on/off makes it hard to track contributions. While all contributors to a package should be acknowledged, it isn't clear what BEST way to do this is yet. Ask Mike or Dan for advice if unsure, and perhaps err on the side of giving more credit/authorship.

Question/Suggestion: Is anyone interested in working on a package for resolving singularities?

This sounds hard, but could be really interesting.

Question: What should I do if I have trouble using the Try Macaulay 2 web interface?

Try it out, and if you have any problems, PLEASE talk to Franziska Hinkelmann, Lars Kastner, and Mike Stillman about what the error was. Consider using it in your classes (undergraduate or graduate). There are still some things missing (PHCpack, Visualize, etc.), but not clear easiest way to implement those. You can check out the Interactive Shell on GitHub too. This is a good place to report errors or make requests.

There are some really interesting errors that pop up -- for example, pasting text from webpages to Macaulay2 can throw errors, as unicode characters may LOOK the same but not be read into Macaulay2 the same way. If you run into others, just ask! Please try this out.

There's also another way to use Macaulay2 in the cloud through Sage Cloud. This has Macaulay2 (and several other open source software) installed and accessible via a virtual terminal session.

Question: Can we upload tutorials to the Macaulay2 webinterface?

No, but you can give your students tutorials and have them load the tutorial themselves. We would love to have more users contribute tutorials to a repository of such things. Right now, the web interface is simple, so we don't necessarily want to overwhelm students.

To write your own tutorials, you write them in SimpleDoc form, and a translator will turn your tutorial into an interactive Macaulay2 session with buttons.

Question: (Meta Question) Is there something like a Macaulay2 "style-guide"? When we were making a new type for our package, we created an option set that apparently wasn't the standard way of doing this with "verify". Where can we go to look this up? Also if a function is giving extra output, printLevel vs. verbose vs. verbosity? Or gbtrace?

Check out the starter style-guide here.

On that note, after you have documentation and tests for your package -- even if it ISN'T completely done yet -- you should consider merging your changes with the main Macaulay2 branch. That way the package is OUT there, and Dan and Mike can make sure that it doesn't break as they update the main Macaulay2 distribution.

Question: Can we have a cool logo and/or tee-shirts like the other cool open-source software systems?

That's a good idea! Currently Macaulay2's logo (as such) is the picture of the planets all lined up. If anyone is artistic, let me know.

Question: Are there any drastic changes coming to Macaulay2 down the road to be aware of?

One of the big ones is the potential future change in leadership (15+ years down the road). Another possible upcoming thing would be a "Guide to Macaulay2 Packages" that grouped submitted packages by type as an introduction to the system. There might also be "version hell" problems down the road, but that's a byproduct of more

Question: Is there a way to have Macaulay2 output TeX code?

Yes. Try using the command "tex" in front of a command to see what the default way of converting the output to TeX is. Some packages have specific "convert to TeX" methods build in (e.g. Posets and Graphs), but it varies by package. You might also consider trying to run Macaulay2 in GNU TeXmacs.

Question: What about conflicts between packages? Is there any system in place set up to try to keep commands/keywords consistent or to avoid duplication of effort/functions?

This is certainly a big problem in many software systems, and I encourage you to look through the currently available packages to see if your code should be integrated there. This might become a problem with M2, but at least at the moment (with a few exceptions) things are mostly non-overlapping. We just want to avoid having a dozen packages that all do the same thing, half of which are crappily written.

Clone this wiki locally