What are good principles in designing a software library for the use of scientists in a specific discipline? By this I mean areas such as chemistry, physics, materials science, microscopy, bioassays, astronomy, etc. I exclude generic libraries such as SciPy, R, Matlab, JAMA, etc. which cover a range of disciplines or are specifically mathematical or for data analysis. (Currently a number of us are involved in building open source libraries in chemistry and it would be valuable to know of experience from other domains).
I appreciate that this is an ambitious task and it is not easy to get funded but it is becoming increasingly important for reproducible and verifiable science.