<?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 - Newsgroup";
	$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>Newsgroup</h2>
		<p>
		    <b>The SMILA newsgroup is the main forum for user questions and support.</b>
		</p>
		<p>
			Chances are your question has already been answered in the newsgroup. Therefore, before posting a 
			question to the newsgroup, please <a href="http://dev.eclipse.org/newslists/news.eclipse.rt.smila/maillist.html">
			browse</a> or <a href="http://www.eclipse.org/search/search.cgi?cmd=Search%21&form=extended&wf=574a74&ps=10&m=all&t=5&ul=%2Fnewslists%2Fnews.eclipse.rt.smila&wm=wrd&t=News&t=Mail">  
			search</a> the newsgroup archives online. To post a question, you have to <a href="http://www.eclipse.org/newsgroups/register.php">
			require a password</a> first.
		</p>
		<p>
			Frequently asked questions in the newsgroup will ultimately end up in the 
			<a href="http://wiki.eclipse.org/SMILA/FAQ">FAQ</a>. Feel free to contribute!
		</p>
		<p>
			Although eclipse.org offers a <a href="http://www.eclipse.org/newsportal/thread.php?group=eclipse.rt.smila">
			web user interface for news</a>, we suggest you to use a newreader, such as 
			<a href="http://www.mozilla.org/products/thunderbird/" target="_out">Mozilla Thunderbird</a> or 
			MS Outlook. 
		</p>

		<div class="homeitem3col">
			<h3>Newsgroup</h3>
			<ul>
               	<li>
					<a href="http://www.eclipse.org/search/search.cgi?cmd=Search%21&form=extended&wf=574a74&ps=10&m=all&t=5&ul=%2Fnewslists%2Fnews.eclipse.rt.smila&wm=wrd&t=News&t=Mail">
					Newsgroup search</a>
               	</li>
               	<li>
					<a href="http://www.eclipse.org/newsportal/thread.php?group=eclipse.rt.smila">
					Newsgroup web user interface</a>  
               	</li>
               	<li>
					<a href="http://dev.eclipse.org/newslists/news.eclipse.rt.smila/maillist.html">
					Newsgroup archive</a>
               	</li>
               	<li>
					<a href="http://dev.eclipse.org/newslists/news.eclipse.technology.eilf/maillist.html">
					Newsgroup OLD archive</a> (Old news during the proposal phase.)
               	</li>
               	<li>
					<a href="news://news.eclipse.org/eclipse.rt.smila">
					NNTP (news://)</a>
                </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);
?>
