Currently:
'diff(2/3,x) => 0 <<< good
'diff(%pi,x) => 0 <<< good
'diff(%pi/2,x) => 'diff(%pi/2,x) <<< why??
It looks like simp.lisp/simpderiv should use $constantp rather than the long conditional it currently uses.
simpderive should also give an error if the variable is a constant:
diff(2/3,%pi) => ERROR <<< good
'diff(2/3,%pi) => 0 <<< should be ERROR
'diff(%pi,%pi) => 1 <<< should be ERROR
I don't see why Maxima should prohibit differentiating with respect to a constant. Surely it's equivalent to just renaming the variable, carrying out the operation, and naming it back again.