Ondrej,
>So one should then ask - do I want to create a project that most of the >people would agree with the course of development (strategy of fixing >bugs)? Or do I want to create a project that most people disagree with >the strategy, but maybe in 30 years there is some chance that axiom >will become very popular. I, personally, prefer the former, because I >(but that's just my opinion) prefer my project to be joined by a lot >of people now, not in 30 years. I have had many projects disappear. Some were commercial products, some were corporate internal projects, and two were open source projects (Pinger and RentRoll). I have seen how and why projects die. How do you keep a project alive after every original developer dies? I spent a considerable amount of time pondering this question while I was building Axiom from the code NAG gave me. The answer to the question, in my opinion, rests with literate programming. Computer algebra systems are based on research work. In order to understand, maintain, and modify such systems you need to merge the research work with the source code. And you need to explain the details of the algorithm to someone you will never meet. Unlike other programs a computer algebra system will get the same answers 30 years from now. It is worthwhile investing in the literate documentation to ensure that the code is fully and deeply explained. "Literate", in this context (see Knuth), means that you can sit down and read the program like a book. You can understand what people thought before you decide to change things. The problem is that programmers don't know how, and do not want, to do literate programs. They like hack-and-slash, little-C-file, 1970s technology include-file thinking. Hack-make-publish is ok if you want to build toys for today. Why use noweb at all? It is just overhead for any project that is not trying to be literate and should be removed. But if you want a quality piece of polished software backed by research publications and literate documentation you need to fundamentally change your mindset. When Axiom is fully literate people can teach from the source code. Researchers can read an algorithm and understand all the little practical issues. Programmers can understand the research that supports the algorithms. New research can be based on well-documented sources and easily added to the system. The goal is to have a literate Axiom be the basis for Computational Mathematics teaching and research. Tim _______________________________________________ Axiom-developer mailing list [email protected] http://lists.nongnu.org/mailman/listinfo/axiom-developer
