← Back to team overview

launchpad-reviewers team mailing list archive

[Merge] lp:~cjwatson/launchpad/disable-new-commercial-subscriptions into lp:launchpad

 

Colin Watson has proposed merging lp:~cjwatson/launchpad/disable-new-commercial-subscriptions into lp:launchpad.

Commit message:
Add a feature flag to disable commercial subscriptions.

Requested reviews:
  Launchpad code reviewers (launchpad-reviewers)

For more details, see:
https://code.launchpad.net/~cjwatson/launchpad/disable-new-commercial-subscriptions/+merge/345925
-- 
Your team Launchpad code reviewers is requested to review the proposed merge of lp:~cjwatson/launchpad/disable-new-commercial-subscriptions into lp:launchpad.
=== modified file 'lib/lp/app/tour/bugs'
--- lib/lp/app/tour/bugs	2018-01-01 17:40:03 +0000
+++ lib/lp/app/tour/bugs	2018-05-18 14:19:45 +0000
@@ -41,7 +41,7 @@
 <strong>When projects share free software code they share its bugs</strong>. The discussion about how to fix one bug can become fragmented across different reports in multiple trackers.<br /><br />
 <strong>Launchpad brings the discussion to you</strong>. At a glance you can see how the bug affects different communities, whether they're tracking it in Launchpad or external tools such as Bugzilla, Trac, Sourceforge or elsewhere.<br /><br />
 You can even share a comment history across project boundaries and tools, and use Launchpad's API and email interfaces for easy integration with your project workflow.</p>
-             <div id="left-link-holder"><strong>Need bug tracking for a closed source project?</strong><br /><a href="join-launchpad#commercial">Read about commercial subscriptions &gt;</a></div>
+             <div id="left-link-holder"><strong>Need bug tracking for a closed source project?</strong><br /><a href="join-launchpad#commercial">Read about commercial features &gt;</a></div>
             <div id="link-holder"><a href="https://bugs.launchpad.net/";>Visit Launchpad Bugs &gt;</a><br /><a href="https://launchpad.net/projects/+new";>Add your project to Launchpad &gt;</a></div>
         </div>
         <div id="page-intro-bottom"></div>

=== modified file 'lib/lp/app/tour/index'
--- lib/lp/app/tour/index	2018-01-01 17:40:03 +0000
+++ lib/lp/app/tour/index	2018-05-18 14:19:45 +0000
@@ -49,7 +49,7 @@
             </ul>
 
             <div class="clear"></div>
-            <div id="left-link-holder"><strong>Need Launchpad for a commercial project?</strong><br /><a href="join-launchpad#commercial">Read about commercial subscriptions &gt;</a></div>
+            <div id="left-link-holder"><strong>Need Launchpad for a commercial project?</strong><br /><a href="join-launchpad#commercial">Read about commercial features &gt;</a></div>
             <div id="link-holder"><a href="https://launchpad.net/+login";>Create your Launchpad account &gt;</a><br /><a href="https://launchpad.net/projects/+new";>Add your project to Launchpad &gt;</a></div>
 
         </div>

=== modified file 'lib/lp/app/tour/join-launchpad'
--- lib/lp/app/tour/join-launchpad	2018-01-01 17:40:03 +0000
+++ lib/lp/app/tour/join-launchpad	2018-05-18 14:19:45 +0000
@@ -43,7 +43,7 @@
             <p class="intro-text">
                 <strong><a href="https://launchpad.net/projects/+new";>Register your project</a> to collaborate with a community of thousands.</strong> Join <a href="https://launchpad.net/mysql";>MySQL</a>, <a href="https://launchpad.net/zope";>Zope</a> and <a href="https://launchpad.net/ubuntu";>Ubuntu</a> in choosing Launchpad for your project.
 <br /><br />
-Launchpad is free to use for <a href="https://help.launchpad.net/Legal/ProjectLicensing";>open source</a> software projects and available at a low annual subscription for all other projects. Read on for details of our <a href="#commercial">commercial plans</a>.</p>
+Launchpad is free to use for <a href="https://help.launchpad.net/Legal/ProjectLicensing";>open source</a> software projects.</p>
             <div id="link-holder"><a href="https://launchpad.net/projects/+new";>Add your project to Launchpad &gt;</a></div>
         </div>
         <div id="page-intro-bottom"></div>
@@ -60,11 +60,11 @@
                 <div class="furthur-information-block-top"></div>
                 <div class="furthur-information-block-mid">
                     <div class="block">
-                        <h3><a name="commercial"></a>Subscriptions for commercial projects</h3>
-                        <h4>Host your closed-source project and join our beta of additional privacy features by buying a commercial subscription.</h4>
+                        <h3><a name="commercial"></a>Commercial projects</h3>
+                        <h4>Host your closed-source project using additional privacy features.</h4>
                         <p class="screen-holder">
                             <img src="images/join/1.png" alt="Commercial subscriptions" />                        </p>
-                        <p>Get all the benefits of hosting your closed-source project on Launchpad for just $250* a year. Easily share bug reports, code and more across your development community and, optionally, plug into the open source projects you rely on.</p><br />
+                        <p>Easily share bug reports, code and more across your development community and, optionally, plug into the open source projects you rely on.</p><br />
                         <p>At the same time, try out our privacy features, including:</p><br />
 			<ul>
 				<li>private code branches</li>
@@ -72,12 +72,7 @@
 				<li>private teams and mailing lists</li>
 				<li>private PPAs.</li>
 			</ul><br />
-			<p>To get going, register your project and select <em>Other/Proprietary</em> as its licence.</p><br />
-			<p>Want to know more? <a href="mailto:commercial@xxxxxxxxxxxxx";>Get in touch</a>!</p><br />
-			<p><small>* US Dollars. Add VAT at 20% if you're in the European Union. Subscription is per project. Prices may change in the future.</small></p>
-			<p style="float: right;"><a href="https://launchpad.net/projects/+new";>Register your project &gt;</a></p><br />
-
-                        </p>
+                        <p>Using these features requires authorization from Canonical. <a href="https://www.ubuntu.com/support/contact-us";>Contact us</a> if you're interested.</p>
                     </div>
                     <div class="block odd">
                         <h3>What Launchpad offers your project</h3>

=== modified file 'lib/lp/app/tour/ppa'
--- lib/lp/app/tour/ppa	2018-01-01 17:40:03 +0000
+++ lib/lp/app/tour/ppa	2018-05-18 14:19:45 +0000
@@ -43,7 +43,7 @@
                 <br /><br />
                 Installing applications from a PPA is just as easy as standard Ubuntu software, with updates automatically pushed to your users.
             </p>
-            <div id="left-link-holder"><strong>Need a private PPA with restricted access?</strong><br /><a href="join-launchpad#commercial">Read about our beta for commercial subscribers &gt;</a></div>
+            <div id="left-link-holder"><strong>Need a private PPA with restricted access?</strong><br /><a href="join-launchpad#commercial">Read about our commercial features &gt;</a></div>
             <div id="link-holder"><a href="https://launchpad.net/ubuntu/+ppas";><img src="images/see-it-action-button.png" alt="See it in action" title="Click to browse PPAs" /></a><br /><a href="https://help.launchpad.net/PPA";>Read our PPA user guide &gt;</a></div>
         </div>
         <div id="page-intro-bottom"></div>

=== modified file 'lib/lp/app/tour/release-management'
--- lib/lp/app/tour/release-management	2018-01-01 17:40:03 +0000
+++ lib/lp/app/tour/release-management	2018-05-18 14:19:45 +0000
@@ -17,7 +17,7 @@
     <div id="container">
         <p class="page-number">10 of 11</p>
         <ul id="navigation-drop-down">
-            <li class="button-next"><a id="btnNext" href="join-launchpad" taborder="1" accesskey="1" title="Read about commercial subscriptions and free access to Launchpad">Next</a></li>
+            <li class="button-next"><a id="btnNext" href="join-launchpad" taborder="1" accesskey="1" title="Read about commercial features and free access to Launchpad">Next</a></li>
             <li class="home"><a href="index" accesskey="2">Launchpad tour home</a></li>
             <li><a href="bugs" accesskey="3">Cross-project bug tracking</a></li>
             <li><a href="branch-hosting-tracking" accesskey="4">Code hosting and review</a></li>
@@ -54,7 +54,7 @@
                 <a title="Back to the spec tracking page" href="feature-tracking" accesskey="d" tabindex="2">Back</a>
             </li>        
             <li class="button-next">
-                <a href="join-launchpad" title="Read about commercial subscriptions and free access to Launchpad" accesskey="e" tabindex="3">Next</a>
+                <a href="join-launchpad" title="Read about commercial features and free access to Launchpad" accesskey="e" tabindex="3">Next</a>
             </li>
         </ul>
         <div id="further-information">
@@ -93,7 +93,7 @@
                 <a title="Back to the spec tracking page" href="feature-tracking" accesskey="f" tabindex="4">Back</a>
             </li> 
             <li class="button-next">
-                <a href="join-launchpad" title="Read about commercial subscriptions and free access to Launchpad" accesskey="g" tabindex="5" title="Read about commercial subscriptions and free access to Launchpad">Next</a>
+                <a href="join-launchpad" title="Read about commercial features and free access to Launchpad" accesskey="g" tabindex="5" title="Read about commercial features and free access to Launchpad">Next</a>
             </li>
              <li class="copyright">
                 &copy; 2004-2018 Canonical Ltd. <a href="https://help.launchpad.net/Legal"; accesskey="h" tabindex="6">Terms of Use</a> &#58; <a href="https://help.launchpad.net/Feedback"; accesskey="i" tabindex="7">Feedback</a> &#58; <a href="https://answers.launchpad.net/launchpad-project/+faqs"; accesskey="j" tabindex="8">FAQ</a>

=== modified file 'lib/lp/app/widgets/templates/license.pt'
--- lib/lp/app/widgets/templates/license.pt	2014-04-03 13:11:12 +0000
+++ lib/lp/app/widgets/templates/license.pt	2018-05-18 14:19:45 +0000
@@ -75,7 +75,8 @@
        tal:attributes="href config/commercial/licensing_policy_url" class="sprite new-window">
       licensing policies</a>.
     <br/>
-    <div id="proprietary" class="hidden">
+    <div id="proprietary" class="hidden"
+         tal:condition="not: request/features/commercial_subscriptions.new.disabled">
       Commercial and proprietary projects do not qualify for free hosting;
       therefore a subscription needs to be purchased in order to host this
       project on Launchpad.
@@ -97,5 +98,14 @@
       <a href="mailto:commercial@xxxxxxxxxxxxx";>Contact us</a>
       for more information regarding commercial subscriptions.
     </div>
+    <div id="proprietary" class="hidden"
+         tal:condition="request/features/commercial_subscriptions.new.disabled">
+      Commercial and proprietary projects do not qualify for free hosting.
+      If you have authorization from Canonical to use Launchpad's commercial
+      features, then <a href="mailto:commercial@xxxxxxxxxxxxx";>contact us</a>
+      to have that applied to this project.  Otherwise, you may only use
+      Launchpad for software projects that comply with the licensing policies
+      above.
+    </div>
 </div>
 </tal:root>

=== modified file 'lib/lp/registry/browser/person.py'
--- lib/lp/registry/browser/person.py	2018-04-22 23:30:37 +0000
+++ lib/lp/registry/browser/person.py	2018-05-18 14:19:45 +0000
@@ -191,6 +191,7 @@
 from lp.services.config import config
 from lp.services.database.decoratedresultset import DecoratedResultSet
 from lp.services.database.sqlbase import flush_database_updates
+from lp.services.features import getFeatureFlag
 from lp.services.feeds.browser import FeedsMixin
 from lp.services.geoip.interfaces import IRequestPreferredLanguages
 from lp.services.gpg.interfaces import (
@@ -821,7 +822,10 @@
         target = '+vouchers'
         text = 'Manage commercial subscriptions'
         summary = 'Purchase and redeem commercial subscription vouchers'
-        return Link(target, text, summary, icon='info')
+        return Link(
+            target, text, summary, icon='info',
+            enabled=not bool(
+                getFeatureFlag('commercial_subscriptions.new.disabled')))
 
     @enabled_with_permission('launchpad.Edit')
     def editlanguages(self):
@@ -3137,8 +3141,8 @@
         """
         # Defaults for the mailing list autosubscribe buttons.
         return dict(
-            mailing_list_auto_subscribe_policy=
-                self.context.mailing_list_auto_subscribe_policy)
+            mailing_list_auto_subscribe_policy=(
+                self.context.mailing_list_auto_subscribe_policy))
 
     def setUpWidgets(self, context=None):
         """See `LaunchpadFormView`."""

=== modified file 'lib/lp/registry/emailtemplates/product-commercial-subscription-expiration.txt'
--- lib/lp/registry/emailtemplates/product-commercial-subscription-expiration.txt	2012-05-24 21:26:57 +0000
+++ lib/lp/registry/emailtemplates/product-commercial-subscription-expiration.txt	2018-05-18 14:19:45 +0000
@@ -4,13 +4,11 @@
 Launchpad will expire soon.
 %(commercial_use_expiration)s
 
-You can renew the commercial subscription which costs
-US$250/year/project.  Follow the instructions presented on your
-project overview page to purchase a subscription voucher.
-%(product_url)s
+Proprietary projects can only use Launchpad with prior approval from
+Canonical.
 
 A commercial subscription allows you to host your commercial project
-on Launchpad in the same way as any other project. Project's with a
+on Launchpad in the same way as any other project. Projects with a
 commercial subscription may have private-by-default bugs, and you
 may also request the setup of private code hosting.
 

=== modified file 'lib/lp/registry/emailtemplates/product-commercial-subscription-expired-open-source.txt'
--- lib/lp/registry/emailtemplates/product-commercial-subscription-expired-open-source.txt	2012-09-24 04:12:46 +0000
+++ lib/lp/registry/emailtemplates/product-commercial-subscription-expired-open-source.txt	2018-05-18 14:19:45 +0000
@@ -9,7 +9,7 @@
 policies are updated. Private branches cannot be linked to project series.
 
 A commercial subscription allows you to host your commercial project
-on Launchpad in the same way as any other project. Project's with a
+on Launchpad in the same way as any other project. Projects with a
 commercial subscription may have private-by-default bugs, and you
 may also request the setup of private code hosting.
 

=== modified file 'lib/lp/registry/emailtemplates/product-commercial-subscription-expired-proprietary.txt'
--- lib/lp/registry/emailtemplates/product-commercial-subscription-expired-proprietary.txt	2012-05-24 21:26:57 +0000
+++ lib/lp/registry/emailtemplates/product-commercial-subscription-expired-proprietary.txt	2018-05-18 14:19:45 +0000
@@ -10,7 +10,7 @@
 at commercial@xxxxxxxxxxxxx to discuss your options.
 
 A commercial subscription allows you to host your commercial project
-on Launchpad in the same way as any other project. Project's with a
+on Launchpad in the same way as any other project. Projects with a
 commercial subscription may have private-by-default bugs, and you
 may also request the setup of private code hosting.
 

=== modified file 'lib/lp/registry/emailtemplates/product-license-dont-know.txt'
--- lib/lp/registry/emailtemplates/product-license-dont-know.txt	2012-05-24 21:26:57 +0000
+++ lib/lp/registry/emailtemplates/product-license-dont-know.txt	2018-05-18 14:19:45 +0000
@@ -24,9 +24,8 @@
 https://answers.launchpad.net/launchpad/+faq/208
 
 If your project's licensing does not meet the guidelines, it will be
-marked "Proprietary".  Proprietary projects can use Launchpad by
-purchasing a commercial-use subscription which costs
-US$250/year/project.
+marked "Proprietary".  Proprietary projects can only use Launchpad with
+prior approval from Canonical.
 
 https://help.launchpad.net/CommercialHosting
 

=== modified file 'lib/lp/registry/emailtemplates/product-license-other-open-source.txt'
--- lib/lp/registry/emailtemplates/product-license-other-open-source.txt	2012-05-24 21:26:57 +0000
+++ lib/lp/registry/emailtemplates/product-license-other-open-source.txt	2018-05-18 14:19:45 +0000
@@ -28,9 +28,8 @@
 The link is here: https://answers.launchpad.net/launchpad/+faq/208
 
 If your project's licensing does not meet the guidelines, it will be
-marked "Proprietary". Proprietary projects can use Launchpad by
-purchasing a commercial-use subscription which costs
-US$250/year/project.
+marked "Proprietary". Proprietary projects can only use Launchpad with
+prior approval from Canonical.
 
 https://help.launchpad.net/CommercialHosting
 

=== modified file 'lib/lp/registry/emailtemplates/product-license-other-proprietary.txt'
--- lib/lp/registry/emailtemplates/product-license-other-proprietary.txt	2012-05-24 21:26:57 +0000
+++ lib/lp/registry/emailtemplates/product-license-other-proprietary.txt	2018-05-18 14:19:45 +0000
@@ -6,10 +6,8 @@
 
 %(commercial_use_expiration)s
 
-Proprietary projects can use Launchpad by purchasing a commercial-use
-subscription which costs US$250/year/project.  Follow the instructions
-presented on your project overview page to purchase a subscription
-voucher.
+Proprietary projects can only use Launchpad with prior approval from
+Canonical.
 
 A commercial-use subscription allows you to host your commercial project
 on Launchpad in the same way as any other project. Project's with a

=== modified file 'lib/lp/registry/stories/product/xx-product-index.txt'
--- lib/lp/registry/stories/product/xx-product-index.txt	2016-03-24 09:50:47 +0000
+++ lib/lp/registry/stories/product/xx-product-index.txt	2018-05-18 14:19:45 +0000
@@ -143,6 +143,15 @@
     >>> owner_browser.getLink('Canonical Shop')
     <Link...url='http://ubuntu.recycledmania.com...'>
 
+The link can be disabled by a feature flag.
+
+    >>> from lp.services.features.testing import FeatureFixture
+    >>> with FeatureFixture({'commercial_subscriptions.new.disabled': 'true'}):
+    ...     owner_browser.getLink('Manage commercial subscriptions')
+    Traceback (most recent call last):
+    ...
+    LinkNotFoundError
+
 Any user can see that the project's licence is proprietary.
 
     >>> user_browser.open('http://launchpad.dev/firefox')

=== modified file 'lib/lp/registry/templates/person-vouchers.pt'
--- lib/lp/registry/templates/person-vouchers.pt	2012-12-07 18:57:59 +0000
+++ lib/lp/registry/templates/person-vouchers.pt	2018-05-18 14:19:45 +0000
@@ -37,44 +37,58 @@
       Hosting</a> for more details.
     </p>
 
-    <tal:no_vouchers condition="not: view/show_voucher_selection">
+    <tal:can-subscribe
+        condition="not: request/features/commercial_subscriptions.new.disabled">
+      <tal:no_vouchers condition="not: view/show_voucher_selection">
+        <p>
+          <strong>You do not have any redeemable commercial subscription vouchers.
+          Here are the steps to obtain a commercial subscription:</strong>
+        </p>
+
+        <ol>
+          <li>Purchase a Launchpad subscription from the
+            <a tal:define="config modules/lp.services.config/config"
+               tal:attributes="href config/commercial/purchase_subscription_url"
+               >Canonical Shop</a>.
+          </li>
+          <li>
+            You will receive an email that your order has been processed.
+          </li>
+          <li>
+            The shop will inform Launchpad of your purchase within 60 minutes.
+          </li>
+          <li>
+            Return to this page to choose the project the commercial
+            subscription is for.
+          </li>
+        </ol>
+      </tal:no_vouchers>
+
+      <tal:has_voucher condition="view/show_voucher_selection">
+        <div metal:use-macro="context/@@launchpad_form/form">
+          <metal:widgets fill-slot="widgets">
+            <table class="form">
+              <tal:widget define="widget nocall:view/widgets/project">
+                <metal:block use-macro="context/@@launchpad_form/widget_row" />
+              </tal:widget>
+              <tal:widget define="widget nocall:view/widgets/voucher">
+                <metal:block use-macro="context/@@launchpad_form/widget_row" />
+              </tal:widget>
+            </table>
+          </metal:widgets>
+        </div>
+      </tal:has_voucher>
+    </tal:can-subscribe>
+
+    <tal:cannot-subscribe
+        condition="request/features/commercial_subscriptions.new.disabled">
       <p>
-        <strong>You do not have any redeemable commercial subscription vouchers.
-        Here are the steps to obtain a commercial subscription:</strong>
+        New commercial subscriptions are no longer available.
+        <a href="mailto:commercial@xxxxxxxxxxxxx";>Contact us</a> if you have
+        authorization from Canonical to use Launchpad's commercial features
+        and need this to be applied to your project, or if you have any
+        other questions about this.
       </p>
-
-      <ol>
-        <li>Purchase a Launchpad subscription from the
-          <a tal:define="config modules/lp.services.config/config"
-             tal:attributes="href config/commercial/purchase_subscription_url"
-             >Canonical Shop</a>.
-        </li>
-        <li>
-          You will receive an email that your order has been processed.
-        </li>
-        <li>
-          The shop will inform Launchpad of your purchase within 60 minutes.
-        </li>
-        <li>
-          Return to this page to choose the project the commercial
-          subscription is for.
-        </li>
-      </ol>
-    </tal:no_vouchers>
-
-    <tal:has_voucher condition="view/show_voucher_selection">
-      <div metal:use-macro="context/@@launchpad_form/form">
-        <metal:widgets fill-slot="widgets">
-          <table class="form">
-            <tal:widget define="widget nocall:view/widgets/project">
-              <metal:block use-macro="context/@@launchpad_form/widget_row" />
-            </tal:widget>
-            <tal:widget define="widget nocall:view/widgets/voucher">
-              <metal:block use-macro="context/@@launchpad_form/widget_row" />
-            </tal:widget>
-          </table>
-        </metal:widgets>
-      </div>
-    </tal:has_voucher>
+    </tal:cannot-subscribe>
   </div>
 </html>

=== modified file 'lib/lp/registry/templates/pillar-sharing.pt'
--- lib/lp/registry/templates/pillar-sharing.pt	2015-05-07 11:20:50 +0000
+++ lib/lp/registry/templates/pillar-sharing.pt	2018-05-18 14:19:45 +0000
@@ -35,10 +35,14 @@
     </p>
     <p id='non-commercial-project-text'
        tal:condition="not: context/has_current_commercial_subscription|nothing">
-      Open source projects have limited access to sharing features. You can
-      <a href="https://help.launchpad.net/CommercialHosting";>purchase a
-      commercial subscription</a> to enable more privacy options, such as
-      setting bugs and branches to be proprietary by default.
+      Open source projects have limited access to sharing features.
+      <tal:can-subscribe
+          condition="not: request/features/commercial_subscriptions.new.disabled">
+        You can
+        <a href="https://help.launchpad.net/CommercialHosting";>purchase a
+        commercial subscription</a> to enable more privacy options, such as
+        setting bugs and branches to be proprietary by default.
+      </tal:can-subscribe>
     </p>
     </tal:what-shared>
       <table>

=== modified file 'lib/lp/registry/templates/product-portlet-requires-subscription.pt'
--- lib/lp/registry/templates/product-portlet-requires-subscription.pt	2012-12-11 14:06:48 +0000
+++ lib/lp/registry/templates/product-portlet-requires-subscription.pt	2018-05-18 14:19:45 +0000
@@ -18,28 +18,38 @@
     <tal:date_expire
      tal:replace="context/commercial_subscription/date_expires/fmt:displaydate"
      />.</strong>
-    <span
-      tal:define="user_menu view/user/menu:overview"
-      tal:condition="context/qualifies_for_free_hosting">
-      <br />Purchase a commercial subscription from your
-      <a tal:replace="structure user_menu/manage_vouchers/fmt:link" />
-      page.
-    </span>
+    <tal:can-subscribe
+        condition="not: request/features/commercial_subscriptions.new.disabled">
+      <span
+          tal:define="user_menu view/user/menu:overview"
+          tal:condition="context/qualifies_for_free_hosting">
+        <br />Purchase a commercial subscription from your
+        <a tal:replace="structure user_menu/manage_vouchers/fmt:link" />
+        page.
+      </span>
+    </tal:can-subscribe>
   </p>
 
   <tal:proprietary condition="not: context/qualifies_for_free_hosting">
     <p>
       The licensing of your project does not qualify for free
-      hosting You have two options to continue using Launchpad
+      hosting. You have two options to continue using Launchpad
       for this project.
     </p>
 
     <ul class="bulleted" style="clear:left;">
-      <li tal:define="user_menu view/user/menu:overview">
+      <li tal:define="user_menu view/user/menu:overview"
+          tal:condition="not: request/features/commercial_subscriptions.new.disabled">
         Purchase a commercial subscription from your
         <a tal:replace="structure user_menu/manage_vouchers/fmt:link" />
         page.
       </li>
+      <li tal:condition="request/features/commercial_subscriptions.new.disabled">
+        If you have authorization from Canonical to use Launchpad's
+        commercial features, then
+        <a href="mailto:commercial@xxxxxxxxxxxxx";>contact us</a>
+        to have that applied to this project.
+      </li>
       <li>
         Change the project's license to conform to
         <a class="sprite maybe"


Follow ups