<?php  																														require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/app.class.php");	require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/nav.class.php"); 	require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/menu.class.php"); 	$App 	= new App();	$Nav	= new Nav();	$Menu 	= new Menu();		include($App->getProjectCommon());    # All on the same line to unclutter the user's desktop'

$pageTitle 		= "Eclipse Committer Gathering July 27, 2005";
$pageKeywords	= "committers";
$pageAuthor		= "Bjorn Freeman-Benson Nov 20/05";

ob_start();
?>		
    <div id="maincontent">
	<div id="midcolumn">
        <h1><?= $pageTitle ?></h1>

  On July 27, 2005 representatives from four Eclipse projects met informally to 
  discuss cross-project dependencies, identify areas for cross-project coordinated
  work, and discuss general committer community maintenance issues.
  <br><br>
  <b>When</b>:  July 27th, 2005,  12:30pm-4:30pm
  <br>
<b>Projects</b>:  <a href="/platform/">Platform</a>, 
<a href="/webtools/">Web Tools Platform</a>, 
<a href="/tptp/">Test and Performance Tools Platform</a>, 
<a href="/ecf">Eclipse Communication Framework</a>
<br>
<b>Where</b>:  <a href="http://www.opentechcenter.com">Open Technology Business Center</a>, Beaverton Oregon
<br><br><b>Attendees</b><br><br>
<b><a href="/ecf">ECF</a></b>:  Scott Lewis, Pete Mackie
<br>
<b><a href="/platform/">Platform</a></b>: Luc Bourlier, Jared Burns, John Wiegand
<br>
<b><a href="/tptp/">TPTP</a></b>:  Karla Callaghan, Sri Doddapaneni, Anurag Gupta, Guru Ngarajan, Tyler Thessian
<br>
<b><a href="/webtools/">WTP</a></b>:  Ted Bashor, Konstantin Komissarchik, Tim Wagner
<h3>
Informal Meeting Agenda</h3>
<ul>
<li>Provide Comments/Needs Input to Committer Board Representatives</li>
<li>Cross-project Technical Fiscussion:  Platform 3.2 Plan</li>
</ul>

<h2>Notes: Discussion with Committer Board Reps</h2>

Committer Board Reps Present:  Scott Lewis, John Wiegand
<ul>
<li>Projects need more ways to report process ideas/successes/failures 
to other projects</li>
<li>Need more/better ways for cross-project reporting of
	<ul><li>API changes</li>
	<li>Project plan changes</li></ul>
</li>
<li>Email/Mailing Lists:  Need to add cross-project dependencies
<li>Need Wiki with development practices content (see bug <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=87949">#87949</a>)
<li>Automate cross-project change notifications for plan documents
<li>Support/require better coordination of release timing across projects (see <a href="/projects/timeline/">Release timeline</a>)
<li>Provide project dashboard (see bug <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=109224">#109224</a>)
<li>Web site improvement (emphasize/support <a href="/phoenix/">project Phoenix</a>)
<li>Create/encourage opportunities for projects to share success stories, developed technologies, and best practices with other projects/committers
<li>Bugzilla Improvement Ideas
<ul><li>
	Enhancement tracking (see bug <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=111005">#111005</a>)
	<li>
	Enhance/detail committer guidelines for bugzilla usage
	<li>
	Detail conventions for use of 'priority' and 'severity' fields
	<li>
	<a href="">TPTP project</a> has created sets of custom queries: generalize and provide to all projects
</ul>
</li>
<li>Have committer input/reviews of EMO-provided infrastructure changes (see bug <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=104097">#104097</a>...work request tracking system)
<li>Provide basic committer community statistics:  How many committers?  Affiliation?  By project?  (see bug <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=106559">#106559</a>)
<li>Provide committer reputation system (bugzilla impl or not, whatevers easier)
<li>Provide assistance for developers/contributors prior to becoming committers (see bug <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=105637">#105637</a>)
	<ul>
	<li>More support systems for learning best practices, codebase
	<li>CVS lacking pserver proxy support for non-committers
	<li>How can we help contributors and developers ramp up to become full committers?
    </ul>
</li>
</ul>

<h2>Notes:  Cross-Project Technical Issues</h2>

John Wiegand presented <a href="/eclipse/development/eclipse_project_plan_3_2.html">Platform 3.2 pre-release plans</a> and received input/feedback from WTP, TPTP, and ECF committers
<br>
<h3>Areas for Greater Future Cross-Project Interaction</h3>
<ul>
	<li>WTP -> Platform: Improved builder architecture (see <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=37723">bug # 37723</a>)
	<li>WTP -> Platform: Support for hierarchical projects?  More flexible workspaces. (see <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=106176">bug #106176</a>)
	<li>ECF -> TPTP:  ECF use of TPTP communications.  ECF could use TPTP communications API as ECF provider.
	<li>TPTP -> ECF:  DSDP, TPTP, ECF...commonalities?  ECF could provide support for communications needs for several projects, including <a href="/dsdp">Device Software Development Platform</a>
	<li>ECF -> WTP:  Runtime access to DOM in embedded Browser or ECF-enabled shared web browsing
	<li>ECF > Platform/RCP:  Support for <a href="/ecf/documentation.html#Identity">namespaces and identity</a>
</ul>

<h2>Attendee Observations about Meeting</h2>

<ul>
<li>Cross-project interaction beneficial
<li>Format good (very informal but with technical focus)
<li>Include/allow different people at subsequent events
<li>Improves awareness of other project activities
<li>Face-to-face good for establishing/strengthening committer community
<li>Continue with other venues, other projects, other representatives
</ul>
<h3><a href="index.php">Tips for Holding Other Committer Gatherings</a></h3>
<?php
	# Paste your HTML content between the EOHTML markers!	
	$html = ob_get_contents();
	ob_end_clean();

	# Generate the web page
	$App->generatePage($theme, $Menu, $Nav, $pageAuthor, $pageKeywords, $pageTitle, $html);
?>
