The thing is that not every developer is in a privileged position to provide work without payment. Good example are unpaid internships - if you want to gain experience, but you are coming from a poor background, you are unlikely going to sign up for such internship, because you will not have means to pay bills and so you are forced to find job that pays, not even necessarily in the field you would want. This creates divide, because only people from privileged backgrounds can gain experience this way and in the end get better jobs. That's why in many countries (for example in the UK) unpaid internships are illegal to create a level playing field. I think it should not be allowed to give away your work for free (to corporations) because of that. Then if you really don't want this money, you could send it to a charity of your choice. Such way would be much fairer to everyone.