The Evolution of Software
Computing started in theories  then became reality with hardware in the first half of the 20th century. "Software" development started with physically changing valves in the early 1940s, then there was machine code, assembly code and then we moved onto higher level languages making software development easier. Basic was specifically designed to be easy and became very popular as a result being supplied with most early personal computers. VisualBasic did the same trick and I think we will see the same happen again even for large applications.
Another part of this trend has been the addition of ever more powerful libraries. You don't need to worry about the specifics of data structures anymore, you can just call up a library which manages it all for you. We now have software components which go to a higher level giving you specific functionality for all manner of different operations. Add to this the proliferation of virtual machines, application servers and middleware and you see the programmer is doing less and less of the programming and more and more of joining up the dots.
The next stage is to drop the complexities of Java and C# and do it all in scripting languages like Python  which allow easier, faster and cheaper software development. Microsoft are already doing this with the .net version of Visual Basic and it is on it's way for Java with projects like Jython .
As application servers and middleware become more powerful how long will it be before the vendors start shipping actual applications? All you will do then is customise the application to your own needs, you'll still need to understand logic but there will probably even be tools that even help you do that. Programming could become very different in the future and open to a lot more people, the specialist skills that development requires will be less and less required, at least for business development.
I think the long term trend for the software development industry is not looking good, but the trend for the home developer, the open sorcerer, is very different, quite the opposite in fact. I can see business development becoming so incredibly easy and thus incredibly boring that many developers will take to open source development simply for the challange, so they can tackle the complex problems in the language of their choice.
All software will be free (as in do what you want)
Patents do not last forever, Everything patented today will be freely available in twenty years time. As software advances all the techniques being invented will eventually become free and open for use by everyone. The difference then between open and closed source will be one of functionality rather than one of technique.
As open source software advances it will keep catching up with the propriety vendors, there will come a time when you'll not be able to tell the difference at least in terms of functionality. The differences of integration and consistency will remain, but as more companies become involved in open source development the needs of users will be fed into the development process and open source products will also become more integrated and consistent just as closed source products are today.
Linux will continue to grow but as it becomes more business-like I can see the potential for the more adventurous developers moving on to other platforms simply for the challenge. Arguably this is already happening and you don't need to look far  to see that these days there is a proliferation of different Operating System projects.
All hardware will be free
The same applies for hardware patents, these too will become free for everyone to use. I don't see the possibility of everyone making their own multi-million transistor CPUs in their bedroom becoming possible any time soon but with the increasing availability of open source tools and larger, faster FPGAs* creating a CPU in your bedroom will become easier.
*An FPGA (Field Programmable Gate Array) is a "blank" chip you can wire up in software to do pretty much anything.
One day you may even be able to code new CPU specifications and software will automatically create the CPU design for you then program it on an FPGA for you to use, of course it will also create a compiler so you can program and test your design. As with many future developments this is already in development (or at least being considered).