<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
<html>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>ECF New and Noteworthy</title>
<link rel="stylesheet" href="http://www.eclipse.org/default_style.css" type="text/css">

</head>

<body bgcolor="#FFFFFF">
<table border=0 cellspacing=5 cellpadding=2 width="100%">
  <tbody>
    <tr>
      <td width="69%" class="bannertext">
        <font class="indextop style">eclipse communication framework</font>
        <br><br>
        <font class="indexsub">an eclipse technology project</font>
        <br><br>
        <font class="indextop style2">New and Noteworthy</font><br>2.0.0 milestone 4a</font>
        <br><br><br>
        Return to <a href="downloads.php">ECF download page</a></br>
        <br><br>
        <a href="NewAndNoteworthy_1.0.0.html">New and Noteworthy for 1.0.0</a><br>
        <a href="NewAndNoteworthy_1.1.0.html">New and Noteworthy for 1.1.0</a><br>
        <a href="NewAndNoteworthy_1.2.0.html">New and Noteworthy for 1.2.0</a><br>
        <br><br>
      </td>
      <td width="31%">
        <div align="center">
          <img src="../images/Idea.jpg" width="120" height="86" hspace="50" align="middle">
        </div>
      </td>
    </tr>
  </tbody>
</table>

<hr>

<table>

  <TR>
  
    <TD vAlign=top align=left width="30%">
        <P align=left>
	<B>Real-Time Shared Editing over XMPP/Google Talk and Skype</B>
        </P>
    </TD>
    <TD vAlign=top width="70%">
    <p>
    The ECF team is working on supporting several use cases based upon real-time shared editing.  For example, online code reviews, collborative
    debugging and testing, and distributed pair programming.  We've just started this work, and there is now some 'signs-of-life' work
    that works on the XMPP/Google Talk and Skype providers.  See the page <a href="http://wiki.eclipse.org/DocShare_Plugin">DocShare plugin wiki page</a>
    for usage instructions and screen shots.  Please feel free to provide input/feedback about desired features at both the UI level and the 
    API level via the ECF mailing list <mailto:ecf-dev@eclipse.org> or the <a href="https://bugs.eclipse.org/bugs/enter_bug.cgi?product=ECF&bug_severity=enhancement">ECF bugs/enhancements list.</a>
    </p>
       <br><br>
    </td>
  </TR>

  <TR>
    <TD vAlign=top align=left width="30%">
        <P align=left>
	<B>URL and Eclipse View sharing</B>
        </P>
    </TD>
    <TD vAlign=top width="70%">
       It's now possible to immediately share URLs and to remotely open Eclipse views via ECF the XMPP/Google Talk and/or Skype providers.
       To do so, open the context menu (right click) on the buddy of your choice in the contacts list:
       
              <p></p>       
       <img src="images/screens/showurl.png"></li>
       <br><br>
       Then the receiver will see a notification like this
       <p></p>
       <img src="images/screens/showurlreceive.png"></li>
       <br><br>
       And if they accept the request will then see
       <p></p>
       <img src="images/screens/showurlreceive1.png"></li>
       <br><br>
       The 'Send Show View Request...' has a similar sequence.
       
       <br><br>
    </td>
  </TR>
  
  <TR>
    <TD vAlign=top align=left width="30%">
        <P align=left>
	<B>Linux Support for ECF Skype Provider</B>
        </P>
    </TD>
    <TD vAlign=top width="70%">
       The ECF Skype provider now supports Linux...bott 32-bit and 64-bit installations.  See the <a href="http://ecf1.osuosl.org">OSU OSL Site</a> to install.
       <br><br>
    </td>
  </TR>
    

  <TR> <!----------------------------------------------------->
    <TD colSpan=2> <HR> </TD>
  </TR>
  
 <TR><TD colSpan=2><H2>ECF API Changes</H2></TD>

  <TR>
    <TD vAlign=top align=left width="30%">
        <P align=left>
	<B>Discovery API</B>
        </P>
    </TD>
    <TD vAlign=top width="70%">
       The discovery API has been simplified and extended.  See <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=209774">bug #209774</a> and the
       <a href="http://wiki.eclipse.org/index.php/ECF_API_Docs#Discovery_API">ECF Discovery API</a> documentation.
       <br><br>
       <b>IMPORTANT NOTE:</b>The discovery API has undergone a number of simplifications that make it easier to use, but have broken backward compatibility.  Applications
       that have been written to a previous version of the discovery API will have to be changed to use the new API.  See the <a href="http://www.eclipse.org/ecf/org.eclipse.ecf.docs/api/org/eclipse/ecf/discovery/IDiscoveryContainerAdapter.html">IDiscoveryContainerAdapter</a>
       class for more information.
    </td>
  </TR>

    <TD vAlign=top align=left width="30%">
        <P align=left>
	<B>FileTransfer API</B>
        </P>
    </TD>
    <TD vAlign=top width="70%">
    	Added support improvided simplified outgoing file transfer.  Added new provider for SCP-based file retrieve (download)
    	and file send (upload).  See documentation for <a href="http://wiki.eclipse.org/ECF_API_Docs#File_Transfer_API">ECF File Transfer API</a>.
       <br><br>
    </td>
  </TR>

</table>

</body>
</html>
