Contributing to ngspice


ngspice is an amazing piece of software. A fully featured circuit simulator, and the most well known open successor of SPICE itself. I really love using it.

ngspice also has problems. It's not the most efficient piece of software: it has been known to have memory leaks, error messages that aren't really helpful, and in my opinion, with so many features, it feels difficult to know how to use it effectively. The manual covers a lot though, which is great, but is a little too wordy, sometimes, if you ask me.

Naturally, I thought it would be great to contribute.


Naturally, I changed my mind when I downloaded the source code. Thousands of files. Various legacy software such as XSPICE and CIDER. The various contributions of literally hundreds of people over time.

It is not uncommon for me to say at a moment like this: "I am not a software engineer." I never set out to be. I want to use circuits to do amazing things, not program the software that simulates the circuits.

So I think I have changed my mind on how I want to contribute. I want to make ngspice a great software by enabling more people to use it, and enabling the existing people who use it, to use it effectively. Perhaps if I can do that, others will be able to make the contributions I cannot.

So here are my contribution plans:

  1. Make the manual easily accessible online
  2. Add contributions to the maual so it is as human-readable as possible
  3. Create a fully featured tutorial for those who have never used ngspice
  4. Propose style guidelines for source netlists and propose an effective workflow based on my own experience

I have already began working on making an online manual, which is currently semi-functional.