<?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 		= "SMILA - Mailing lists";
	$pageKeywords	= "SMILA, unstructured information management, information logistics, semantic web, framework, platform, eclipse";
	$pageAuthor		= "Igor Novakovic";
		
	# Paste your HTML content between the EOHTML markers!	
	$html = <<<EOHTML

	<div id="midcolumn">
		<h1>SMILA - SeMantic Information Logistics Architecture</h1>
		<h2>Mailing lists</h2>
		<p>
		    Mailing lists are a primary communication channel with SMILA development team. 
		    If you are interested in getting announcements for new versions, or want to 
		    participate in discussions of development or integration topics, then you 
		    can subscribe to one of the following mailing lists.
		</p>
		<div class="homeitem3col">
			<h3>Mailing Lists</h3>
			<ul>
				<li>
                    <b><a href="https://dev.eclipse.org/mailman/listinfo/smila-user">smila-user@eclipse.org</a></b>
                     - A mail list for announcement of new SMILA versions and events. All announcements will come from development 
                     team, so if you are not SMILA committer, please don't post to this list.
                    <ul>
                    	<li>
							<a href="https://dev.eclipse.org/mailman/listinfo/smila-user">Subscribe/unsubscribe instructions</a>
                    	</li>
                    	<li>
							<a href="http://dev.eclipse.org/mhonarc/lists/smila-user/maillist.html">Mailing list archive</a>
                    	</li>
                    	<li>
							<a href="http://dev.eclipse.org/mhonarc/lists/smila-user/maillist.rss">RSS Feed</a>
                    	</li>
                    </ul>
				</li>
				<li>
                    <b><a href="https://dev.eclipse.org/mailman/listinfo/smila-dev">smila-dev@eclipse.org</a></b>
                     - A mail list for developer discussion. It's a place, where SMILA committers, contributors 
                    and integrators discuss all topics related with project development.
                    <ul>
                    	<li>
							<a href="https://dev.eclipse.org/mailman/listinfo/smila-dev">Subscribe/unsubscribe instructions</a>
                    	</li>
                    	<li>
							<a href="http://dev.eclipse.org/mhonarc/lists/smila-dev/maillist.html">Mailing list archive</a>
                    	</li>
                    	<li>
							<a href="http://dev.eclipse.org/mhonarc/lists/smila-dev/maillist.rss">RSS Feed</a>
                    	</li>
                    </ul>
				</li>
			</ul>
		</div>
	</div>
	  
	<div id="rightcolumn">
    	<div class="sideitem">
       		<h6>Incubation</h6><p>
       		<div align="center">
         		<a href="/projects/what-is-incubation.php">
           		<img align="center" src="/images/egg-incubation.png" border="0"/></a>
       		</div>
     	</div>
	  	<div class="sideitem">
			<h6>Links</h6>
			<ul>
				<li><a href="http://wiki.eclipse.org/SMILA" target="_blank">Project Wiki</a></li>				
				<li><a href="http://www.eclipse.org/proposals/eilf/SMILA_Creation_Review.pdf" target="_blank">Creation Review</a></li>
				<li><a href="http://www.eclipse.org/proposals/eilf" target="_blank">Project proposal</a></li>
			</ul>
		</div>
	</div>	
	
EOHTML;


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