<?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, big data, bigdata";
	$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);
?>
