I don't know if this is still a "best practice", but
http://www.gnu.org/software/emacs/manual/html_node/emacs/Contributing.html recommends contacting the maintainers "if you would like to work on improving Emacs." So, here's me contacting.
comint and shell mode have many problems, and I have started to fix these problems in my .emacs. I'd like to start moving these fixes to Emacs proper; I'm in the process of filing copyright paperwork.
A sample of the problems I have been working on/have fixes for:
- comint does not properly update the process' window size when the Emacs window size changes. Backported and cleaned up from term.el
- ansi-color-process-output does not check if the process is active before doing work; this can cause spurious error messages.
- comint history searching annoyingly sets the mark, even though point never moves due to bash-imitation-trickery.
- There is no easy way to stop shell mode from setting the EMACS env variable, which disables readline in bash, which stops my readline-complete extension from working (
https://github.com/monsanto/readline-complete.el)
- There is no built-in way to make comint output readonly (only the prompt)
- Input ring should be per-prompt regexp, otherwise it is annoying to use with subprocesses. readline-complete currently classifies completion by prompt; the prompt database between the two could be shared. (todo)
- It could be more obvious how to make shell write the input ring; the variable to customize this at the moment it "shell-dumb-shell-regexp". If you don't make shell write the input, then it will lose history for subprocesses. (todo)
etc.