For the contractual side, if you are in Europe, one-sided rules in such contracts are easily removed, since they are void by European laws.
It's the same with US companies insisting that you do not work for a competitor after contracts end but European laws actually then require the company to pay you for monetary loss or such clauses are void. Also has been confirmed in court cases.
Regarding lack of information or even invalid information before signing contracts: this is also grounds for annulling the contract.
Or 20% less today than in 1996, in gross terms? The problem is, now most freelancers are forced to create their own service companies (of one person), so the contract is between two companies and not between a company and an employee.
And in those cases, the rules are not the same, AFIK. I did ask a lawyer to get the contract reviewed in 2013 for a mission that I was baited into taking and then there is literally almost no programming involved and I wanted out.
The lawyer examined the service contract and told me that by the terms of the contract, I would have to either serve the service contract or reimburse the company for what they would lose. Maybe another lawyer would say something different, or things changed since 2013.
All we can do is wait for the contract to finish and then not renew it. Its perfectly legal, a lawyer told me.
Believe me, they know how to cover their backs.
What they really don't want to do is to lose the billable position. In practice, a lot of people will just suck it up to the end of the contract and then leave, especially if the contract is less than a year.
In practice, they will probably not do that as the HR team is busy with other things and the lawsuit might be bad PR, although a hiring manager that wants to get back to you for doing that might have the HR department sue you, legally they could do that.
Sometimes I think an international one-week walk-off by IT staff would do wonders for the worker-employer relationship.
But in general, if you insist that they add a termination clause of 15 days on your side, they usually do it although only after some insistence and negotiation, which if you have several interviews ongoing and are waiting for other responses might puts us in a precarious position.
The software developer golden age was in the mid-nineties here in Europe, and then the rates and salaries have stagnated (but not the inflation).
Also, the contractual conditions are getting worse. We are now many times offered contracts with a termination clause of one week on the employer's side, and without a termination option the the freelance side.
This means that if you sign a contract of one year, and then on the first week you realize that the job is not what it looked like in the interview, you are stuck for one full year.
This is especially important as employers are not really transparent in the interview process, they will often not tell you what the job is really about, and the job description you have is either out of date or it was embellished to look much cooler than the day to day job actually is.