Old CodeHelp content has been superseded and there are better sites now able to provide that content, just a search away.

I only work on Debian and all my work is free software. For more details, see my Blog.


  1. Debian Security Tracker
  2. Debian Salsa GitLab instance
  3. Debian LTS mailing list archive

Free Software

I firmly believe that ALL code is meant to be shared. No-one expects you to share your login usernames and passwords, personal identification data or financial data but the rest is code and is for the benefit of others. Using an open source or Free Software program does not make you vulnerable to data theft - all the code you are running is there for you to inspect and check. Running a proprietary program is far more dangerous because you have no simple way of checking if there is a spyware or malware component!

Peer review of software

I trained as a scientist and I value the principles behind scientific analysis and critique. One trial or one paper is not sufficient evidence of value or efficacy - scientific results must be reproducible, the design and methodology must be public so that the basis of the results can be assessed and validated. All aspects of the proposal are put up for inspection by others in the same field or with similar or higher experience and training. The process of discussion, improvement, re-testing and publication is called peer review. I believe that the same analysis and critique must be involved in the development of software. Software must be portable, the structure and design must be public and freely available so that the software can be improved. To keep the software structure and design private, as some kind of personal ego trip, leads to poor software that breaks as soon as the environment changes. Open, portable, adaptable code builds robust software. The structure and design of any software ultimately lies in the source code. Free Software provides a framework for this peer review to occur.

Peer review is fundamental to science because the process adds meaning to the results and strengthens the hypothesis. For example, most software projects begin with the question "How can I use language/platform X to do Y?". The hypothesis that is implicit in the resulting software is "I/We believe this is the most suitable way to use language/platform X to do Y." Software always starts with an hypothesis and it grows by design and experiment, a truly scientific process. Peer review works because different teams in different environments can test the methodology freely. It is pointless writing software that only works in one specific environment, it needs to be applicable to as many users as possible. By opening the software to input and feedback, the software develops more quickly and more reliably. Free Software is open to the maximum number of developers and users because everyone is free to contribute. Crucially, every contributor to the software is also required to maintain that freedom for others.

Peer review does not work when all the contributors are only accountable to the software publisher or to one scientific discipline - not enough environments and perpectives can be included for the process to function. Scientific papers are reviewed by a panel and made public. Errors and assumptions are highlighted publicly. Anyone is free to read the details - whether or not they belong to the original discipline. This allows for input from outside the original environment - input that is also public and is therefore reviewed in the same way. If it's junk, the peer review process will ignore it or rewrite it. More commonly, it opens the door to a multi-disciplinary approach that can reap immense benefits from lateral thought and a new perspective.


I believe that patents are a selfish and protectionist framework which have only ever held back scientific progress. The artificial limits set within the patent limit scientific progress for commercial ends, leading to ludicrous situations. Recent pharmaceutical patent expiries have led to the company changing the format of the product purely to extend the patent. The original product is then withdrawn before patent expiry to prevent patients benefitting from the non-patent versions. When the patent finally does expire, the company hopes that patients will not be switched for a second time. There is no pharmaceutical or patient benefit of the new product over the old one. There may not even be a cost benefit. The only benefit is for the patent holder. This happens despite pharmaceutical patents having a shorter life than other patents.

Unlike pharmaceuticals, all software evolves from prior software. One project requires another to build it or write it. Software patents can get you prosecuted for publishing texts you wrote yourself, because of an underlying technology. Software patents can only hold back software development by protecting the commercial interests of the few over the security and functionality requirements of the many. In direct contrast to epatents, Free Software promotes development of adaptable, robust code by protecting the freedom of the developers and the code. Free Software is not anti-commercial or anti-capitalist. Free Software does not have to be free of charge, it does have to be free as in speech.


The key to understanding Linux is the community. Linux is open source - the code that generates the operating system is freely available for anyone to look at as long as improvements are fed back into the community not locked away under a proprietary licence. Linux is also Free Software - free in terms of speech - so that anyone is welcome to contribute new ideas, new projects, new directions. This may sound technical but the best ideas come from co-operation between users and developers. Linux projects actively encourage such interaction and as well as fixing bugs, developers gain insight into what the users really want and users can request features and adjustments without having to get involved in the complexities of code.

GnuPG Keys

I routinely use GnuPG, with three keys in current usage:

Main key 0x8143B682

pub   rsa4096/F167E43C8143B682 2010-08-29 [SC]
      Key fingerprint = 7F71 C1E9 C78E 735D 0360  C6CC F167 E43C 8143 B682
uid                 [ultimate] Neil Williams (Debian) 
uid                 [ultimate] Neil Williams 
uid                 [ultimate] Neil Williams (codehelp) 
sub   rsa4096/F6DDB183A0B58B8A 2010-08-29 [E]

Older keys

pub   dsa1024/8801094A28BCB3E3 2002-01-27 [SC]
      Key fingerprint = 4CD4 6644 C105 48ED CA28  EC36 8801 094A 28BC B3E3
uid                 [  full  ] Neil Williams (Debian) 
uid                 [  full  ] Neil Williams (general) 
uid                 [  full  ] Neil Williams (CodeHelp) 
uid                 [  full  ] Neil Williams (Devon and Cornwall LUG) 
sub   elg1024/A00627FCAD3CB326 2002-01-27 [E]

pub   dsa1024/93B0D5AFA897FD02 2002-01-27 [SCA]
      Key fingerprint = 744C 978D 7AB8 F27B 3BA6  C101 93B0 D5AF A897 FD02
uid                 [  full  ] Neil Williams (Debian) 
uid                 [  full  ] Neil Williams (laptop) 
sub   elg1024/5C5AC9AC4D6D2952 2002-01-27 [E]

All these keys should be available on your preferred keyserver.