At Grame, we started working on JACK (jack1 at that time) in 2003 and our first commitment was to port the C code base on OSX. Even if the result was working, we rapidly felt that the C code base was not flexible enough to evolve in the direction we wanted to explore: multi-platforms support, SMP and glitch-free connections (among other ideas we had...) . Around 2004-2005 we had a new C++ based code base that was first developed on OSX, later ported in Linux (2005), on Windows (summer 2006) and Solaris (summer 2008 as a result of funding coming from RTL french radio). In 2004 we also found the way to better "integrate" JACK in the CoreAudio architecture on OSX (the JackRouter JACK/CoreAudio bridge) that allowed any CoreAudio application to become a JACK client, thus participating in the success we had on OSX with the JackOSX package.
I think the "about 3 years ago, the JACK mini-summit in Berlin" Paul told about, was actually during LAC 2008 in Kohn. It was my impression that most of the JACK community was interested to see jackdmp (renamed jack2 at that moment) become the future of JACK, and late 2008 and 2009 was an intense period of work to reach this goal. Nedko (mostly but some other) did a huge job of improving the build system, implement the so-called "JACK Control API" (or at least the server side of it) and helped in other areas. The D-Bus based server control code (Nedko) was also integrated at that time.
In spring 2009 started this "D-Bus war" and after endless discussion with people with strong opinions (Fons, Nedko...) it appeared that no agreement could be found. The best that we could achieve (in my view) was to clearly define the "JACK Control API" as the "frontier" between the external world that wants to control the JACK server, and the server code itself, and report all more sophisticated control mechanism outside. At about the same time, some developers (Torben, Paul ...) started to rebirth the jack1 codebase, and it appeared more and more clear that the "jack2 become the official code base" idea start to become a vanishing goal.
I must say that I still don't have a clear understanding of why this happened. I still don't understand the sentence "Like Torben, there are some design decisions there that I have questions about." and I think explaining it in more details would really help. The fact that jack1 and jack2 are almost indistinguishable in everyday use is quite satisfactory, but at the same time the subtle difference that stay continue to cause some endless comments from users about the "real" advantages of each of the two implementations. I still see reports from "more xruns" here or a "bit less CPU use" there, but with no real data and clear "step by step way to reproduce issues" that would help to fix remaining bugs in jack2 codebase (for example jack2 still probably has issue with multi-cards support compared to jack1, but AFAICS this is in ALSA backend, and I cannot progress on that without the help of people with multi-cards and knowledge in ALSA backend code).
Concerning session management added in JACK codebase, I did not followed the discussion in details. I said to Paul in a private mail that I though it was not a good idea (but maybe I am completely wrong...) but I would certainly not oppose to a implementation for jack2. I remember someone volunteered to work on that ??
I have to say that I become quite tired of all that mess, since I don't see any clear way to solve the situation. After about 5 years of real commitment in JACK project, I decided to move back a bit and work on some other stuff. I still try to follow bug reports and jack1 changes, release a package from time to time and maintain JackOSX project. I still think some interesting ideas (like the "pipelining" mode that currently stay in a jack2 branch...) are of interest (especially since we now see with those "4 cores/threads" model in new laptops...) and should be pushed in mainline.
Linux-audio-dev mailing list