07 September 2008
Stumbled over James's blog entry about useful software for the Mac and added Growl to my list of software that you need have/use to be effective, but was not able to make it work with X-Chat (AquaChat). Confronted with the option to figure out what is wrong or to try something new, I took the easy way out: I tried Colloquy. This worked out of the box. I know need to find out how to make my Twitter tweeds show up in Growl.
02 September 2008
Opensource Business Models - Open-Core Licensing
OH NO, please!!! YABOOSBM!!! Yet another blog entry on open-source business models :).
Ok, let's make it as short and as sweet as possible :).
This morning I was reading Matt Aslett's comment on Andrew Lampitt's blog entry on "Open-Core" licensing (which actually contains a link to a good presentation by MySQL chief Marten Mickos).
What I like about the approach is that it tries to take the emotion out of the discussion. We obviously all know in our head that open-source is about free speech and not free beer, but the heart then still reacts (at least sometimes) disappointed, when companies show that they are not pursuing an open-source strategy for purely philosophical and/or altruistic reasons. In that context some of the hybrid models (e.g. selling closed-source features on top of a open-source core) got a bad reputation and got dismissed as "bait-and-switch" models.
The value of open-source is NOT in the absence of a desire to make money with it. This is actually healthy and will make sure the approach/model with survive in the long-run.
For me an interesting value of open-source is that it redefines the customer-vendor relationship. It creates a very open, honest pay-as-you-go relationship. Customers are not forced to give large sums of money to a vendor up-front and trust the vendor that it will do the right things with this money. Open-source is the ultimate customer empowerment tool (within limits as discussed by Matt Asay).
A very interesting side effect of this is that it allows the CFO to shift money from his capital expense budget to his operational expense budget, which in general makes his business more manageable.
These are good reasons for open-source. And yes, to keep it alive, we have to find ways to make money with it and share the ROI over the entire delivery/value-chain.
Shortening the list of open-source business models in Marten's presentation, I right now see the following main models in the market:
It remains to be seen, which one will proof to be the most innovative one.
Ok, let's make it as short and as sweet as possible :).
This morning I was reading Matt Aslett's comment on Andrew Lampitt's blog entry on "Open-Core" licensing (which actually contains a link to a good presentation by MySQL chief Marten Mickos).
What I like about the approach is that it tries to take the emotion out of the discussion. We obviously all know in our head that open-source is about free speech and not free beer, but the heart then still reacts (at least sometimes) disappointed, when companies show that they are not pursuing an open-source strategy for purely philosophical and/or altruistic reasons. In that context some of the hybrid models (e.g. selling closed-source features on top of a open-source core) got a bad reputation and got dismissed as "bait-and-switch" models.
The value of open-source is NOT in the absence of a desire to make money with it. This is actually healthy and will make sure the approach/model with survive in the long-run.
For me an interesting value of open-source is that it redefines the customer-vendor relationship. It creates a very open, honest pay-as-you-go relationship. Customers are not forced to give large sums of money to a vendor up-front and trust the vendor that it will do the right things with this money. Open-source is the ultimate customer empowerment tool (within limits as discussed by Matt Asay).
A very interesting side effect of this is that it allows the CFO to shift money from his capital expense budget to his operational expense budget, which in general makes his business more manageable.
These are good reasons for open-source. And yes, to keep it alive, we have to find ways to make money with it and share the ROI over the entire delivery/value-chain.
Shortening the list of open-source business models in Marten's presentation, I right now see the following main models in the market:
- Open-Core Model - have an open-source core and sell closed-source features on top of it (e.g. SugarCRM)
- Dual Licensing Model- one product/project that gets licensed with a viral, GPL-style license and a commercial closed-source license (e.g. MySQL)
- Services Models - where you get to download a productized version of an open-source project and pay a fee for the support you get on it
It remains to be seen, which one will proof to be the most innovative one.
25 August 2008
Opensource Innovation - Fact or Fiction
Is Open-source Innovation an oxymoron? Is Open-source fostering innovation or killing it?
There are two school of thoughts out there: First, there are lots of people, who say that open-source is not fostering innovation or even killing it, because it is just about the reimplementation of already solved problems and that it actually kills innovation, because it keeps people from implementing solutions that can not be protected from being reimplemented as an open-source solution. Second there are at least as many people, who say that open-source is actually creating/fostering innovation, because a company can not hide behind a bad implementation and will always be forced to look for ways to make its solution better, faster and more affordable.
Let's first contemplate on the nature of innovation. As previously discussed there is a difference between innovation and creativity: You can ask people to be creative, but you can't really ask them to be innovative, because innovation is something that get's established after the fact, means it get's established by the traction you get with your ideas in a give business context and the impact they have on the business and the market.
I personally believe that you cannot orchestrate or manage or create innovation. It just happens. It happens in a more darwinistic way: Through diversity/competition/mutation and selection. What you can do is to create an environment, which cherishes diversity/creativity and competition. This will increase the likelyhood that some of your ideas turn into real innovation. In that context you probably want to set up a number of small units to shoot at the same target and want to make them compete for the best implementation. This is why open-source is innovative and/or creates innovation. It is not the a/the project that is innovative. It is the competition between the projects that creates the innovation. One good discussion on this can be found in "Innovation Happens Elsewhere, by Ron Goldman and Richard P. Gabriel".
One other way to put more structure into the discussion is to segment innovation into ...
Question is, if open-source and/or open-source concepts are also suitable to drive solution- and/or business-model-innovation? This leads to the next bigger question: In the past the value of a company was determined by the solutions they own. This is why pharmaceutical companies try to protect their products with patents and other means. I am not sure that will stay this way going forward. Instead we might see a world in which your solutions matter less, but your ability to detect problems and develop solutions will determine the value of your company to a much larger extend.
In such a world, open-source concepts might actually be very suitable to foster innovation on the solution level.
There are two school of thoughts out there: First, there are lots of people, who say that open-source is not fostering innovation or even killing it, because it is just about the reimplementation of already solved problems and that it actually kills innovation, because it keeps people from implementing solutions that can not be protected from being reimplemented as an open-source solution. Second there are at least as many people, who say that open-source is actually creating/fostering innovation, because a company can not hide behind a bad implementation and will always be forced to look for ways to make its solution better, faster and more affordable.
Let's first contemplate on the nature of innovation. As previously discussed there is a difference between innovation and creativity: You can ask people to be creative, but you can't really ask them to be innovative, because innovation is something that get's established after the fact, means it get's established by the traction you get with your ideas in a give business context and the impact they have on the business and the market.
I personally believe that you cannot orchestrate or manage or create innovation. It just happens. It happens in a more darwinistic way: Through diversity/competition/mutation and selection. What you can do is to create an environment, which cherishes diversity/creativity and competition. This will increase the likelyhood that some of your ideas turn into real innovation. In that context you probably want to set up a number of small units to shoot at the same target and want to make them compete for the best implementation. This is why open-source is innovative and/or creates innovation. It is not the a/the project that is innovative. It is the competition between the projects that creates the innovation. One good discussion on this can be found in "Innovation Happens Elsewhere, by Ron Goldman and Richard P. Gabriel".
One other way to put more structure into the discussion is to segment innovation into ...
- Business Model Innovation - a new creative way to make money with something (might be closed-source or open-source)
- Solution Innovation - a new creative way to solve a given (old or new) problem
- Implementation Innovation - a new creative way to implement a given solution
Question is, if open-source and/or open-source concepts are also suitable to drive solution- and/or business-model-innovation? This leads to the next bigger question: In the past the value of a company was determined by the solutions they own. This is why pharmaceutical companies try to protect their products with patents and other means. I am not sure that will stay this way going forward. Instead we might see a world in which your solutions matter less, but your ability to detect problems and develop solutions will determine the value of your company to a much larger extend.
In such a world, open-source concepts might actually be very suitable to foster innovation on the solution level.
Solid State Disks - Level 5 cache
Last month I had the pleasure to spend 2 hours in the car with Klaus Grieger. Klaus and myself know each other from ObjectDesign and Versant. Right now he is a partner with CIMT AG in Germany. As always talking to him was invigorating. He is one of the most innovative people I know.
The topic of the drive was the future of Solid State Disks (SSDs). His thought was/is that with the arrival of in-expensive, fast SSDs we can potentially rethink the way we structure memory and storage in general. Right now, we "load" executables from a "disk" into "main memory". What if, we turn the disk into a level 5 CPU cache, means programs never get loaded and/or started. They get installed into "memory" and will stay there all the time. Instructions get fetched into lower-level CPU caches on as needed basis. This would/could probably work for instructions, but not for data. Means for data you would still needs a disk with a file-system.
Hhhhmmmmmm, ... can somebody help me to think this through?
The topic of the drive was the future of Solid State Disks (SSDs). His thought was/is that with the arrival of in-expensive, fast SSDs we can potentially rethink the way we structure memory and storage in general. Right now, we "load" executables from a "disk" into "main memory". What if, we turn the disk into a level 5 CPU cache, means programs never get loaded and/or started. They get installed into "memory" and will stay there all the time. Instructions get fetched into lower-level CPU caches on as needed basis. This would/could probably work for instructions, but not for data. Means for data you would still needs a disk with a file-system.
Hhhhmmmmmm, ... can somebody help me to think this through?
12 August 2008
Embedded Software Engineering - Can we avoid another software crisis
The term "software crisis" was coined 1968 by F.L. Bauer during the first NATO Software Engineering Conference in Garmisch, Germany and was used by Dijkstra in his very famous lecture on "The humble programmer":
[The major cause of the software crisis is] that the machines have become several orders of magnitude more powerful! To put it quite bluntly: as long as there were no machines, programming was no problem at all; when we had a few weak computers, programming became a mild problem, and now we have gigantic computers, programming has become an equally gigantic problem.
– Edsger Dijkstra, The Humble Programmer
Right now there are lots of people who are saying two things: First, embedded devices and embedded software will change and transform our way of life in a similar or even stronger way than the arrival of the internet and second, the resulting software engineering challenges are huge.
There are a lot of drivers/trends behind this, but two of the more critical ones are the arrival of multi-core processor architectures for embedded devices and the resulting increase in processing power that comes with it (see quote above :)). And secondly the increasing demand to make embedded devices talk to each other (e.g. make Electronic Control Units (ECUs) on the car talk to each other and then make cars talk to each other).
The lack of abstraction that we have in embedded software engineering makes more than 50% of all embedded software projects being later, over budget or not deliver on expectations.
This sounds and looks like a first class software (engineering) crisis. What do we do?
Killing the problem with people (e.g. throw more people at the problem) is a very popular approach, especially with the emergence of cheap off-shore development centers in India and other places, but creates a huge liability, because over time it does not scale very well and the management and maintenance burden has the potential to become an even bigger problem.
More thoughtful approaches first segment the embedded market from a requirements point of view and then look for much more systematic approaches to address the requirements in the given segment. One way to segment the market would be along the lines of the real-time requirements. Working assumption would be that there is a hard real-time market, a soft real-time market and an embedded market (no real-time requirements, but the software must run on devices with limited CPU and memory capabilities).
The segment with the strongest growth is the last one. Addressing the software engineering issues in this segment will give us the biggest bang for the buck.
One way to go about it is to use existing approaches that have (kind of) worked for the first two (real-time) segments and also use them in the embedded space, e.g. using integrated tool-chains to generate a lot of the source code (also known as Model-Driven Software-Development (MDSD)). This gives you good initial results in terms of productivity, but has the potential to create hard to maintain, monolithic, tightly-coupled monster systems.
The most promising approach right now is to introduce the idea of Software Product Lines (SPLs) to the domain of embedded software engineering and combine it with MDSD. This will give you the productivity gains you are looking for, but will also allow you to enforce a/the necessary level of reuse to ensure the long-term maintainability of the system.
In that context abstractions become pivotal. Without abstractions there is no way to create good boundaries for reuse. The first level of abstraction is the operating system and here is good news, because more and more embedded systems are based on standard operating systems (e.g. embedded Linux). But the layer above that is still under construction. What is needed is a platform that will allow you to build business-level software components and integrate them on the device and/or even reuse them over device boundaries.
Interesting efforts in this context are ...
Can we avoid the embedded software crisis? Yes, we can! Check it out.
[The major cause of the software crisis is] that the machines have become several orders of magnitude more powerful! To put it quite bluntly: as long as there were no machines, programming was no problem at all; when we had a few weak computers, programming became a mild problem, and now we have gigantic computers, programming has become an equally gigantic problem.
– Edsger Dijkstra, The Humble Programmer
Right now there are lots of people who are saying two things: First, embedded devices and embedded software will change and transform our way of life in a similar or even stronger way than the arrival of the internet and second, the resulting software engineering challenges are huge.
There are a lot of drivers/trends behind this, but two of the more critical ones are the arrival of multi-core processor architectures for embedded devices and the resulting increase in processing power that comes with it (see quote above :)). And secondly the increasing demand to make embedded devices talk to each other (e.g. make Electronic Control Units (ECUs) on the car talk to each other and then make cars talk to each other).
The lack of abstraction that we have in embedded software engineering makes more than 50% of all embedded software projects being later, over budget or not deliver on expectations.
This sounds and looks like a first class software (engineering) crisis. What do we do?
Killing the problem with people (e.g. throw more people at the problem) is a very popular approach, especially with the emergence of cheap off-shore development centers in India and other places, but creates a huge liability, because over time it does not scale very well and the management and maintenance burden has the potential to become an even bigger problem.
More thoughtful approaches first segment the embedded market from a requirements point of view and then look for much more systematic approaches to address the requirements in the given segment. One way to segment the market would be along the lines of the real-time requirements. Working assumption would be that there is a hard real-time market, a soft real-time market and an embedded market (no real-time requirements, but the software must run on devices with limited CPU and memory capabilities).
The segment with the strongest growth is the last one. Addressing the software engineering issues in this segment will give us the biggest bang for the buck.
One way to go about it is to use existing approaches that have (kind of) worked for the first two (real-time) segments and also use them in the embedded space, e.g. using integrated tool-chains to generate a lot of the source code (also known as Model-Driven Software-Development (MDSD)). This gives you good initial results in terms of productivity, but has the potential to create hard to maintain, monolithic, tightly-coupled monster systems.
The most promising approach right now is to introduce the idea of Software Product Lines (SPLs) to the domain of embedded software engineering and combine it with MDSD. This will give you the productivity gains you are looking for, but will also allow you to enforce a/the necessary level of reuse to ensure the long-term maintainability of the system.
In that context abstractions become pivotal. Without abstractions there is no way to create good boundaries for reuse. The first level of abstraction is the operating system and here is good news, because more and more embedded systems are based on standard operating systems (e.g. embedded Linux). But the layer above that is still under construction. What is needed is a platform that will allow you to build business-level software components and integrate them on the device and/or even reuse them over device boundaries.
Interesting efforts in this context are ...
- OSGi - a component deployment platform for embedded devices for components and services implemented in JAVA
- The Virtual Function Bus (VFB) in AUTOSAR - a common software infrastructure for automotive systems of all vehicle domains based on standardized interfaces
- Various embedded software engineering platforms for mobile devices like LiMo, Moblin and Android
Can we avoid the embedded software crisis? Yes, we can! Check it out.
04 August 2008
Randy Pausch - about elephants, walls, rooms and TVs
Last week Randy Pausch died. With all the hype around his cancer and "the last lecture", it was/is kind of hard to see who he was or what he was. Yesterday I tried to find out a little bit more and watched his presentation on time management. Good presentation, but not something that we haven't heard before. In the end I have to agree with him: He is a smart professor, but there are lots of smart professors out there. What made him unique was not what he did, but why he did it and how he did it. From what I saw of him, he had a passionate ambition to make learning fun. His students were his customers and he felt an obligation to deliver value to them. He found his purpose and lived it. And this makes him a role model.
Here are my personal take-aways ...
Here are my personal take-aways ...
- if there is an elephant in the room ... then talk about it!
- "experience is what you get, when you don't get what you want"
- walls are there to show you how much you really want something
- if your children want to paint their room ... let them do it!
- switch off the godd.... television
16 July 2008
RESTful Services - Dana Gardner, Adrian Trenaman, Roland Tritsch - wrapping it up
The Webinar went very well. I think we had over 50 poeple that showed up. The archived webinar and the source code will be available on open.iona.com.
Check it out.
Check it out.

