List of Things To Do ==================== Standards conformance --------------------- Add proper copyright headers to every source, header, documentation and other files. Fix all compiler warnings. Remove smktemp() in favor of tmpfile() or other ANSI C equivalent; Note: different symantics! Write a asprintf() replacement for systems that don't have it available. Usability issues ------------------ Plug all memory leaks; use debauch (http://quorum.tamu.edu/jon/gnu/) or another memory checker to find them. Either get help program functioning again; OR interface to webbrowser, info reader and get rid of all help-related code. Option 2 is the most appealing. Refactorings ------------ Make devices dynamically loadable (perhaps use framework from glib). Separate out circuit builder from the analysis code and put it in the devices directory (rename devices directory to simbuilder at some point). [PARTIAL] Separate ngspice and nutmeg; i.e., no more SIMULATOR define. Dispose of nutmeg all together once the devices are plugins. Integrate bsim3, bsim3v1, bsim3v2 to use a single codebase instead of three only slighty differing implementations. Separate frontend commands from supporting code. Command files start with com_*. [PARTIAL] Testability ----------- Add tests for all functions in the complex library in src/maths/cmaths. Add tests for all functions in the sparse matrix library in src/maths/sparse. Add tests for all functions in the polynomial library in src/maths/poly. Add tests for all functions in the derivative library in src/maths/deriv. Add more circuit tests into the tests directory. Documentation ------------- Update ARCHITECTURE to contain a high level overview of spice. Convert ngspice.texi further to texinfo format. Distribute devices documentation into the devices tree. This makes it easier for developers to update documentation in concert with code. Update manual pages for spice and nutmeg. Perhaps generate them with c2man or some other documentation generation utility.