Component level
Open source adds transparency. It provides a very practical means to access and share code, work together with others, and design and implement software in a collaborative manner. When code is licensed under a copyleft license, there is also a guarantee that nobody can mess it up! Transparency and free access to source code provide very powerful tools for software development.
Commercial system level
However, building complex systems remains challenging. Developers who never worked in a large commercial project easily underestimate challenges outside the source code domain. Creating right user experience is hard. Collecting feedback from users during the development is not simple. Providing accurate project estimations for various stakeholders remains tough. Integrating complex systems from components that originate from different sources is much more difficult than writing the actual components. Testing and stabilizing large systems gets harder and harder as systems grow. Replanning after late and big changes in project conditions is laborious. And, running several software projects concurrently multiplies all the above challenges.
Open and Agile
Open source adds transparency to software development. The code, developers, and design decisions are all visible to everybody. I believe transparency can also be used in other areas of software projects. Agile methods, such as Scrum, can provide such transparency on the system project level.
Our context is challenging, though. Teams cannot be co-located. Non-agile hardware development happens simultaneously with software development. There are tens -- and even hundreads -- of Scrum teams working for a same project. Projects deal with issues ranging from hardware design, driver and OS base port, middleware and application adaptation -- all the way to end user experience and over 40 language variants ... and so forth. In these circumstances a basic idea of a a few agile software teams is hardly a complete solution.
I believe
It is a bit early for me to make any final conclusions of agile methods in practice. But I'm a believer, and we are using Scrum now more and more at Nokia. I believe that what open source has done for software development, agile methonds can do for commercial system and product development. Add visibility, access, and intellectual honesty. Transparency. You cannot hide shit no more.


