The idea is very similar: you create a set of jails that behave as independent systems. Then every process started from a jail is tagged with a jail ID corresponding to the jail that the process was started from. All processes run in the same kernel and the jail ID gives the kernel just enough information to tell whether or not a process should have access to a given resource when sys calls are made.
I've never used OpenVZ so I don't know how they compare in practice but I can say that FreeBSD jails worked beautifully when I was using them heavily (about 2 years ago). They are super easy to manage and were as stable as you'd expect in FreeBSD (you'd have to be trying really hard to knock them down).
In Sweden for example, you can't release something into the public domain.
There is also another problem, you can't disclaim some warranties for customers. So if you could release the software into the public domain, you could still be held accountable for what the software did after being modified.