The most permissive liscense known to me, Creative Commons Zero disallows patenting of the source but I would like to grant all permissions except warranty.
You are probably looking for a permissive Open Source license.
The most common permissive license might be the MIT or ISC licenses. They allow all kinds of uses and have a warranty disclaimer, but require attribution.
There are some ultra-permissive licenses that get rid of the attribution requirement. For example, the 0BSD license is the ISC license minus the attribution requirement. The Boost license eliminates its attribution requirement for binary versions, but not for the source code of the software.
There are some devices that try to dedicate the work into the public domain, such as CC0 (and arguably the Unlicense). But it's important to understand what public domain means here: it means that the work is free from copyright restrictions, but it completely ignores other kinds of IP such as patents. It is in principle possible that a software is public domain, but that other people can't use or distribute it because it implements a patented technique, for example a proprietary media codec. Normal Open Source licenses like the MIT license give broad permission to actually use and distribute the software, without restricting their grant to certain kinds of IP such as copyright.
Still, this distinction only really matters if one of the copyright holders in the software is also a patent holder. No license can grant a right to use someone else's patents.
In your question, you voiced the concern that CC0 “disallows patenting of the source”. This is a misunderstanding on multiple levels.
- CC0 only touches on copyright. It explicitly ignores patent-related issues. It does not grant or forbid anything in relation to patents.
- Patents are granted for novel inventions. Source code itself is not patentable, but software might implement a patentable invention.
- Since the invention must be novel, patents won't be granted if there's prior art for the invention. Thus, publishing a software which implements an invention, before a patent application for the invention was filed, counts as “prior art” which means that no patent should be granted. In some cases, the inventor can apply for the patent some time after publication. In any case, only the inventor but no third party can apply for a patent.
In this sense, any publication of software regardless of license or copyright status prevents later patenting of the inventions therein.
With patents, there is some concern about “submarine patents” or “patent treachery”: that someone might (secretly) hold a patent for a technique, then make software using this patent freely available – but without actually granting a patent license. Later, they might shake down users of the software for patent royalty payments. This scenario is feasible with CC0 since CC0 explicitly ignores patent issues, which is also why CC0 is not recognized as an Open Source license. Typical permissive licenses like MIT or ISC do not mention patents, but their positive grant to use and distribute the software is generally construed as an implicit patent license. To provide legal certainty, some licenses include explicit patent licenses.
For example, the Apache-2.0 license is a permissive license that says contributors grant a license for any relevant patents. It also contains a clause to deter patent trolling: if anyone claims that the licensed software constitutes a patent infringement, their patent license through the Apache-2.0 license is terminated so that they might not be able to use the software themselves. Thus, the Apache-2.0 license is very popular in an enterprise context such as Android where multiple patent-wielding actors must peacefully work together.
To summarize this discussion, I'd recommend the following licenses:
- If you want a well-written permissive license that explicitly covers patents, use Apache-2.0.
- If you want a simple permissive license, use MIT, ISC, BSD-3-clause, or BSD-2-clause.
- If you want a simple permissive license without an attribution requirement, use 0BSD.
- If you want to release copyright, use a public domain dedication tool such as CC0 – with the understanding that this might actually give less rights to users than a permissive license.