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

      