Replies: 2 comments 2 replies
-
Here are my thoughts... Feel free to comment on... What is this release about?This release is to get out some of the major changes that have gone on already in advance of redoing Boxing and Formatting. Also important is the work by David A. Roberts for pyodide and Aravindh Krishnamoorthy on Rubi. API BreakageIn doing this, the JSON tables, in particular, had to change and "break". And so we started on this journey of other breaking API changes. I have mixed feelings about this, improving the API is a good thing and probably inevitable, and if we break the API, we may as well break it big time. On the other hand, if this goes on too long, then we spend weeks fixing the newly created API breakage, and the release gets delayed further. Concerning this point, in particular, there was this one PR where the 3 classes of variables definitions, "ownvalues", "upvalues", and "downvalues" were grouped into a new dictionary of the Definitions class. While I guess this will eventually get merged in, the timing for thinking about this is ill-coordinated and ill-timed, in my opinion. A better use of resources might have been to focus on the release and discuss this later. But here is my dilemma with this now. If this is going to get merged in right after release, well we are back in the same boat of we will be working with a changed API and we'll have to do as we do now and any developers will have to work off of master git branches instead of pulling from PyPI. I had hoped we might be able to avoid that. In making the Definitions object change, the Mathics3 Debugger in particular, (which hasn't had a first release yet), will also have to change because it uses the current interface for getting these values. So here, I have a slight inclination to put this in before release, suffer the round of breakage yet again, and hope that we won't decide well, actually, there is something even better... (Remember the weird proposal once where there was this push to organize all operators by a Unicode symbol in mathics core. That idea was ill-advised. This isn't, so it is better. But the point is that coming up with well-defined solid interfaces and API's has not been this project's strong point. At a minimum we should learn from the experiences and design APIs with better forethought and communication, instead of the current practice of thinking about this and shoving it at the stage where we are focused on getting out a release) What is currently going on to get a Release finished?Docker image updateRight now, one of my main tasks is a preliminary update of the docker container that has everything. This has been very helpful to me in finding cross-repository breakage (of which there has been a bit already). It also allows users to try things out in advance of committing to a release. I am not sure we get a lot of feedback this way, but if we don't provide the opportunity we definitely won't get any feedback until after a release which is not good. To speed up the process of fixing small things, I have been merging languishing PRs and, in some cases, even committing them to master. I hope to contain this kind of thing only around release time when people should not be making big changes unrelated to the release. But if this is a problem, let me know. Documentation updateIn conjunction with getting the docker image created, I have also been going over the documentation. All sorts of stupid and tedious stuff that we typically don't do during development. Like:
Specific TODO items and optional featuresMathML in DjangoSo now let me come back to handling MathML in Django. Is it totally necessary,? No. It would be nice though. It was offered as a reason for why it was okay to change things on the LaTeX side and break things elsewhere. I have come to learn that a description that says "fix" really means "change" here and possibly break elsewhere. A little while back in a discussion related to Rubi the issue came up with whether we wanted to finish now or finish later. And someone else opined that it would be better to finish now because "later" may not come. No doubt there was an honest misunderstanding of the difficulty needed to finish. But have a tendency to underestimate the difficulty of tasks. I hope we can learn from that. Completing amslatex fieldsThis feels like a no-brainer and I wonder why this isn't done already. As laid out above, this was about fleshing out the YAML tables to the extent we can. There probably will be another pass at named-characters.yml to remove operator function information now that it is in its own table. But that is too disruptive for now. And it will also proceed in conjunction with a pass over the scanner to remove the "prescan" loop which handles comments and special characters improperly. And could probably use more of the YAML table as well. But finishing amslatex equivalences for operators has none of this complexity. Paclet supportWith this release where things have been cleaned up sufficiently, and we have a debugging framework in place, we are now in a better position to support more Mathematica packages off the shelf. When they fail I have the tools to pinpoint what's wrong and fix. There is still a lot to do on the debugging side, but that can come later and should not delay a release. So now that we have the possibility of handling packages we should make sure that those people who have access to Paclet code can be able to run that on Mathics3. That's why we added a Packages directory in the user space. That's why There is no hard requirement of what version of Paclet should be supported before release. But if there is some version of Paclet that works that would be nice to know. Based on Combinatorica experience, the oldest version of Paclet will probably be the smallest and easiest to get working. (It probably has the fewest features too). But from there we can expand more incrementally and easily. Ensure custom pyodide code worksWe should make sure that the pyodide work that @davidar has done still works with the API changes that have been made. Make PyPI releases of Mathics3 Trepan module and trepan3k plugin for Mathics3Not much to say here, I just gotta do it. Hopefully low-hanging stuffHere is a personal list of things I had in the back of my mind as being simple user-visible items -- low-hanging-fruit with little chance of major disruption:
Personal pet peeves:
|
Beta Was this translation helpful? Give feedback.
-
@rocky, thank you for the detailed presentation of aims, reasons, and goals. I think at this point it is OK to proceed with the no-breaking, non-polemic changes. In the meantime, I will try to discover how to make the MathJax code work to process the LaTeX commands in the online documentation. Right now, I am aware of just one symbol (DivisorSigma) that shows a LaTeX string instead of a UNICODE symbol. This is because it has an underscore, which was not well represented either in the PDF or in the online help. Regarding the proposed changes in |
Beta Was this translation helpful? Give feedback.
-
mathics.builtin.plot
and intomathics.eval.plot
... ?
Beta Was this translation helpful? Give feedback.
All reactions