<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
               "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<!--
  Licensed to the Apache Software Foundation (ASF) under one
  or more contributor license agreements.  See the NOTICE file
  distributed with this work for additional information
  regarding copyright ownership.  The ASF licenses this file
  to you under the Apache License, Version 2.0 (the
  "License"); you may not use this file except in compliance
  with the License.  You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

  Unless required by applicable law or agreed to in writing,
  software distributed under the License is distributed on an
  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
  KIND, either express or implied.  See the License for the
  specific language governing permissions and limitations
  under the License. 
-->
<html xmlns="http://www.w3.org/1999/xhtml">
 <head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  <link rel="stylesheet" href="../style/bootstrap-1-3-0-min.css" type="text/css" />
  <link rel="stylesheet" href="../style/style.css" type="text/css" />
  <script src="https://www.apachecon.com/event-images/snippet.js"></script>
        <title>
      Fineract CN Codebase Intellectual Property (IP) Clearance Status
     - Apache Incubator</title>
  
 </head>
 <body>
 <div class="container">
  <div class="row"><div class="span6"><a href="https://www.apache.org/"><img src="http://www.apache.org/img/asf_logo.png" alt="The Apache Software Foundation" border="0" style="margin-top: 2px" height="88"/></a></div>
<div class="span7"><a href="/"><img src="https://incubator.apache.org/images/incubator_feather_egg_logo_sm.png" alt="The Apache Software Foundation Incubator" border="0" style="margin-top: 2px" height="88"/></a></div>
<div class="span2"><a href="https://www.apache.org/foundation/contributing.html"><img src="https://www.apache.org/images/SupportApache-small.png" height="100" width="100"/></a></div>
</div>
  <div class="row"><div class="span16"><hr noshade="noshade" size="1"/></div></div>
  <div class="row">
   <div class="span4">
    <form action="http://www.google.com/search" method="get">
     <input value="incubator.apache.org" name="sitesearch" type="hidden"/>
     <input size="20" name="q" id="query" type="text" value="search..."
      onclick="if(this.value == 'search...') {this.value = ''}"/>
     <input name="Search" value="Go" type="submit"/>
    </form>
          <div class="menuheader">General</div>
    <menu compact="compact">
          <li><a href="../index.html">Welcome</a></li> 
          <li><a href="../cookbook/">Incubator Cookbook</a></li> 
          <li><a href="../policy/incubation.html">Incubation Policy</a></li> 
          <li><a href="../guides/roles_and_responsibilities.html">Roles and Responsibilities</a></li> 
          <li><a href="../faq.html">General FAQ</a></li> 
          <li><a href="http://wiki.apache.org/incubator">Incubator Wiki</a></li> 
          <li><a href="../whoweare.html">Who We Are</a></li> 
            </menu>
      <div class="menuheader">Status</div>
    <menu compact="compact">
          <li><a href="../projects">Project List</a></li> 
          <li><a href="../clutch">Clutch Report</a></li> 
          <li><a href="../ip-clearance">IP Clearance</a></li> 
            </menu>
      <div class="menuheader">Entry Guides</div>
    <menu compact="compact">
          <li><a href="../guides/proposal.html">Proposal Guide</a></li> 
            </menu>
      <div class="menuheader">Podling Guides</div>
    <menu compact="compact">
          <li><a href="../guides/committer.html">Podling Committers</a></li> 
          <li><a href="../guides/ppmc.html">Podling PMC (PPMC)</a></li> 
          <li><a href="../guides/mentor.html">Podling Mentor</a></li> 
          <li><a href="../guides/releasemanagement.html">Podling Releases</a></li> 
          <li><a href="../guides/branding.html">Podling Branding/Publicity</a></li> 
          <li><a href="../guides/sites.html">Podling Websites</a></li> 
          <li><a href="../guides/graduation.html">Graduation</a></li> 
          <li><a href="../guides/retirement.html">Retirement</a></li> 
            </menu>
      <div class="menuheader">Other Guides</div>
    <menu compact="compact">
          <li><a href="../guides/participation.html">Participation</a></li> 
          <li><a href="../faq.html">General FAQ</a></li> 
          <li><a href="../guides/chair.html">IPMC Chair</a></li> 
          <li><a href="../guides/lists.html">Mailing Lists</a></li> 
          <li><a href="../guides/website.html">Incubator Website</a></li> 
            </menu>
      <div class="menuheader">ASF</div>
    <menu compact="compact">
          <li><a href="http://www.apache.org/foundation/how-it-works.html">How Apache Works</a></li> 
          <li><a href="http://www.apache.org/dev/">Developer Documentation</a></li> 
          <li><a href="http://www.apache.org/foundation/">Foundation</a></li> 
          <li><a href="http://www.apache.org/foundation/sponsorship.html">Sponsor Apache</a></li> 
          <li><a href="http://www.apache.org/foundation/thanks.html">Thanks</a></li> 
            </menu>
    <div id="menuheader">
      <a class="acevent" data-format="square" data-width="135" data-mode="light" data-event="random"></a>
    </div>
   </div>
   
   <div class="span12">
            <h2 id='Fineract+CN+Codebase+Intellectual+Property+%28IP%29+Clearance+Status'><img src="../images/redarrow.gif" />
        Fineract CN Codebase Intellectual Property (IP) Clearance Status
      </h2>
<div class="section-content">
</div>
        <h2 id='Description'><img src="../images/redarrow.gif" />Description</h2>
<div class="section-content">
<p>
        Fineract CN is a cloud-native, microservice-based rewrite of Fineract.  It also includes a
        UI.  The microservices and their libraries and integration tests are Spring-based Java code
        spread across 33 code repositories.  The UI is a single repository containing Angular-based
        JavaScript and Typescript.  There is also a Selenium based test-suite for the UI in its own
        repository.  The code was developed at the Mifos Initiative starting at the beginning of
        2016, and at Kuelap since March 2017.  Kuelap donated the code developed there to the Mifos
        Initiative.  This rearchitecture was originally called Mifos I/O.
      </p>
</div>
        <h2 id='Project+info'><img src="../images/redarrow.gif" />Project info</h2>
<div class="section-content">
<ul>
        <li>The Fineract project will be responsible for managing this code.</li>
      </ul>
<ul>
        <li>New gitbox repos have been created for each repository.</li>
      </ul>
<ul>
        <li>The following people will be managing this contribution:
          <ul>
            <li>Myrle Krantz (Apache Fineract PMC Chair, and former employee of both the Mifos Initiative and Kuelap.)</li>
            <li>Ed Cable (Apache Fineract PMC Member, and CEO of the Mifos Initiative which donated the code.)</li>
          </ul>
        </li>
      </ul>
<p>
        <em>
          Completed tasks are shown by the completion date (YYYY-MM-dd).
        </em>
      </p>
<h3 id='Identify+the+codebase'>Identify the codebase</h3>
<div class="section-content">
<table class="colortable" width="100%">
          <tr>
            <th>date</th>
            <th>item</th>
          </tr>
          <tr>
            <td>2018-04-09</td>
            <td>
              The name Fineract already belongs to Apache.
            </td>
          </tr>
        </table>
<p>
          These repositories were originally under https://github.com/mifosio.  They have been
          deleted there and are now available as a snapshot under https://github.com/mifosio-04-04-2018.
          The repositories and commit ids there are:
          <table>
            <tr>
              <th>repository</th>
              <th>commit id</th>
            </tr>
            <tr>
              <td>demo-server</td>
              <td>ba85aa29bffcccf4d6c6d39e82a6196f51d2d68c</td>
            </tr>
            <tr>
              <td>default-setup</td>
              <td>109e641787d06edad3d8147fcee8af86f6a1eb0b</td>
            </tr>
            <tr>
              <td>accounting</td>
              <td>2e4730ce2e66f469ea409223a34b1133ca71e8ce</td>
            </tr>
            <tr>
              <td>fims-e2e</td>
              <td>8821edd800a28f06bae8260e1fe7ebe49238095c</td>
            </tr>
            <tr>
              <td>fims-web-app</td>
              <td>c97119c5e63c038eed11ad32e16b490189f66049</td>
            </tr>
            <tr>
              <td>portfolio</td>
              <td>d4fb74c2e94d95f02f51c51d534d03b6fc88be89</td>
            </tr>
            <tr>
              <td>deposit-account-management</td>
              <td>9f00a397e08d46f553816910b503e7283ba3bd21</td>
            </tr>
            <tr>
              <td>customer</td>
              <td>3962e1885372803d9af814376e8fd905b9ba98a8</td>
            </tr>
            <tr>
              <td>teller</td>
              <td>b67978315835b8c90c8e6dafaea6580d808a1734</td>
            </tr>
            <tr>
              <td>cheques</td>
              <td>6efef67d3f49bdc258cf5265c292ced72ee21c15</td>
            </tr>
            <tr>
              <td>payroll</td>
              <td>8405db37c70093c36b0ddffc744b6cf54f4853cc</td>
            </tr>
            <tr>
              <td>reporting</td>
              <td>de1fa388c9935299c8e35a009647c9e8065a455c</td>
            </tr>
            <tr>
              <td>office</td>
              <td>12e26137ad24b94c1e6504d2de37022040ddae5e</td>
            </tr>
            <tr>
              <td>rhythm</td>
              <td>0abeb5819a1f67c1aac403d3a632bb0f6f25b18a</td>
            </tr>
            <tr>
              <td>provisioner</td>
              <td>d5e8876d902bcb0f6e7041a2e6454c351e5fef6b</td>
            </tr>
            <tr>
              <td>permitted-feign-client</td>
              <td>5dae48798f97d52833de59a241ef2ecce9abdbc7</td>
            </tr>
            <tr>
              <td>mariadb</td>
              <td>496703ce8bf876002a482a1d9d06300cc6572e2f</td>
            </tr>
            <tr>
              <td>api</td>
              <td>b00a37ea9849a0db285ede50847e7c8c7031d192</td>
            </tr>
            <tr>
              <td>lang</td>
              <td>9cc432c2869bf882545a4052a823b28b9fad5eb8</td>
            </tr>
            <tr>
              <td>test-accounting-portfolio</td>
              <td>9e034f7bb6e7fd6e80c98b9f754f14c5ff63df34</td>
            </tr>
            <tr>
              <td>identity</td>
              <td>2b8d42744cf451221aefbd98e30b8d0da7e8b890</td>
            </tr>
            <tr>
              <td>test-provisioner-identity-rhythm-portfolio-accounting</td>
              <td>4e72a7fa8f4a59d93a6849f35daafb6575aebb57</td>
            </tr>
            <tr>
              <td>anubis</td>
              <td>5f919f4c1f03d06ed36d3adf5dbe17e950e048a6</td>
            </tr>
            <tr>
              <td>template</td>
              <td>08f84198fe12b8b7547ef6c104a3be23558278be</td>
            </tr>
            <tr>
              <td>test</td>
              <td>3f53d9d01df04791da51a46cb3460971dcb58d7a</td>
            </tr>
            <tr>
              <td>cassandra</td>
              <td>9b07e76645a89222986c8038afeb68a9b720d4ac</td>
            </tr>
            <tr>
              <td>command</td>
              <td>31e95658a7487c31eacd839480b32677581f8912</td>
            </tr>
            <tr>
              <td>async</td>
              <td>a28cd1ed14b3a70d0a5f3ccfba2710c6623bf0bf</td>
            </tr>
            <tr>
              <td>service-starter</td>
              <td>008380d4b14540c2833b3eaecda42f5e0db95eab</td>
            </tr>
            <tr>
              <td>crypto</td>
              <td>09e3e610fbf62f3a782331423c03aec3b969092c</td>
            </tr>
            <tr>
              <td>test-provisioner-identity-organization</td>
              <td>330aee5649d8176e10f78795344fe23eb21a3e8f</td>
            </tr>
            <tr>
              <td>group</td>
              <td>c759a24270439822653b38ce01937c7899e3de32</td>
            </tr>
            <tr>
              <td>data-jpa</td>
              <td>b78dadec2e481c3eb51184e85eeac0270d4a979e</td>
            </tr>
          </table>
        </p>
<h4 id='Copyright'>Copyright</h4>
<div class="section-content">
<table class="colortable" width="100%">
            <tr>
              <th>date</th>
              <th>item</th>
            </tr>
            <tr>
              <td>2017-11-06</td>
              <td>
                The software grant agreement was filed by the Mifos Initiative and acknowledged by the secretary. https://lists.apache.org/thread.html/5ea4cc5f15e003238ce7d72094c694545ee9f2621b4a499d4aeb1e4e@%3Cprivate.fineract.apache.org%3E
              </td>
            </tr>
            <tr>
              <td>2018-03-16</td>
              <td>
                The last of the changes to reflect the new ASF copyright were completed. https://lists.apache.org/thread.html/df158fe2bcfb08db24bc3b97b3e863dcc2907063c342445680b29a5c@%3Cdev.fineract.apache.org%3E
              </td>
            </tr>
          </table>
<p>
            Name recorded for software grant:
            <em>
              https://github.com/mifosio from the Mifos Initiative
            </em>
          </p>
</div>
<h4 id='Verify+distribution+rights'>Verify distribution rights</h4>
<div class="section-content">
<p>
            Corporations and individuals holding existing distribution rights:
          </p>
<ul>
            <li>
              <em>
                Mifos Initiative
              </em>
            </li>
          </ul>
<table class="colortable" width="100%">
            <tr>
              <th>date</th>
              <th>item</th>
            </tr>
            <tr>
              <td>2018-02-19</td>
              <td>
                Active committers have signed an ICLA. Last one was here: https://lists.apache.org/thread.html/79a0274f1f2749160480d257b344e6681db80ba3d7a5cee6e5453355@%3Cprivate.fineract.apache.org%3E
              </td>
            </tr>
            <tr>
              <td>2018-04-09</td>
              <td>
                Committers have been reminded that they are responsible for ensuring that a Corporate CLA is recorded if such is required. https://lists.apache.org/thread.html/4e64b77adab29d4238883342a985cf8bbb454b4dd0dbc75ab1002fb8@%3Cdev.fineract.apache.org%3E
              </td>
            </tr>
            <tr>
              <td>2018-04-18</td>
              <td>
                Five files in service-starter (in package org.apache.fineract.cn.test.servicestarter.aether) are copied from an eclipse-licensed sample project.  All other code is original code submitted to the Mifos Initiative by its original authors.
              </td>
            </tr>
            <tr>
              <td>2018-04-18</td>
              <td>
                There are currently three dependencies with Category X licenses (embedded MariaDB for testing, MariaDB JDBC driver for accessing MySQL database, Hibernate JPA).
                'Blocker' JIRA tickets have been written to describe the replacement of those dependencies with alternatives:
                FINCN-26, FINCN-27, FINCN-2.
              </td>
            </tr>
          </table>
</div>
</div>
<h3 id='Organizational+acceptance+of+responsibility+for+the+project'>
          Organizational acceptance of responsibility for the project
        </h3>
<div class="section-content">
<p>Related VOTEs:</p>
<ul>
          <li>
            <em>
              Two thirds of the committers at the time voted to accept the code donation:
              https://lists.apache.org/thread.html/8a791e91aa1295c84cd51f0429af2fcdada7db57fdb65b4185ea5fc0@%3Cdev.fineract.apache.org%3E
            </em>
          </li>
        </ul>
</div>
</div>
       </div>
   </div>
  
   <div class="row"><div class="span16"><hr noshade="noshade" size="1"/></div></div>
  <div class="row">
   <div class="span16 footer">
     Copyright &#169; 2009-2024 The Apache Software Foundation<br />
     Licensed under the <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.<br/>
     Apache Incubator, Apache, the Apache feather logo, and the Apache Incubator project logo are trademarks of The Apache Software Foundation.
     
     
    </div>
  </div>
 </div> 
 </body>
</html>
