<?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, Unified Information Access Architecture, 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>Mailing Lists</h1>
		<p>
		    Mailing lists are a primary communication channel with SMILA development team. 
		    If you are interested in getting announcements for new versions, support, 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 mailing list for announcements of new SMILA versions and events. Besides getting announcements you can also
                     post your questions here and get support from us. 
                    <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 mailing list for developer discussion. It's a place, where SMILA committers, contributors 
                    and integrators discuss all topics related to 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>
	  
EOHTML;

	include('rightColumn.php');
	$html .= $rightColumn;

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