<?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("../_projectCommon.php");    # All on the same line to unclutter the user's desktop'

$pageTitle 		= "Recruiting Eclipse Skills";


ob_start();
?>
    <div id="maincontent">
	<div id="midcolumn">

<h1><?=$pageTitle;?></h1>

<p>
The Eclipse Foundation hosts a number of newsgroups, one of which is devoted to recruiting called <a href="http://www.eclipse.org/newsportal/thread.php?group=eclipse.employment">eclipse.employment</a>.
Before you can post to the newsgroup, you will need to
<a href="http://www.eclipse.org/newsgroups/register.php">get an account</a>
(this is simple and
helps greatly reduce the SPAM on our newsgroups).
Indications from people who recruit on the newsgroup is that they
receive a lot of responses from their posts, but you will also attract quite a bit
of noise/junk emails so be sure to use a temporary email address or alias.
</p>

<p>
Another popular method of attracting Eclipse talent is if anyone in your company blogs
regularly about Eclipse related stuff in any way, they should do a short blog about
your openings.
</p>

<p>
Consider running a <a href="http://adwords.google.com/support/bin/topic.py?topic=342">Site targeted Google Adwords campaign</a>
on <a href="http://marketplace.eclipse.org">Eclipse Marketplace</a> which hosts
Google ads on the bottom of many pages.  We do not have the data to support the eficacy of a campaign on Marketplace, but
it does receive over 10,000 unique visits per business day.
</p>

<p>
Job aggregators like <a href="http://www.indeed.com">Indeed</a> are also a possibility.
</p>

</div> <!-- midcolumn -->
</div> <!-- maincontent -->

<?php
	# Paste your HTML content between the EOHTML markers!
	$html = ob_get_contents();
	ob_end_clean();

	# Generate the web page
	$App->generatePage(NULL, $Menu, $Nav, $pageAuthor, $pageKeywords, $pageTitle, $html);
?>
