In my nightly jams with Ninjam I've recently found out loads about how it can be improved. Firstly there's now a linux client (there's always been one but this one is gui based). It's called gninjam. Best of all is that in doing this, Tobias the author of this first derivative, separated display from core functionality creating libninjam and a front end which he wrote in Glade.
I want to write a new front end for it then, using libninjam and wxpython which looks simple enough, although this is all very ambitious, and I may never actually get to do it, but here's all the ideas meanwhile:
a last.fm-like client that is able to :
* Simplify the process of setting up audio: loads of ninjam users get in, but cant' hear themselves, some other player, or are coming through distorted etc and have to rely on the irc window to help them. For this I'd make a "testing room" - a room run on a standard server somewhere that everyone used then as a doorway to all the other servers(would show who is logged in, and allow people to register their own servers too). Also, visual feedback about sound setup should be much more detailed - such as graphical displays of the sound levels for each user connected (however delayed if this reduces performance).
* Another point of confusion is the way latency is handled - by slowing everyone down to the last beat. Could a display be made that showed where you were in the measure? Perhaps the sound level graphs would be enough for this, or a tutorial could be put together that played something set each time and asked you to play on time so you can "practice" this.
* Third, the stream that's recorded isn't available. This should be a toggle, so you can go straight in and hear how you sound.
* This is just technical stuff: a community would have to be formed, so "contest" stuff like on the ccmixter site - big jams or even popular flash-mob style events would bring people in and get them coming up with stuff. (I imagine a 30 minute session of keyboard typing in offices from around the world for example - not musical and not jamming but very inclusive and perhaps also interesting). Among other things, a community of users would then let you for example always have people on IRC helping people out in real time, plan times and slots on servers for specific styles of music etc....
* Also ways to define the music you want to do: setting a key, a beat, a style or whatever. Some of this would be helped by user logins allowing you to set a personal profile with the insturments you play etc.
* A screen with profiles could be linked with a "score screen" - so people tuning in to the jam or a set "conductor" could send timed, large font sized instructions that they could all see while jamming. Perhaps a separate, very low quality mic stream would let people have the option of headphone mics while playing, allowing them to exchange comments as they play too. There is software already for linux that does this kind of performance friendly prompting.
* Separating the editing from the jamming - what if remix artists could join in on a live jam and work with the samples as the jam happened? This is for the far future I think...
* integrating Raptor's drum machine features and making them simpler - so as to allow easy to make drum patterns.
* jesusonic for linux clients...?
Could Ninjam be used to aid a geographically distant but studio quality live performance/recording? Perhaps if 2 people were able to jam together with a high speed connection and low quality streams, the latency issue would disappear. After this the high quality tracks would be sent and mixed later, so you'd have a good telematic performance as well as a good recording of it.