<html lang="en">
  <head>
    <title>Apache DRAT</title>
    <!-- Required meta tags -->
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">

    <!-- Bootstrap CSS -->
    <link rel="stylesheet" href="css/bootstrap.min.css"/>
    <link rel="stylesheet" href="css/custom.css"/>
    <link href="https://fonts.googleapis.com/css?family=Lato" rel="stylesheet">
    <link rel="stylesheet" href="css/font-awesome.min.css">
  </head>
  <body>
    <header>
      <div class="container-fluid">

        <div class="row">
          <div class="col-sm-12">
            <ul class="nav justify-content-end">
              <li class="nav-item">
                <a class="nav-link active" href="#problem">The Problem</a>
              </li>
              <li class="nav-item">
                <a class="nav-link" href="#drat">Apache DRAT</a>
              </li>
              <li class="nav-item">
                <a class="nav-link" href="#resources">Resources</a>
              </li>
              <li class="nav-item">
                <a class="nav-link" href="#contributors">Contributors</a>
              </li>
            </ul>
          </div>
        </div>

        <div class="row  align-items-center">
          <div class="offset-md-1 col-md-5">
            <img src="img/header.png" width="100%">
          </div>
          <div class="offset-md-1 col-md-5 white-text ">
            <h4 class="apache">Apache</h4>
            <h1 class="drat">DRAT<sup class="superscript">TM</sup></h1>
            <p>An unobstructive, scalable approach<br/>
              to large scale Software License Analysis
          </div>
        </div>

       </div> 

   </header>

  <div class="row">

    <section id="problem" class="container section-space">
      <div class="row align-items-center">
        <div class="col-md-12 breathing-space">
          <h2>THE PROBLEM</h2>
          <hr/>
        </div>
        <div class="col-md-4">
          <img src="img/the-problem.png" />
        </div>
        <div class="col-md-8">
          <div class="row breathing-space">
            <div class="col-sm-1">
              <img src="img/icon-1.png"/>
            </div>
            <div class="offset-md-1 col-sm-10">
              <h4>INCREASING OPEN SOURCE PROJECTS</h4>
              <p class="grey-text">With increasing number of open source projects across many domains, the license of open source software becomes critical to grant everyone legally appropriate permission to freely use, modify and distribute open source software.</p>
            </div>
          </div>
          <div class="row breathing-space">
            <div class="col-sm-1">
              <img src="img/icon-2.png"/>
            </div>
            <div class="offset-md-1 col-sm-10">
              <h4>INCREASING LICENSE ISSUERS</h4>
              <p class="grey-text">With more than 60 licenses such as Berkeley Software Distribution(BSD), MIT License, the Apache License, and so on, approved by, Open Source Initiative (OSI) for complying with open source definition, there exists differences among them.</p>
            </div>
          </div>
          <div class="row breathing-space">
            <div class="col-sm-1">
              <img src="img/icon-3.png"/>
            </div>
            <div class="offset-md-1 col-sm-10">
              <h4>NEED FOR AUTOMATED VERIFICATION</h4>
              <p class="grey-text">With increasing number of open source projects across many domains, the license of open source software becomes critical to grant everyone legally appropriate permission to freely use, modify and distribute open source software.</p>
            </div>
          </div>
        </div>
      </div>
     </section>
     
     <section id="drat" class="container-fluid alternate-lightbg section-space">
       <div class="container text-center ">
          <h2 class="col-sm-12 breathing-space">WHAT IS DRAT?</h2>
          <hr/>
          <p class="col-sm-12 breathing-space">
	  A distributed parallelized ( Map Reduce) wrapper around <a href="https://creadur.apache.org/rat/">APACHE RAT<sup>TM</sup> (Release Audit Tool)</a> that <br/> goes far beyond RAT<sup>TM</sup> by leveraging <a href="http://oodt.apache.org/">Apache OODT<sup>TM</sup></a> to dramatically speed up the process.
          </p>
          <div class="row">
            <div class="col-md-3 breathing-space">
              <i class="fa fa-file-code-o fa-3x fa-color" aria-hidden="true"></i>
              <h4>Scales to large code bases</h4>
	      <p>DRAT is a Map Reduce version of RAT using <a href="http://tika.apache.org/">Apache Tika</a> to automatically sort and classify the code base files</p>
            </div>
            <div class="offset-md-1 col-md-3 breathing-space">
              <i class="fa fa-object-group fa-3x fa-color" aria-hidden="true"></i>
              <h4>Mapreduce for the win!</h4>
	      <p>DRAT uses <a href="http://oodt.apache.org/">Apache OODT</a> to index metadata and Tika information about those code files into <a href="https://lucene.apache.org/solr/">Apache Solr</a> and OODT to produce a Map Reduce workflow</p>
            </div>
            <div class="offset-md-1 col-md-3 breathing-space">
              <i class="fa fa-tasks fa-3x fa-color" aria-hidden="true"></i>
              <h4>Incremental output</h4>
              <p>DRAT runs RAT incrementally on k-sized chunks of same-MIME-typed files (detected by Tika) and then producing incremental, per type logs, and then aggregating and reducing them into a combined log at the end.</p>
            </div>
          </div>
       </div>
     </section> 

     <section id="resources" class="container-fluid section-space">
        <div class="container">
          <h2 class="col-sm-12 breathing-space">RESOURCES</h2>
          <hr/>

          <div class="row breathing-space">

            <div class="col">
              <div class="row">
                <div class="col-sm-1">
                  <img src="img/code.png"/>
                </div>
                <div class="offset-sm-1 col-sm-9">
                  <h6>GITHUB</h6>
                  <p>Learn more about the project, people involved, how it works and ways to contribute on github.</p>
		  <a class="btn btn-outline-danger circular-border" href="https://github.com/apache/drat">VIEW PROJECT</a>
			</div>
              </div>
            </div>

            <div class="col">
              <div class="row">
                <div class="col-sm-1">
                  <img src="img/publication.png"/>
                </div>
                <div class="offset-sm-1 col-sm-9">
                  <h6>CONTRIBUTE</h6>
                  <p>You can follow and contribute to ongoing research work on Apache DRAT<sup>TM</sup>.</p>
                  <a class="btn btn-outline-danger circular-border" href="mailto:dev-subscribe@drat.apache.org?subject=Subscribe">SUBSCRIBE</a>
                </div>
              </div>
            </div>
          </div>

        </div>
     </section> 


     <section id="contributors" class="container-fluid alternate-darkbg white-text section-space">
       <div class="container text-center breathing-space">
          <h2 class="col-sm-12 breathing-space ">Project Management Committee (PMC)</h2>
          <hr/>
          <div class="row names">

          </div>
       </div>
     </section> 

     <footer class="container-fluid footer-bg section-space">
        <div class="container">
            <div class="row">
                <div class="col-md-5">
                  <div class="row">
                    <div class="col-md-4 right-align">
                        <a href="http://apache.org" target="_blank">
                            <img src="img/apache-logo.png" width="70%">
                        </a>
                    </div>
                    <div class="col-md-8">
                        <ul style="list-style-type: none;">
                            <li><a href="http://apache.org" target="_blank"><h4 class="white-text">Apache</h4></a>
                            <li><a class="white-text" href="https://apache.org/" target="_blank">Apache Server Foundation</a>
                            </li>
                            <li><a class="white-text" href="https://apache.org/foundation/thanks" target="_blank">Thanks</a></li>
                            <li><a class="white-text" href="https://apache.org/foundation/sponsorship" target="_blank">Become
                                a Sponsor</a></li>
                            <li><a class="white-text" href="https://apache.org/security/" target="_blank">Security</a></li>
                        </ul>
                    </div>
                  </div>
                </div>
                <div class="col-md-7">
			<a href="http://www.apache.org/events/current-event.html" style="float:right; /*! border-left: 250px; */">
			    <img src="https://www.apache.org/events/current-event-125x125.png">
			</a>
			<p class="white-text">Copyright 2017 The Apache Software Foundation. Licensed under the <a href="https://www.apache.org/licenses/LICENSE-2.0.html">Apache License v2.0</a>.</p>
			<p class="grey-text">Apache DRAT<sup>TM</sup>, DRAT<sup>TM</sup>, Apache, Apache DRAT<sup>TM</sup> Logo are trademarks of the Apache Software Foundation.</p>
                </div>
            </div>
        </div>
    </footer>


  </div>

    <!-- Optional JavaScript -->
    <!-- jQuery first, then Popper.js, then Bootstrap JS -->
    <script
      src="https://code.jquery.com/jquery-3.3.1.min.js"
      integrity="sha256-FgpCb/KJQlLNfOu91ta32o/NMZxltwRo8QtmkMRdAu8="
      crossorigin="anonymous"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.3/umd/popper.min.js" integrity="sha384-vFJXuSJphROIrBnz7yo7oB41mKfc8JzQZiCq4NCceLEaO4IHwicKwpJf9c9IpFgh" crossorigin="anonymous"></script>
    <script src="js/bootstrap.min.js"></script>

    <script type="text/javascript">
      var drat = {};
          drat = {
                            "display_name": "DRAT",
                            "site": "http://drat.apache.org/",
                            "description": "large scale code license analysis, auditing and reporting",
                            "mail_list": "drat",
                            "established": "09/2017",
                            "report": [
                              "Next month: missing in February",
                              "February",
                              "May",
                              "August",
                              "November"
                            ],
                            "chair": {
                              "chrismattmann": {
                                "name": "Chris Mattmann"
                              }
                            },
                            "roster": {
                              "brianf": {
                                "name": "Brian Fox",
                                "date": "2017-09-20"
                              },
                              "francus": {
                                "name": "Steven Francus",
                                "date": "2017-09-20"
                              },
                              "MJJoyce": {
                                "name": "Michael James Joyce",
                                "date": "2017-09-20"
                              },
                              "karanjeets": {
                                "name": "Karanjeet Singh",
                                "date": "2017-09-20"
                              },
                              "lewismc": {
                                "name": "Lewis John McGibbney",
                                "date": "2017-09-20"
                              },
                              "buggtb": {
                                "name": "Tom Barber",
                                "date": "2017-09-20"
                              },
                              "chrismattmann ": {
                                "name": "Chris Mattmann",
                                "date": "2017-09-20"
                              },
						      "ottlinger": {
								"name": "Philipp Ottlinger",
								"date": "2018-02-27"
							  },
                              "darth-pr": {
                                "name": "Paul Ramirez",
                                "date": "2017-09-20"
                              },
                              "tbpalsulich": {
                                "name": "Tyler Palsulich",
                                "date": "2017-09-20"
                              },
                              "wmburke": {
                                "name": "Wayne Burke",
                                "date": "2017-09-20"
                              }
                            },
                            "pmc": true
                          };
            for( var username in drat.roster){
              $(".names").append('<div class="col-md-3 breathing-space"><a href="https://github.com/' + username + '"><img src="https://avatars.githubusercontent.com/' + username +'" width="50%"/><h5>' + drat.roster[username]["name"] + '</h5></a></div>');
            }
      
    </script>
  </body>
</html>
