<?php 
  include '../includes/variables.php';

  // Define page title
  $pageTitle = 'Eclipse Che | EclipseCon NA 2016';
  // Define body class
  $bodyClass = 'eclipsecon2016';

  include '../includes/head.php';
  include '../includes/header.php';
?>


<div class="jumbotron">
  <div class="container-fluid">
    <img src="../images/eclipsecon-logo@2x.png" alt="EclipseCon NA 2016">
    <h1>Experience Eclipse Che</h1>
    <h3>Eclipse Che is the next-generation Eclipse IDE. Come join developers, project committers and the open source community embrace using cloud development to create a better agile experience.</h3>

    <h3>We invite you to <a href="https://www.eclipsecon.org/na2016/registration">EclipseCon NA</a> on March 7-10, 2016 to learn from experts and to see the future of IDEs and understanding the impact that portable workspaces will have for your projects. This is your opportunity to learn all about Eclipse Che, to meet the experts, and to experience the future of IDEs.</h3>

    <h3>Join Us at <a href="https://www.eclipsecon.org/na2016/registration" target="_blank">EclipseCon NA 2016</a></h3>
  </div> <!-- .container-fluid -->
</div> <!-- .jumbotron -->


<hr class="gray">
<div class="container-fluid content meet-experts">
  <h2>Meet the Experts</h2>

  <div class="row">
    <div class="col-sm-4">
      <img src="../images/eclipsecon-tylerjewell@2x.jpg" alt="Tyler Jewell" class="img-responsive">
      <h3>Tyler Jewell</h3>
      <p>Eclipse Che Project Lead <br>and Founder Codenvy</p>
    </div>
    
    <div class="col-sm-4">
      <img src="../images/eclipsecon-stevenlemeur@2x.jpg" alt="Tyler Jewell" class="img-responsive">
      <h3>Stevan Le Meur</h3>
      <p>Eclipse Che Committer <br>and Product Manager</p>
    </div>
    
    <div class="col-sm-4">
      <img src="../images/eclipsecon-florentbenoit@2x.jpg" alt="Tyler Jewell" class="img-responsive">
      <h3>Florent Benoit</h3>
      <p>Eclipse Che Committer <br>and Technical Expert</p>
    </div>  
  </div> <!-- .row -->
</div> <!-- .meet-experts -->


<div class="keynote">
  <div class="container-fluid content">
    <h2>Conference Keynote</h2>

    <h3>Eclipse: The Evolution and Future of IDEs</h3>
    <p>Eclipse Che Project Lead, Tyler Jewell, will discuss the evolution of the developer workspace and how the next-generation of IDEs is taking form. He will discuss the impact of Eclipse Che, Eclipse Orion, and ECD as platforms for building a better agile experience. The Eclipse Foundation is committed to being the leader in developer tools and we’ll share how major ecosystem vendors like IBM, SAP, Microsoft, and Red Hat are establishing this vision together. <a href="https://www.eclipsecon.org/na2016/session/eclipse-evolution-and-future-ides" target="_blank"></a>Read More</p>
  
    <div class="separator"></div>

    <h2>Che Talks</h2>
    <div class="row">
      <div class="col-sm-6">
        <h3>Code in the cloud with Eclipse Che and Docker</h3>
        <p>Eclipse Che Committer Stevan Le Meur will show you how to setup a cloud workspace, and create environments using Docker. <a href="https://www.eclipsecon.org/na2016/session/code-cloud-eclipse-che-and-docker" target="_blank">Read More</a></p>
      </div>

      <div class="col-sm-6">
        <h3>An Introduction to Eclipse Che: A Next Generation Java IDE</h3>
        <p>Eclipse Che Project Lead Tyler Jewell will show you how a cloud IDE can perform as well as a desktop IDE when developing Java projects. <a href="https://www.eclipsecon.org/na2016/session/introduction-eclipse-che-next-generation-java-ide" target="_blank">Read More</a></p>
      </div>
    </div> <!-- .row -->

    <div class="row">
      <div class="col-sm-6">
        <h3>Extending Eclipse Che to build custom cloud IDEs</h3>
        <p>Eclipse Che Committer Florent Benoit will show you how to customize Che by adding or developing new plug-ins or set of extensions. <a href="https://www.eclipsecon.org/na2016/session/extending-eclipse-che-build-custom-cloud-ides" target="_blank">Read More</a></p>
      </div>

      <div class="col-sm-6">
        <h3>Pair Programming with Che, Eclipse IDE, Flux, Orion and Docker</h3>
        <p>Eclipse Che Committer Sun Tan will show a live pair programming experience between multiple IDEs hosted on the desktop and in the cloud at the same time. <a href="https://www.eclipsecon.org/na2016/session/pair-programming-cloud-eclipse-che-eclipse-flux-orion-eclipse-ide-and-docker" target="_blank">Read More</a></p>
      </div>
    </div> <!-- .row -->
  </div> <!-- .container-fluid -->
</div> <!-- .keynote -->


<hr class="gray">
<div class="cloud">
  <div class="container-fluid content">
    <h2>Eclipse Cloud Development</h2>
    <p>Eclipse Che is one part of Eclipse's vision for cloud development. The Eclipse Cloud Development top-level project includes critical projects including Orion, Dirigible, and Flux. </p>

    <h3>Sessions</h3>
    <ul>
      <li><a href="https://www.eclipsecon.org/na2016/session/cloud-development-dirigible-eyes-java-saurus" target="_blank">Cloud Development with Dirigible in the Eyes of a Java-saurus by Vladimir Pavlov, SAP</a></li>
      <li><a href="https://www.eclipsecon.org/na2016/session/composing-docker-based-development-environment" target="_blank">Compose a Docker-Based Development Environment by Simon Kaegi, IBM</a></li>
      <li><a href="https://www.eclipsecon.org/na2016/session/docker-vagrant-and-kubernetes-walks-eclipsed-bar" target="_blank">Docker, Vagrant, and Kubernetes Walk Into an Eclipse’d Bar by Max Anderson, Red Hat</a></li>
      <li><a href="https://www.eclipsecon.org/na2016/session/eclipse-orion-fast-functional-and-your-fingertips" target="_blank">Eclipse Orion: Fast, Functional and at Your Fingertips by Steve Northover, IBM</a></li>
    </ul>
  </div> <!-- .container-fluid -->
</div> <!-- .cloud -->
<hr class="gray">



<div class="container-fluid content join-us">
  <h2>Don't miss EclipseCon NA 2016</h2>
  <p>EclipseCon is where contributors, adopters, extenders, service providers, consumers, and business and research organizations gather to share their expertise and learn from each other.  Come to this year's conference and discover the latest trends and innovations with the Eclipse technologies.</p>
  <a href="https://www.eclipsecon.org/na2016/registration" target="_blank">Join Us</a>
</div> <!-- .join-us -->


<div class="twitter-share">
  <h6><i class="fa fa-twitter"></i> Was this page helpful? <a href="https://twitter.com/share">Share it on Twitter</a></h6>
</div>



<?php include '../includes/footer.php'; ?>
