the question is a very blasphemic one, and I am not sure, if I should bring this into discussion at all...
It's vital we discuss this.
It took a while for me to appreciate what I believe to be Millers philosophy, and in principle I agree with and respect it. To keep the core of Pd as small and maintainable as possible using a minimal set of objects is smart. I hope that tradition continues whatever the future and that the requirements for entry into the Pd core are very strict indeed.
Many times I've learned my lesson thinking that some higher level object was irreplaceable only to be put right by someone showing an equivalence using two or three existing primitives. This has been very educational.
However, while two or three objects combined is acceptable it breaks down when one must implement elaborate patches to do fundamental things. Everyone knows that sin(x) = 1 - cos(x) [in rotation normalised Pd speak], and [abs~] can be trivially constructed using [min~] and [max~]. No big problems there. But what of things like [z~], [pow~], [tanh~], [ln~] and so forth? These are basic operations that MUST be in any signal processing framework if it is to be considered complete.
The existence of pd-extended as a system of "non-essential" objects around the core seems the perfect solution. But I submit that the core is incomplete and therefore I have the ridiculous situation of either having to jump through ugly hoops to do simple things or having to suggest the students download the entirety of extended for the sake of a few vital but missing objects.
I therefore define "missing" as when the best answer on the table is "use [expr~]" or "use this equivalence made of more than 2 or 3 objects"
The question must be "What defines vanilla Pd?" Is it, as I have assumed above, Millers intention to maintain a minimal but axiomatically complete set of objects. If so then we must surely agree that the set is incomplete. The question then becomes "Why are certain primitives missing?" There may be many good reasons such as platform compilation problems, licensing obstacles or namespace issues, but I venture that none are insurmountable if we work as a community to submit robust implementations and work around the problems. I'm not talking about elaborate objects like autocorrelation or YIN pitch estimation, just the basic, primitive essentials.
I feel uncomfortable talking about this as if Miller were absent, so I do hope the discussion will be joined soon.
We have many good mathematicians here who could help define what is the minimal axiomatic object set, prove that it's complete and show the "theorems" to build everything higher. This also requires practical input from people like myself who use Pd every day to say "Sure, you can build an abstraction using x, y and z, but that is __unacceptably impractical__ when a simple core object could be added."
As you know this has come up before, regarding [delta~] (which I foolishly assumed was intrinsic - my fault). But I never considered for a moment that [pow~] or [ln~] are not core objects! Time is a factor now and I need to choose (again) whether vanilla Pd can be the recommended installation for the book, or whether to drop many valuable examples, or whether to make pd-extended mandatory. Very frustrating.
most sincerely
Andy