Hello!
 Nice to get some reply, Roland.
 Yes, I'm considering SIP implementation seriously, that's interesting
 one. So I think that I'll focus on this project :) Could you be a mentor
 for such SIP/VoIP project, Roland? I don't actually know how process of
 becoming mentor of GSoC at Eclipse looks like.
 Again, did some research after your answer. I've found that JAIN-SIP
 (JSIP reference implementation) seems to be a working implementation,
 still popular and used. JSDP (SDP library) FAQ states that SDP part of
 JAIN-SIP is somehow outdated. I'm hoping (and investigating) that it is
 possible to send JSDP-generated SDP messages with JAIN-SIP. If so, it
 maybe enough stuff to do signaling part.
 Coming back to real challenge part as you say... RTP/Media. I thought
 that Openfire is server doing something else. But ok, if you say it
 includes such implementation I will try to look at it. I'm just
 downloading source code and will search for. There is also Spark IM
 client from Jive  that has some SIP plugin. I wonder what does it use
 internally.
 Moritz, I've looked at your developer's log:
 http://wiki.eclipse.org/VoIP_in_ECF%2C_GSoC07_DevLog. It seems that you
 have used Smack API from Jive for XMMP/Jingle. Have you also used it for
 voice compression, coding, transport (with JMF plugged into Smack API),
 or am I wrong? I'll also download the code and look into.
 As JMF looks to be orphaned by Sun, I've found some interesting
 replacement-project: http://fmj-sf.net/. Some important VoIP audio
 codecs are alredy supported
 [http://fmj-sf.net/fmj/supported_formats.php], there is some RTP
 implementation allowing sound stream to be plugged-in into RTP driver.
 What is important, project is active, so there is a hope for future. It
 is LGPL licensed. However, I'm not sure about RTP quality/status, as it
 seems to be one of a GSoC task for this project
 http://www.sip-communicator.org/index.php/GSOC2008/FmjMedia. One
 approach may be to use JMF and possibly later switch to FMJ as they use
 the same or similar API.
 The problem is that these protocols/codecs implementations are all from
 different projects and there is no all-in-one library for doing all
 tasks. This can make the project somewhat harder.
 In a meanwhile I'll try to look closer at mentioned projects/libraries.
 Greetings,
 Marek Zawirski
 > Hello Marek,
 >
 > Your assumptions as far as the SIP implementation you mention is
 > concerned are correct. Implementing the SIP signaling should be
 > straight-forward but the real challenges lie with the RTP/Media
 > transport.
 > There were quite some challenges with the JMF approach we evaluated
 > with regards to portability and CODEC avialability... the JMF project
 > has been relatively dormant for quite a while and my guess is it will
 > not pick up momentum any time soon.
 >
 > The guys at Jive provided a custom RTP/Media implementation with the
 > Openfire version 3.xx relase and we haven't yet been able to look at
 > the details of that implementation. It may/should be possible
 > to use their implementation (both from a licensing and code
 > standpoint) in conjunction with a suitable signaling implementation
 > to implement the ECF Telephony API (as a SIP provider plugin).
 >
 > AFAIK, Moritz already used/tried out early versions of the Openfire
 > implementation within his ECF Telephony API jingle (signaling)
 > provider so maybe he could shed more light on that.
 > I am currently responsible for the IAX provider but currently taking
 > a different approach which involves wrapping native libraries that
 > provide both signaling and rtp media (a viable approach in the
 > absence of suitable java implementations).
 >
 > The VOIP functionality within ECF is much demanded by the community
 > and I personally think it will be great to have a SOC project take on
 > the SIP implementation. We could certainly share more details if you
 > are seriously cosidering such an implementation.
 >
 > Regards,
 > Roland.
 >
 >
 > Re: [ecf-dev] Google Summer Of Code ideas     « »
 >
 > Von Scott Lewis <slewis@xxxxxxxxxxxxx> (» Adressbuch)
 > An "Eclipse Communication Framework (ECF) developer mailing list."
 > <ecf-dev@xxxxxxxxxxx>, Moritz Post <moritzpost@xxxxxx>,
 > roland@xxxxxxxxxxxxxx, mik@xxxxxxxxxxx
 > Datum Tue, 25 Mar 2008 15:02:32
 >
 > Hi Marek,
 >
 > [Moritz and Roland...please see below for questions about
 > SIP/codecs/Java media]
 >
 > [Mik please see below for questions about Mylyn integration with ECF
 > as
 > a SOC project]
 >
 > Marek Zawirski wrote:
 >>> 1) Mylyn integration
 >>> I'm asking really nicely Remy, is it possible at all? :) If not
 > I'm
 >>> just leaving you list of some ideas (possibly stupid as I'm not
 >>> experienced user of Mylyn).
 >>>
 >>> Major function implemented by Remy is sending tasks between users.
 >>> I've thought what could be added and my output is:
 >>>
 >>> a) Chat/call with some user from issue-tracking system, such as
 > bug
 >>> reporter, possibly software client, or commenting developer. This
 > is
 >>> probably one of most obvious feature, but result in problem of
 >>> mapping Issue-Tracking System (let me name it ITS if you don't
 > mind)
 >>> users database to IM users list. First, I thought about heuristic
 >>> basing on usernames: cliking on username results in Menu "Chat
 >>> with..." and possible guesses in your buddy list, or manual user
 >>> selection. Such selection could be stored in some mapping,
 > possibly
 >>> locally or on ITS. However, I don't now is ITS a good place for
 > such
 >>> sensitive data?
 >>> When looking for solution, I've found
 >>> https://bugs.eclipse.org/bugs/show_bug.cgi?id=152415 which address
 >>> this problem and is related to Higgins framework(?). Do somebody
 > know
 >>> what's the current status of these issue? I guess it would require
 >>> changes in Mylyn itself possibly?
 >>>
 >>> Some generalization of a) would be creating mutliuser
 > chat/conference
 >>> for a task. Similar problems I guess + additional issue: multiuser
 >>> chat support in ECF providers.
 >>>
 >>> b) Also related to a). Make contacts/communication part of an
 > issue
 >>> context. ITS allows to define contacts of a task by providing:
 >>> reporter, assigned user (or users, depending on ITS), commenting
 >>> users. Is it enough?
 >>>
 >>> This would require Monitoring API implementation or some manual
 >>> adding to context(?). As it may be hard to distinct whether such
 > chat
 >>> is related to this issue or is it "just" chat with friends during
 >>> work, coding same time ;)
 >>> However, when somebody is initiating shared editor session, it's
 >>> quite sure that this contact is related to this task.
 >>> Some contacts may be also extracted from @author tags of javadocs
 >>> possibly. That's however, more language and company
 > recommendations
 >>> specific, I'm afraid. It's just another way of creating
 >>> communication-context which might be seen as general problem.
 >>>
 >>> Anyway, there are still some problems with contacts mapping, as
 > IMHO
 >>> it would be better to store them in ITS-usernames form in context
 >>> (more general form), and define mappings in other part (as users
 > may
 >>> use different IM for example).
 >>>
 >>> Another problem is that creating communication/contacts context in
 >>> form of Mylyn context will make it unusable for non-Mylyn ITS
 > users.
 >>>
 >>> c) When having some task-oriented chat with somebody, it mabye
 > useful
 >>> to add log from part of conversation to ITS, don't you think? This
 >>> may include extended problem recognition after interview with
 >>> reporter or implementation status details after chat with
 > developer.
 >>> However, it would be nice to do it easily, without too much manual
 >>> reformatting, so just selecting some fragment. That's mainly
 >>> copy-paste transformation support possibly. That's small feature
 >>> possibly.
 >>>
 >>> d) Some fun and maybe not possible;) Real-time task
 > synchronization.
 >>> When >= 2 developers work on some task(s) simultaneously and want
 >>> online synchronization of their contexts without manual sync. I
 > don't
 >>> know Mylyn details yet, especially context model and
 > synchronization
 >>> model. So I'm not sure is it possible to create such
 > synchronization
 >>> session. This may be a complex one.
 >>>
 >>>
 >>> I also wonder how much part of implementation of a) - d) or others
 >>> require intervention in Mylyn code. Is it in fact ECF project, or
 >>> Mylyn project using ECF (is it a problem?)? Possibly not
 > everything
 >>> could be done as Mylyn Bridge as my first my guess.
 >>
 >> I also wonder how much part of implementation of a) - d) or others
 >> require intervention in Mylyn code. Is it in fact ECF project, or
 >> Mylyn project using ECF (is it a problem?)?
 >
 > It's not inherently a problem, but would require coordination with
 > Mylyn
 > team (if it in fact does require changes to Mylyn code as opposed to
 > additions via further plugins). I've copied Mik Kersten on this email
 > to get his input on some of the questions you raise.
 >
 >> Possibly not everything could be done as Mylyn Bridge as my first
 > my
 >> guess.
 >>
 >>
 >> 2) VNC
 >>
 >>> Yes...this would be a terrific project IMHO. The reason we haven't
 >>> worked on this so far is captured in a single word: 'resources'.
 > We
 >>> just haven't had enough time/interested people to do it.
 >> (possibly) resourcesNumber++ ;>
 >
 > Sounds great.
 >
 >>>> What about realization?
 >>>> I've read about proposed idea to create some interface for
 > application
 >>>> sharing with VNC as one of implementation, or some existing
 > interfaces
 >>>> may be used (e.g. ISharedObject?). This could be used for session
 >>>> sharing possibly. VNC protocol need to be implemented or some
 > external
 >>>> library used.
 >>>>
 >>> Yes. There are different approaches here...one would be to make a
 >>> localhost socket connection to a running VNC server/host, and
 >>> basically have the ECF host get screen sharing data from
 > localhost,
 >>> send it over the wire, and then display on remote clients.
 >> I wonder what is a purpose of making ECF a proxy for real VNC
 > server.
 >> Is it really needed? Do you mean better control or some tunneling
 >> (with encryption?).
 >
 > Compression, encryption, and/or tunneling certainly can/could be
 > done.
 > Also, using ECF can distribute the VNC server output to several/group
 > of
 > receivers.
 >
 >> In simple model VNC server could just listen/bind on * interface,
 > not
 >> only localhost, being more standalone. All what is shared then is
 > some
 >> URL and possibly some settings? This may have some drawbacks
 > maybe... (?)
 >
 > This would be OK, but it would limit what you can/could do with ECF
 > (on
 > servers or clients). For example...if you are sending the VNC server
 > screen output and mouse/keyboard input over ECF provider, then you
 > can/could have some ways to do a) recording; b) have bots that
 > respond
 > to certain kinds of mouse/keyboard input...for example.
 >
 >>
 >>> Some months ago I tried to contact the VNClipse folks to ask them
 > if
 >>> they would be interested in working together...and didn't hear
 >>> anything back. They may have been busy, or things may have
 > changed,
 >>> so it would probably be worthwhile to try to contact them again. I
 >>> can't immediately remember what the license was, but at that time
 >>> they were not making the source available.
 >> I'll just write to them.
 >
 > OK, great.
 >
 >>> One other licensing issue is that the VNC source itself (including
 >>> the java clients) are GPL, so if we want to use/modify any of that
 >>> code the resulting code cannot be under the EPL (Eclipse license).
 >>> ECF has both EPL-based components (i.e. those hosted/distributed
 > at
 >>> dev.eclipse.org), and those *not* under EPL (the 'ECF Extras'
 > hosted
 >>> at ecf1.osuosl.org), so we can work around these issues for a SOC
 >>> project in any case.
 >> Did you mean TightVNC GPL implementation?
 >
 > Yes.
 >
 >
 >> I've done some zoom in at its vncviewer code - VNC client. It
 > appears
 >> to be not very very complicated, ~20classes / ~20KLOC. However,
 >> implementation is sticked to AWT/SWING, so would require embedding
 > AWT
 >> Canvas component or forking project and porting it to SWT. In the
 >> latter case, things looks rather straight-forward.
 >> BTW: interesting TightVNC feature is recording of session from
 > client.
 >
 > Yes.
 >
 >>> I personally do not, as I'm not an SWT expert. In other java-based
 >>> impls of VNC, we've used the native code impls of VNC and talked
 > to
 >>> them via a localhost socket connection as you suggest below (booo)
 >>> :). There may very well be ways to write a VNC server in java
 > using
 >>> SWT...and given SWT's native implementation it could be
 > sufficiently
 >>> performant on some/all platforms. I don't know.
 >>> But there are several people on the ECF committer list that are
 > very
 >>> good WRT SWT and UI: Boris Bokowski, Remy Suen, Chris Anisczyck
 > and
 >>> others. Hopefully we can pull them into the conversation
 >> I'd appreciate your comments:) Things that I'm especially wondering
 >> are they possible:
 >> - is it possible to make SWT "secondary" output to some
 > user-provided
 >> framebuffer class, register some redrawing listener for a whole
 >> desktop, even when non-SWT window is focused?
 >> - is it possible to grab mouse/keyboard input from other windows,
 > even
 >> when non-SWT window is focused?
 >
 > I doubt it (for both questions), but this is indeed something that
 > should be asked of SWT experts. Perhaps it would be a good idea to
 > pose
 > these questions in the SWT newsgroup(s)?
 >
 >> Still, some external native code could be started like with Skype,
 > but
 >> AFAIK VNC servers are provided in different ways and under
 > different
 >> licenses. Eventually it could be configured by user, but what are
 >> Eclipse-embedding benefits then...
 >>
 >> BTW What java-based impl did you mean, Scott? Some closed-source?
 >
 > No, I meant the java client provided with realvnc (I think that's the
 > name).
 >
 >> 3) SIP
 >>
 >>>> 4) SIP implementation, not yet made for ECF(?). I don't have much
 >>>> experience (except user-side) with that protocol, just wondering
 > how
 >>>> laborious this task may be...
 >>>>
 >>> This is a great question for our two VOIP committers: Moritz Post
 >>> (did the Jingle VOIP SOC project last year), and Roland Fru (has
 >>> worked quite a lot with SIP and Asterisk).
 >>>
 >>> In either case I think a SIP provider (implementer of the ECF call
 >>> API) would be great.
 >> Ok, again, I'm asking kindly for some comments:)
 >> I've found JAIN SIP API and reference implementation of SIP and
 > SDP,
 >> made as part of Java Specification Request. However, I've read it
 > is
 >> bit outdated, on JSDP page - don't know how/why. JSDP is unofficial
 >> (out of JSR) implementation od SDP. Basic signaling part of this
 >> project may be not very hard. I'm expecting more problems with
 >> interoperability and mainly - transport/RTP and codecs/audio
 >> implementations.
 >> Or do you have other experiences?
 >
 > I'm forwarding this onto Moritz Post, who did the 2007 VOIP project
 > (Jingle). He ended up using Java Media codecs/audio implementations
 > to
 > do this, as I expect that's what the JAIN sip implementation does.
 > I've
 > noticed that the JAIN SIP implementation doesn't seem to be getting a
 > lot of new work recently, so I'm not sure of it's status. Moritz and
 > Roland please comment about existing SIP implementations that you
 > know
 > about.
 >
 >
 >> The codecs, audio, RTP part may be already implemented as part of
 >> Moritz Post GSoC work possibly(?). AFAIK jingle is just another
 >> signaling protocol with similar role as SIP with SDP, so maybe
 > audio,
 >> compression and streaming code may be shared?
 >
 > That is very possible. I'll let Moritz and Roland answer your
 > questions
 > more directly.
 >
 > Thanks,
 >
 > Scott
 >
 > Ihr Postfach  Logout
 > _______________________________________________
 > ecf-dev mailing list
 > ecf-dev@xxxxxxxxxxx
 > https://dev.eclipse.org/mailman/listinfo/ecf-dev
--
 Marek Zawirski [zawir]
 marek.zawirski@xxxxxxxxx