One of my acquaintances, the best software developer I have ever worked with as far as I know, recently sent me an e-mail with the link to InfoQ article about Spring 2's support of OSGi.
I remembered OSGi somehow from somewhere but I didn't remember what it was.
Then I started reading about OSGi and was reminded that it was Eclipse. When I was trying to write Eclipse plugin, sometimes I had a hard time tracing the code and understanding it because Javadoc for OSGi was missing. (The version before that didn't have OSGi dependency and I could trace the Eclipse code easily.) Around that time, somebody working on Eclipse at IBM said at OOPSLA that the reason Eclipse had been changed to be based on OSGi was because one of the department in IBM that was dealing with embedded system demanded it. He said that it was an unfortunate compromise. So I considered it as such.
As the result of today's reading, I learned that OSGi has been extended beyond embedded system and that now it's one of the promising dynamic module system. And it's concept is very exciting.
In the matter of within a few years or less, the perception has changed dramatically. And there are people who have been working on OSGi and innovating it.
There are so many things to learn and there are so many changes including perception. Again even more than before, I am convinced that it's impossible to do up-front estimate on software development.