<?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 Research Community";
$pageKeywords	= "technology research";
$pageAuthor		= "Bjorn Freeman-Benson Nov 20/05";

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

<p>Eclipse is used in a wide range of educational and research projects at Universities 
  around the world. They range from using eclipse as a teaching resource in the 
  classroom to projects designed to explore the next generation of computing ideas 
  and theories. This page will give you a few pointers to get you started in exploring 
  the Eclipse research community. <br />
  <br />
  (Several of the projects listed here are funded under the IBM Eclipse Innovation 
  Grant program. You'll find information about the program as well as a complete 
  list of awardees from 2003-2005 on the <a href="http://ibm.com/university/eclipseinnovation" target="_blank">IBM 
  Scholars</a> website.)</p>
<p>If you'd like to have your project listed here, please <b><a href="mailto:news@eclipse.org">email</a> 
  </b>us. You can also discuss your ideas and suggestions for new eclipse research 
  projects on the <a href="news://www.eclipse.org/eclipse.technology">Technology 
  Project newsgroup</a> </p>
  
<div class="homeitem3col">
<h3>North American</h3>
 
      <ul class="midlist">
    <li> 
    FLABot - A fault-localization and debugging tool for Eclipse plug-ins - 
    <a href="http://www.exa.unicen.edu.ar/isistan/flabot/" target="_blank">http://www.exa.unicen.edu.ar/isistan/flabot/</a><br />
      Marcelo Campo, Alvaro Soria, Andres Diaz Pace<br />
      Instituto de Sistemas Tandil<br />
      Universidad Nacional del Centro de la Provincia de Buenos Aires</li>     
    <li> 
    Soot Eclipse Plugin - Integrating Soot, 
      a Java Optimization Framework into Eclipse - <a href="http://www.sable.mcgill.ca/soot/eclipse/" target="_blank">http://www.sable.mcgill.ca/soot/eclipse/</a><br />
      Jennifer Lhotak, Laurie Hendren<br />
      Mcgill University</li>
    <li>JQuery: A Query Based Source Code Browser 
      for Eclipse (3.0) JDT - <a href="http://www.cs.ubc.ca/labs/spl/projects/jquery" target="_blank">http://www.cs.ubc.ca/labs/spl/projects/jquery</a><br />
      Doug Janzen and Kris De Volder <br />
      <a href="http://www.cs.ubc.ca/labs/spl/" target="_blank">The Software Practices 
      Lab</a>, <a href="http://www.cs.ubc.ca/" target="_blank">Department of Computer 
      Science</a><br />
      University of British Columbia </li>

    <li>Gild: A Groupware Enabled Integrated 
      Learning and Development Environment for Eclipse - <a href="http://gild.cs.uvic.ca" target="_blank">http://gild.cs.uvic.ca</a><br />
      Margaret-Anne Storey / Daniela Damian / Daniel German / Mary Sanseverino, 
      University of Victoria<br />
      Marin Litoiu / Marcellus Mindel, IBM<br />
      Derek Rayside, MIT </li>
	<li>
    Green: A simple UML class diagramming 
      plug-in for Eclipse that does live round-tripping, and has customizable 
      semantics for its class relationships - <a href="http://green.sourceforge.net" target="_blank">http://green.sourceforge.net</a> 
      <br />
      Carl Alphonce, Computer Science &amp; Engineering<br />
      University at Buffalo (SUNY) </li>
    <li> 
    Automated Continuous Testing - <a href="http://pag.csail.mit.edu/continuoustesting">http://pag.csail.mit.edu/continuoustesting</a><br />
      Michael Ernst and David Saff<br />
      MIT</li>

    <li> 
    Relo - Relationship based Exploration - <a href="http://relo.csail.mit.edu/">http://relo.csail.mit.edu/</a><br />
      Vineet Sinha<br />
      MIT CSAIL</li>
    <li>
    SHriMP (Simple Hierarchical Multi-Perspective) 
      Plugins - <a href="http://www.thechiselgroup.org/shrimp" target="_blank">http://www.thechiselgroup.org/shrimp</a> 
      <br />
      Margaret-Anne Storey, Rob Lintern, Jie Zhang, Xiaomin Wu, CHISEL Group <br />
      University of Victoria</li>


    <li> 
    StreamIt: A language for Streaming 
      Applications - <a href="http://cag.lcs.mit.edu/streamit" target="_blank">http://cag.lcs.mit.edu/streamit</a> 
      <br />
      Saman Amarasinghe, Commit Group, <br />
      MIT Laboratory for Computer Science </li>
    <li>
    Harmonia Research Project: An open, 
      extensible framework for constructing interactive, language-aware programming 
      tools - <a href="http://harmonia.cs.berkeley.edu" target="_blank">http://harmonia.cs.berkeley.edu</a> 
      <br />
      Professor Susan L. Graham<br />
      University of California at Berkeley</li>


    <li> 
    <td width="47%" valign=TOP  >Guard - A Relative Debugger - <a href="http://www.csse.monash.edu.au/~davida/guard/" target="_blank">http://www.csse.monash.edu.au/~davida/guard/ 
      </a><br />
      <a href="http://www.csse.monash.edu.au/" target="_blank">School of Computer 
      Science and Software Engineering</a><br />
      David Abramson<br />
      Monash University </li>
    <li>
    AspectBrowser - Global Visualization 
      of Crosscutting in Eclipse<b> - </b> <a href="http://www-cse.ucsd.edu/users/wgg/Software/AB/" target="_blank">http://www-cse.ucsd.edu/users/wgg/Software/AB/</a> 
      <br />
      William G. Griswold / Jonathan Neddenriep / Timothy Foley<br />
      UC San Diego </li>


    <li> 
     The Multiview Project at Portland 
      State<br />
      <a href="http://multiview.cs.pdx.edu/" target="_blank">http://multiview.cs.pdx.edu/</a><br />
      Andrew Black, Mark Jones, Emerson Murphy-Hill and Philip Quitslund<br />
      Portland State University </li>
    <li>
    Documentation of SWT: Getting Started 
      with Eclipse and the SWT - <a href="http://www.cs.umanitoba.ca/%7Eeclipse/" target="_blank">http://www.cs.umanitoba.ca/~eclipse/</a><br />
      David Scuse, Shantha Ramachandran and Christopher Batty<br />
      University of Manitoba</li>


    <li> 
    FEAT (Feature Analysis and Exploration 
      Tool) - <a href="http://www.cs.ubc.ca/labs/spl/projects/feat" target="_blank">http://www.cs.ubc.ca/labs/spl/projects/feat</a><br />
      <a href="http://www.cs.ubc.ca/labs/spl/" target="_blank">The Software Practices 
      Lab</a>, <a href="http://www.cs.ubc.ca/" target="_blank">Department of Computer 
      Science</a><br />
      Martin Robillard and Gail Murphy<br />
      University of British Columbia</li>
    <li>
    ArchJava IDE -<a href="http://www.archjava.org" target="_blank"> 
      http://www.archjava.org</a><br />
      Jonathan Aldrich<br />
      University of Washington</li>


    <li> 
    Hipikat - (Group Memory for Evolution) 
      - <a href="http://www.cs.ubc.ca/labs/spl/projects/hipikat.html" target="_blank">http://www.cs.ubc.ca/labs/spl/projects/hipikat.html</a> 
      <br />
      Davor Cubranic and Gail Murphy<br />
      University of British Columbia</li>

</ul>
 
<h3>Europe and Asia Pacific</h3>

     <ul class="midlist">

    <li>
    Obasco (Object, Aspect, Components) 
      - <a href="http://www.emn.fr/x-info/obasco" target="_blank">http://www.emn.fr/x-info/obasco</a>
       (See <a href="http://www.yann-gael.gueheneuc.net/Work/Research/PatternsBox/Introduction/" target="_blank">PatternsBox</a> 
      and <a href="http://www.yann-gael.gueheneuc.net/Work/Research/Introduction/">Ptidej</a>)<br />
      <a href="http://www.emn.fr/recherche/recherche02.html" target="
_blank">Computer Science department</a> <br />
      <a href="http://www.emn.fr/noflash.html" target="_blank">&Eacute;cole des 
      Mines de Nantes</a> and <a href="http://www.irisa.fr/obasco/Fichesprojet.htm" target="_blank">INRIA</a> 
      (IRISA) </li>
	<li>
    JOpera - Process Support for more than 
      Web services - <a href="http://www.jopera.org" target="_blank">http://www.jopera.org</a><br />
      Cesare Pautasso, Dept. of Computer Science<br />
      Swiss Federal Institute of Technology, (ETH), Zurich</li>


    <li>
    Labelled Transition System Analyser 
      (LTSA) with BPEL4WS Verification and Validation - <a href="http://www.doc.ic.ac.uk/ltsa" target="_blank">http://www.doc.ic.ac.uk/ltsa</a><br />
      Howard Foster, Jeff Magee, Distributed Software Engineering Group<br />
      Imperial College London <br />
    </li>
	<li>
    IRCE - A Requirement Development Environment 
      in Eclipse - <a href="http://circe.di.unipi.it/eclipse/index.html" target="_blank">http://circe.di.unipi.it/eclipse/index.html</a><br />
      Vincenzo Ambriola, Vincenzo Gervasi<br />
      University of Pisa</li>


    <li>
    ATL - ATLAS Transformation Language 
      for Eclipse/EMF - <a href="http://www.sciences.univ-nantes.fr/lina/atl/activities/eclipse/" target="_blank">http://www.sciences.univ-nantes.fr/lina/atl/activities/eclipse/</a><br />
      Jean 
      B&eacute;zivin, Patrick Valduriez, Fr&eacute;d&eacute;ric Jouault, Peter 
      Rosenthal, <a href="http://www.sciences.univ-nantes.fr/lina/atl/" target="_blank">Atlas Research Group</a><br />
      INRIA, LINA Nantes, France </li>
	<li>
    JAsCo Aspect Oriented Programming Language 
      - <a href="http://ssel.vub.ac.be/jasco/" target="_blank">http://ssel.vub.ac.be/jasco/</a><br />
      Wim Vanderperren and Davy Suv&eacute;e, <a href="http://ssel.vub.ac.be/" target="_blank"> 
      System And Software Engineering Lab</a> (SSEL), <br />
      Department of (Applied) Computer Science (Faculty of Sciences) <br />
      <a href="http://www.vub.ac.be/" target="_blank">Vrije Universiteit Brussel</a> 
      (VUB) </li>


    <li>
    TDE - Test-Driven Education project 
      - <a href="http://softeng.polito.it/torchiano/TDE/" target="_blank">http://softeng.polito.it/torchiano/TDE/</a> 
      <a href="http://softeng.polito.it/torchiano/" target="_blank"><br />
      Marco Torchiano</a>, <a href="http://softeng.polito.it/morisio/" target="_blank">Maurizio 
      Morisio</a><br />
      <a href="http://www.polito.it/ricerca/dipartimenti/dauin/index.en.html" target="_blank">Dept. 
      of Control and Computer Engineering</a><br />
      <a href="http://www.polito.it/index.en.html" target="_blank">Politecnico 
      di Torino</a> </li>
	<li>
    CoCompose2: A Framework for Context-Driven 
      Model Refinement - <a href="http://ssel.vub.ac.be/cocompose/cocompose2.php" target="_blank">http://ssel.vub.ac.be/cocompose/cocompose2.php</a> 
      <br />
      Dennis Wagelaar, System And Software Engineering Lab (SSEL)<br />
      Vrije Universiteit Brussel (VUB) </li>


    <li>
    Automated Debugging in Eclipse - <a href="http://www.st.cs.uni-sb.de/eclipse/" target="_blank">http://www.st.cs.uni-sb.de/eclipse/</a> 
      <br />
      Andreas Zeller / Martin Burger / Philipp Bouillon / Tom Zimmermann<br />
      Saarland University </li>

</ul>
</div></div>

<?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);
?>

      