I'm Dan Shearer of both the OpenChange project and the Samba Team, and I wrote the message on bacula-devel linked by anonymous' original post. I would like to correct the unfortunate impression given by anonymous that OpenChange has been reluctantly forced to change licenses because Samba has moved to the GPLv3. In fact, OpenChange see that the GPLv3 is entirely appropriate for Samba, and OpenChange plans to use the GPLv3 even when not necessarily required to do so by upstream licenses. The move to GPLv3 was one of two license changes we plan to announce on openchange.org in the next few days.
The specific issue highlighted in the post is not a general GPLv3/v2 incompatibility. Code which is licensed under the GPLv2 but no later version is incompatible with the GPLv3. There are a few significant examples of GPLv2-only code, including KDE as mentioned and also the Linux kernel, which cannot be linked to GPLv3 code. That is a matter of policy for those few projects. We would of course be delighted to be able to use their code as appropriate if they change their policy at some point, but we have no complaint if they do not choose to do so. The GPL offers many choices and this is one of them.
Most GPLv2 code includes the words "or any later version", which is a statement of trust by the licensor in the people who create those later versions. The GPLv3 was created as a community effort, a very large and representative community effort, and in that sense many people think that this trust has been maintained. Including the Samba Team and the OpenChange project. If you are unsure about this, go to archive.org and search for "Eben Moglen 2007", which will give you a choice of media and plain text for the summary talk in Edinburgh a day or two before the GPLv3 was released. We understand there are different opinions on licensing including some who do not like the GPLv3, however it is indisputable that the GPLv3 is very much a community production rather than a statement from the FSF. That fact of community evolution supports the idea that the trust implied by "or any later version" has been maintained.
It might also be helpful to reflect on the history of OpenChange. OpenChange is an independent work from a team led by Julien Kerihuel built on the research and tools produced by the Samba Team. OpenChange has been the direct beneficiary of a lot of effort contributed by the Samba Team over the last four years. We strongly support Samba's use of the GPLv3 as being an appropriate response to the current legal environment.
The thread the anonymous poster linked to was in response to Kern Sibbald of the excellent Bacula project. Kern has his particular views, and we respect those views, but they are by no means general. (Readers may also like to read the entire thread on bacula-devel.) When we look at the numbers at Palamida (http://gpl3.palamida.com:8080/index.jsp) we find many thousands of projects that OpenChange can link against, besides all the others with compatible licenses such as the Apache license. We don't feel very lonely:-)
Just a correction... Simics doesn't fill in any gaps. Hindsight keeps a lot of snapshots, and then after the user picks a particular snapshot the simulated computer runs forward in time doing whatever the software tells the processor to do (eg, lock solid.) There is no guesswork here.
Think of it like "if you had your life all over again". You probably wouldn't start with being born, you'd pick that point when you were fifteen and said the wrong thing at a critical time. So with Hindsight, you can back up to five minutes of time as experienced in the simulated world before an error occured (let's pick a trivial, very human-oriented case!) and very quickly you type the commands to grow your raid array. Now, when the database program gets to the critical point it won't run out of space . A more typical case is replacing a binary that is about to be run with one that doesn't have a critical bug -- or maybe just modifying a value in machine memory. Here on the Simics product team we find one of the greatest benefits is that Simics controls the machine from outside, so changing a memory value is hopefully not going to create a Heisenbug the way it can if you modify values through gdb running inside the machine.
Good point. A Virtutechie here, I'm on the product team... if you are running Ethereal externally on the real host monitoring simulated ethernets inside Simics then it gets rather confused when the simulated ethernet starts running backwards (or rather, as per the white paper, running forwards in small reverse increments.)
What I recommend is that if a monitoring tool does not have too much overhead and if there is no special reason for it to be running on the host then the tool itself can be run inside the simulated universe. Say you pick tcpdump... when the simulated universe goes backwards so does tcpdump. This approach has limitations of course, a more general solution involves communicating the stops and starts to the external monitor. If the monitor understands clock ticks (eg some profiling tool monitoring a simulated embedded board) then that's perfect, because Simics counts that way too. If the monitor is at another level such as ethereal then that's a more difficult discussion.
You make a very good point. Simics can run an arbitary electronic device in reverse so there are a lot of applications yet to be explored.
Exactly! So this is full system simulation, and if whatever "the system" you care about is simulated then it can run backwards. I'm on the Simics product development team and this is what I do: pick the architecture (say, PPC32 with 4 network cards, 1 serial port and no video card); install an OS (say, Debian); configure my new simulated router. But you can't test a router in isolation, so I get pre-installed images of Linux, Solaris and Windows clients and servers and configure their networking to match my new router, and run them in the same simulated universe. Then I watch the client-server traffic happening across my router. This is one of the demos we ran at the ESC conference last week in San Francisco.
Whoops! Something went wrong. So I hit reverse... that means that all clients and servers, all networking and in fact the global system clock all go backwards at the same rate and to the same point. I can then make some configuration change on my new router and then restart the simulated universe from that point. This is what we call "alternate futures". There's many other ways to achieve similar ends, but this is the least painful one I know.
The beauty of full systems simulation is that you are simulating the full system:-) So UI interactions also take place in the simulated world.
The trick is to have a simulator fast enough so that you can do UI interactions, because the user isn't in the simulated world. As it happens Simics is fast enough and this is exactly how it works. I'm on the Simics product team, and one way we have of proving the point is to run operating systems and their applications backwards for which we cannot have the source code, eg Microsoft Windows. If someone still thinks we've inserted magic tricks after seeing CLOCK.EXE launched, run backwards and then unlaunch, well, there's not a lot more we can do. That also illustrates the point of the whole computer plus OS running backwards, not just a particular application.
You can get humorously stuck actually with UI interactions... if you run forward to a certain point going point click etc, and then have an animated discussion with somebody for five minutes having forgotten to pause the simulation... unless you do something clever when you engage the reverse gear you have to sit and wait for nothing to un-happen for five minutes until you see the UI get reversed!
You'll see in the whitepaper referred to in the original posting that the principle involves the entire machine state being preserved and replayed. So it doesn't matter what instructions are executed or in what order. Simics (and therefore Hindsight, a feature of Simics 3.0) is all about creating and controlling an entire universe of machines and networks. I'm part of the Hindsight product team and run backwards all day:-)
I'm Dan Shearer of both the OpenChange project and the Samba Team, and I wrote the message on bacula-devel linked by anonymous' original post. I would like to correct the unfortunate impression given by anonymous that OpenChange has been reluctantly forced to change licenses because Samba has moved to the GPLv3. In fact, OpenChange see that the GPLv3 is entirely appropriate for Samba, and OpenChange plans to use the GPLv3 even when not necessarily required to do so by upstream licenses. The move to GPLv3 was one of two license changes we plan to announce on openchange.org in the next few days.
:-)
The specific issue highlighted in the post is not a general GPLv3/v2 incompatibility. Code which is licensed under the GPLv2 but no later version is incompatible with the GPLv3. There are a few significant examples of GPLv2-only code, including KDE as mentioned and also the Linux kernel, which cannot be linked to GPLv3 code. That is a matter of policy for those few projects. We would of course be delighted to be able to use their code as appropriate if they change their policy at some point, but we have no complaint if they do not choose to do so. The GPL offers many choices and this is one of them.
Most GPLv2 code includes the words "or any later version", which is a statement of trust by the licensor in the people who create those later versions. The GPLv3 was created as a community effort, a very large and representative community effort, and in that sense many people think that this trust has been maintained. Including the Samba Team and the OpenChange project. If you are unsure about this, go to archive.org and search for "Eben Moglen 2007", which will give you a choice of media and plain text for the summary talk in Edinburgh a day or two before the GPLv3 was released. We understand there are different opinions on licensing including some who do not like the GPLv3, however it is indisputable that the GPLv3 is very much a community production rather than a statement from the FSF. That fact of community evolution supports the idea that the trust implied by "or any later version" has been maintained.
It might also be helpful to reflect on the history of OpenChange. OpenChange is an independent work from a team led by Julien Kerihuel built on the research and tools produced by the Samba Team. OpenChange has been the direct beneficiary of a lot of effort contributed by the Samba Team over the last four years. We strongly support Samba's use of the GPLv3 as being an appropriate response to the current legal environment.
The thread the anonymous poster linked to was in response to Kern Sibbald of the excellent Bacula project. Kern has his particular views, and we respect those views, but they are by no means general. (Readers may also like to read the entire thread on bacula-devel.) When we look at the numbers at Palamida (http://gpl3.palamida.com:8080/index.jsp) we find many thousands of projects that OpenChange can link against, besides all the others with compatible licenses such as the Apache license. We don't feel very lonely
Just a correction... Simics doesn't fill in any gaps. Hindsight keeps a lot of snapshots, and then after the user picks a particular snapshot the simulated computer runs forward in time doing whatever the software tells the processor to do (eg, lock solid.) There is no guesswork here.
Think of it like "if you had your life all over again". You probably wouldn't start with being born, you'd pick that point when you were fifteen and said the wrong thing at a critical time. So with Hindsight, you can back up to five minutes of time as experienced in the simulated world before an error occured (let's pick a trivial, very human-oriented case!) and very quickly you type the commands to grow your raid array. Now, when the database program gets to the critical point it won't run out of space . A more typical case is replacing a binary that is about to be run with one that doesn't have a critical bug -- or maybe just modifying a value in machine memory. Here on the Simics product team we find one of the greatest benefits is that Simics controls the machine from outside, so changing a memory value is hopefully not going to create a Heisenbug the way it can if you modify values through gdb running inside the machine.
Does that help?
Good point. A Virtutechie here, I'm on the product team... if you are running Ethereal externally on the real host monitoring simulated ethernets inside Simics then it gets rather confused when the simulated ethernet starts running backwards (or rather, as per the white paper, running forwards in small reverse increments.)
What I recommend is that if a monitoring tool does not have too much overhead and if there is no special reason for it to be running on the host then the tool itself can be run inside the simulated universe. Say you pick tcpdump... when the simulated universe goes backwards so does tcpdump. This approach has limitations of course, a more general solution involves communicating the stops and starts to the external monitor. If the monitor understands clock ticks (eg some profiling tool monitoring a simulated embedded board) then that's perfect, because Simics counts that way too. If the monitor is at another level such as ethereal then that's a more difficult discussion.
You make a very good point. Simics can run an arbitary electronic device in reverse so there are a lot of applications yet to be explored.
Exactly! So this is full system simulation, and if whatever "the system" you care about is simulated then it can run backwards. I'm on the Simics product development team and this is what I do: pick the architecture (say, PPC32 with 4 network cards, 1 serial port and no video card); install an OS (say, Debian); configure my new simulated router. But you can't test a router in isolation, so I get pre-installed images of Linux, Solaris and Windows clients and servers and configure their networking to match my new router, and run them in the same simulated universe. Then I watch the client-server traffic happening across my router. This is one of the demos we ran at the ESC conference last week in San Francisco.
Whoops! Something went wrong. So I hit reverse... that means that all clients and servers, all networking and in fact the global system clock all go backwards at the same rate and to the same point. I can then make some configuration change on my new router and then restart the simulated universe from that point. This is what we call "alternate futures". There's many other ways to achieve similar ends, but this is the least painful one I know.
The beauty of full systems simulation is that you are simulating the full system :-) So UI interactions also take place in the simulated world.
The trick is to have a simulator fast enough so that you can do UI interactions, because the user isn't in the simulated world. As it happens Simics is fast enough and this is exactly how it works. I'm on the Simics product team, and one way we have of proving the point is to run operating systems and their applications backwards for which we cannot have the source code, eg Microsoft Windows. If someone still thinks we've inserted magic tricks after seeing CLOCK.EXE launched, run backwards and then unlaunch, well, there's not a lot more we can do. That also illustrates the point of the whole computer plus OS running backwards, not just a particular application.
You can get humorously stuck actually with UI interactions... if you run forward to a certain point going point click etc, and then have an animated discussion with somebody for five minutes having forgotten to pause the simulation... unless you do something clever when you engage the reverse gear you have to sit and wait for nothing to un-happen for five minutes until you see the UI get reversed!
You'll see in the whitepaper referred to in the original posting that the principle involves the entire machine state being preserved and replayed. So it doesn't matter what instructions are executed or in what order. Simics (and therefore Hindsight, a feature of Simics 3.0) is all about creating and controlling an entire universe of machines and networks. I'm part of the Hindsight product team and run backwards all day :-)