<!-- id is the same as the file name without the extension
     type is one of "committer" or "add-in-provider" -->
<boardmember id="papaioannou" type="add-in-provider">

	<name>Farah Papaioannou</name>

	<title>President and Co-founder, Edgeworx</title>

	<!-- Name of the file containing the image of the candidate; location relative to this file.  -->
	<image>papaioannou.jpg</image>

	<!-- eMail address will be modified before it is included on a webpage so that robots will not harvest it. -->
	<email>farah@edgeworx.io</email>

	<phone>1-909-971-7150</phone>

	<!-- How do we contact you? e.g. postal address -->
	<contact>
		1745 Hicks Ave
		San Jose, CA 95125
	</contact>

	<!-- What do you do with eclipse? -->
	<eclipse_affiliation><![CDATA[
		Eclipse Edge Working Group Organizer<br>
		Eclipse ioFog Committer<br>
		Eclipse IoT Working Group Member
	]]></eclipse_affiliation>

	<!-- Feel free to include html tags and what-not between the CDATA tags. -->
	<vision>
		<![CDATA[
			<p>As an advocate of open-source technology in the Edge computing and IoT industries, I have been working to elevate the stature and expand the reach of the Eclipse Foundation and will continue to do so if elected. While there is already widespread respect and appreciation for the Eclipse Foundation in industry, my job will not be done until every relevant company is a member and Eclipse is the primary source of open-source projects in the minds of developers. If elected to the Board of Directors, I believe I will be able to make a greater impact and will focus on advancement through the following efforts:</p>			
			</p>
			<p><strong>Industry Leadership</strong><br>
			Edge Computing is rapidly becoming one of the key mega trends in technology. There is a great opportunity for the Eclipse Foundation to establish its position as a leader in cutting-edge software by owning this forward-facing and growing technology space. We can drive thought leadership and projects in Edge (like the CNCF has for Cloud Native, Apache for Big Data and Linux for infrastructure). We have already taken a huge step forward in holding the most exciting projects in Edge/IOT. As a part of this initiative, I have been organizing the new Eclipse Edge Working Group and recruited a large number of new marquee companies to Eclipse. As a member of the Board of Directors, I will be able to help guide the Foundation to optimize its expansion into Edge computing and IoT. Using the creation and organization of the new Eclipse Edge Working Group as a model, I hope to identify a pattern for expansion that can be used to successfully address other emerging technologies in the future.
			</p>
			<p><strong>Developers</strong><br>
			Developers are the life blood of all organizations today because companies now succeed or fail based on the quality of their technology. Developers have a unique and growing voice in companies and are increasingly turning to the Open Source to solve problems, understanding vendor lock-in is not the way of the future. The Eclipse Foundation has pioneered a path forwad by focusing on developers and the developer expreience. It is why Edgeworx chose to bring our project ioFog to Eclipse over anyhwere else. The developer centric message is resonating in recruiting other techonologies to Eclipse and we should proudly own that mantle - Eclipse knows developers, developers turn to Eclipse.
			</p>
			<p><strong>Awareness & Adoption</strong><br>
			I have talked to numerous companies about their use of open-source software and have noted how frequently their understanding of the Eclipse Foundation was either non-existent or grossly inaccurate. Many of these companies were only aware of the Eclipse IDE, even though they had immediate needs for other Eclipse projects or were already using Eclipse projects (e.g MQTT) without even knowing it was from Eclipse. As a recovering VC turned entrepreneur, I spent my past life focused on finding early stage technologies, investing and growing their markets. I plan to bring this stragic focus to Eclipse, and have already begun recruiting new projects to expand on the existing great foundation of technologies already at Eclipse. I believe increasing awareness of our industry leadership and focuse on developers will lead to more projects choosing Eclipse as a home. I believe that increased awareness of the Eclipse Foundation in industry will help fulfill many of the Foundation's goals. If elected, I will be able to serve as a direct channel between the organization and the companies to help grow awareness and adoption.
			</p>
			<p><strong>Membership</strong><br>
			Many companies that I work with as partners, vendors, and customers are good candidates for first-time Eclipse Foundation membership but are not aware of the benefits of membership and the importance of supporting the organization. I see opportunities to expand membership in 2019 and will work to find the most effective methods for achieving significant growth.
			</p>
		]]>
	</vision>

	<!-- Tell us a little bit about yourself. -->
	<bio>
	Farah Papaioannou is the President and Co-Founder of Edgeworx, an Edge computing company pionnering open-source 
	universal edge compute platform with Eclipse ioFog. She has over 15 years of experience in the Enterprise 
	software market, both as an Investor and an Operator. Her career has spanned both strategic operational 
	roles in G100 businesses and early stage investing in Silicon Valley and DC venture capital firms. Farah 
	holds three degrees from Stanford University. She graduated with a Bachelors of Science with Honors in 
	Computer Science, a Masters in Communications and Masters in Management Science and Engineering. Farah and her 
	husband, Todd, have 3 kids including a newborn. She loves skiing, traveling, and getting a (rare) full night of sleep!
	</bio>

	<!-- Who do you work for? -->
	<affiliation>Edgeworx</affiliation>

</boardmember>
