<!doctype html>
<!--
  Minimal Mistakes Jekyll Theme 4.4.1 by Michael Rose
  Copyright 2017 Michael Rose - mademistakes.com | @mmistakes
  Free for personal and commercial use under the MIT license
  https://github.com/mmistakes/minimal-mistakes/blob/master/LICENSE.txt
-->
<html lang="en" class="no-js">
  <head>
    <meta charset="utf-8">

<!-- begin SEO -->









<title>Apache ServiceComb Accept Code Donation From NewCapec Institute - Apache ServiceComb</title>




<meta name="description" content="Apache ServiceComb Accept Code Donation From NewCapec Institute">




<meta name="author" content="Daniel Qian">

<meta property="og:locale" content="en">
<meta property="og:site_name" content="Apache ServiceComb">
<meta property="og:title" content="Apache ServiceComb Accept Code Donation From NewCapec Institute">


  <link rel="canonical" href="https://github.com/pages/apache/incubator-servicecomb-website/docs/servicecomb-accept-newcapec-institute-code-donation/">
  <meta property="og:url" content="https://github.com/pages/apache/incubator-servicecomb-website/docs/servicecomb-accept-newcapec-institute-code-donation/">



  <meta property="og:description" content="Apache ServiceComb Accept Code Donation From NewCapec Institute">



  <meta name="twitter:site" content="@ServiceComb">
  <meta name="twitter:title" content="Apache ServiceComb Accept Code Donation From NewCapec Institute">
  <meta name="twitter:description" content="Apache ServiceComb Accept Code Donation From NewCapec Institute">
  <meta name="twitter:url" content="">

  
    <meta name="twitter:card" content="summary">
    
  

  
    <meta name="twitter:creator" content="@">
  



  

  





  <meta property="og:type" content="article">
  <meta property="article:published_time" content="2019-11-07T00:00:00+08:00">








  <script type="application/ld+json">
    {
      "@context" : "http://schema.org",
      "@type" : "Person",
      "name" : "Apache ServiceComb",
      "url" : "https://github.com/pages/apache/incubator-servicecomb-website",
      "sameAs" : null
    }
  </script>



  <meta name="google-site-verification" content="HvJjNd7vvJ-yjSTHlBiIWEYxp_Hrz-PYEY5Idz9LRcA" />




<!-- end SEO -->


<link href="/feed.xml" type="application/atom+xml" rel="alternate" title="Apache ServiceComb Feed">

<!-- http://t.co/dKP3o1e -->
<meta name="HandheldFriendly" content="True">
<meta name="MobileOptimized" content="320">
<meta name="viewport" content="width=device-width, initial-scale=1.0">

<script>
  document.documentElement.className = document.documentElement.className.replace(/\bno-js\b/g, '') + ' js ';
</script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/1.7.1/clipboard.min.js"></script>
<script src="/assets/vendor/prism/prism.js"></script>

<script type="text/javascript" async
  src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/MathJax.js?config=TeX-MML-AM_CHTML">
</script>

<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-beta/css/bootstrap.min.css" integrity="sha384-/Y6pD6FV/Vv2HJnA6t+vslU6fwYXjCFtcEpHbNJ0lyAFsXTsjBbfaDjzALeQsN6M" crossorigin="anonymous">

<script src="https://code.jquery.com/jquery-3.2.1.slim.min.js" integrity="sha384-KJ3o2DKtIkvYIK3UENzmM7KCkRr/rE9/Qpg6aAZGJwFDMVNA/GpGFF93hXpG5KkN" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.11.0/umd/popper.min.js" integrity="sha384-b/U6ypiBEHpOf/4+1nzFpr53nxSS+GLCkfwBdFNTxtclqqenISfwAzpKaMNFNmj4" crossorigin="anonymous"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-beta/js/bootstrap.min.js" integrity="sha384-h0AbiXch4ZDo7tp9hKZ4TsHbi047NrKGLO3SEJAg45jXxnGIfYzk4Si90RDIqNm1" crossorigin="anonymous"></script>
<!-- For all browsers -->
<link rel="stylesheet" href="/assets/css/main.css?v=1">
<link rel="stylesheet" href="/assets/vendor/prism/prism.css?v=1">

<!--[if lte IE 9]>
  <style>
    /* old IE unsupported flexbox fixes */
    .greedy-nav .site-title {
      padding-right: 3em;
    }
    .greedy-nav button {
      position: absolute;
      top: 0;
      right: 0;
      height: 100%;
    }
  </style>
<![endif]-->

<meta http-equiv="cleartype" content="on">

    <!-- start custom head snippets -->

<!-- insert favicons. use http://realfavicongenerator.net/ -->
<link href="https://fonts.cat.net/css?family=Roboto:400,500,700|Source+Code+Pro" rel="stylesheet">
<script src="/assets/js/custom.js"></script>
<!-- end custom head snippets -->

  </head>

  <body class="layout--single">

    <!--[if lt IE 9]>
<div class="notice--danger align-center" style="margin: 0;">You are using an <strong>outdated</strong> browser. Please <a href="http://browsehappy.com/">upgrade your browser</a> to improve your experience.</div>
<![endif]-->
    <div class="masthead" onmouseleave="$('#childrenShow').css('display', 'none')">
  <div class="masthead__inner-wrap">
    <div class="masthead__menu">
      <nav id="site-nav" class="greedy-nav">
	      
          <a class="site-title active" href="/"><img src="https://www.apache.org/img/servicecomb.png"></a>
	      
        <ul class="visible-links">
          
            
          
          
            
              <li class="masthead__menu-item" onmouseenter="$('#childrenShow').css('display', 'none')">
                
                  <a href="/">Home</a>
                
              </li>
            
          
            
          
          
            
              <li class="masthead__menu-item" onmouseenter="$('#childrenShow').css('display', 'none')">
                
                  <a href="/developers/">Projects</a>
                
              </li>
            
          
            
          
          
            
            <li class="def-nav-li" onmouseenter="$('#childrenShow').css('display', 'block')">
              
              
              

              
                <a href="/docs/users/">Documentation</a>
              

              <ul id="childrenShow" class="def-children-show" onmouseleave="$('#childrenShow').css('display', 'none')">
                
                <li><a href="/docs/getting-started/" class="">getting started</a></li>
                
                <li><a href="/docs/users/" class="">Docs</a></li>
                
                <li><a href="/slides/" class="">Video</a></li>
                
                <li><a href="/faqs/" class="">FAQ</a></li>
                
              </ul>
            </li>
          
          
            
          
          
            
              <li class="masthead__menu-item" onmouseenter="$('#childrenShow').css('display', 'none')">
                
                  <a href="/developers/contributing">Community</a>
                
              </li>
            
          
            
          
          
            
              <li class="masthead__menu-item" onmouseenter="$('#childrenShow').css('display', 'none')">
                
                  <a href="/year-archive/">Blogs</a>
                
              </li>
            
          
            
          
          
            
              <li class="masthead__menu-item" onmouseenter="$('#childrenShow').css('display', 'none')">
                
                  <a href="/release/">Downloads</a>
                
              </li>
            
          
        </ul>
        <button><div class="navicon"></div></button>
        <ul class="hidden-links hidden"></ul>
        <div class="nav-lang">
          
            
            <a href=/cn/docs/servicecomb-accept-newcapec-institute-code-donation/>中文</a>
          
        </div>
      </nav>
    </div>
  </div>
</div>


    



<div id="main" role="main">
  
  <div class="sidebar sticky">
      
      <div class="back-to-home"><a href="/">Home</a> > Apache ServiceComb Accept Code Donation From NewCapec Institute</div>
      
  

<div itemscope itemtype="http://schema.org/Person">

  

  <div class="author__content">
    <h3 class="author__name" itemprop="name">Qian Jia</h3>
    
      <p class="author__bio" itemprop="description">
	    
        Opensource change the world
	    
      </p>
    
  </div>

  <div class="author__urls-wrapper">
    <button class="btn btn--inverse">Follow</button>
    <ul class="author__urls social-icons">
      

      
        <li>
          <a href="https://github.com/chanjarster" itemprop="url">
            <i class="fa fa-fw fa-chain" aria-hidden="true"></i> Website
          </a>
        </li>
      

      
        <li>
          <a href="mailto:chanjarster@gmail.com">
            <meta itemprop="email" content="chanjarster@gmail.com" />
            <i class="fa fa-fw fa-envelope-square" aria-hidden="true"></i> Email
          </a>
        </li>
      

      

      

      

      

      

      

      

      

      

      

      

      

      

      

      

      

      

      

      

      

      

      

      <!--
  <li>
    <a href="http://link-to-whatever-social-network.com/user/" itemprop="sameAs">
      <i class="fa fa-fw" aria-hidden="true"></i> Custom Social Profile Link
    </a>
  </li>
-->
    </ul>
  </div>
</div>

  
  </div>



  <article class="page" itemscope itemtype="http://schema.org/CreativeWork">
    <meta itemprop="headline" content="Apache ServiceComb Accept Code Donation From NewCapec Institute">
    <meta itemprop="description" content="Apache ServiceComb Accept Code Donation From NewCapec Institute">
    <meta itemprop="datePublished" content="November 07, 2019">
    <meta itemprop="dateModified" content="November 07, 2019">

    <div class="page__inner-wrap">
      
        
          <header>
            <h1 class="page__title" itemprop="headline">Apache ServiceComb Accept Code Donation From NewCapec Institute
</h1>
            
              <p class="page__meta"><i class="fa fa-clock-o" aria-hidden="true"></i> 




  less than 1 minute read

</p>
            
          </header>
        
      

      <section class="page__content" itemprop="text">
        <p><a href="https://github.com/apache/servicecomb-toolkit">ServiceComb Toolkit</a> recently recieved a code donation(<a href="https://github.com/NewCapec-Institute/oas-validator">oas-validator</a>) from <a href="https://github.com/orgs/NewCapec-Institute/dashboard">NewCapec Institute</a>, oas-validator provides OpenAPI V3 style and compatiblity check functionalities。Related links：</p>

<ul>
  <li><a href="https://lists.apache.org/thread.html/062cf6e67add1061aad3b106543842a8ac95959da8cd45bf2f88d597@%3Cdev.servicecomb.apache.org%3E">Donation acceptance vote</a></li>
  <li><a href="https://incubator.apache.org/ip-clearance/servicecomb-oas-validator.html">IP Clearance Status</a></li>
  <li><a href="https://github.com/apache/servicecomb-toolkit/pull/40">Code import PR</a></li>
</ul>

<p>ServiceComb community will complete the integration work as soon as possible, provide more helpful functionalities to developers.</p>

        
      </section>

      <footer class="page__meta">
        
        
  


  
  
  

  <p class="page__taxonomy">
    <strong><i class="fa fa-fw fa-tags" aria-hidden="true"></i> Tags: </strong>
    <span itemprop="keywords">
    
      
      
      <a href="/tags/#microservice" class="page__taxonomy-item" rel="tag">microservice</a>
    
    </span>
  </p>





        
          
            
              <p class="page__date"><strong><i class="fa fa-fw fa-calendar" aria-hidden="true"></i> Updated:</strong> <time datetime="2019-11-07">November 07, 2019</time></p>
            
          
        
      </footer>

      <section class="page__share">
  
    <h4 class="page__share-title">Share on</h4>
  

  <a href="https://twitter.com/intent/tweet?via=ServiceComb&text=Apache ServiceComb Accept Code Donation From NewCapec Institute /docs/servicecomb-accept-newcapec-institute-code-donation/" class="btn btn--twitter" title="Share on Twitter"><i class="fa fa-fw fa-twitter" aria-hidden="true"></i><span> Twitter</span></a>

  <a href="https://www.facebook.com/sharer/sharer.php?u=/docs/servicecomb-accept-newcapec-institute-code-donation/" class="btn btn--facebook" title="Share on Facebook"><i class="fa fa-fw fa-facebook" aria-hidden="true"></i><span> Facebook</span></a>

  <a href="https://plus.google.com/share?url=/docs/servicecomb-accept-newcapec-institute-code-donation/" class="btn btn--google-plus" title="Share on Google Plus"><i class="fa fa-fw fa-google-plus" aria-hidden="true"></i><span> Google+</span></a>

  <a href="https://www.linkedin.com/shareArticle?mini=true&url=/docs/servicecomb-accept-newcapec-institute-code-donation/" class="btn btn--linkedin" title="Share on LinkedIn"><i class="fa fa-fw fa-linkedin" aria-hidden="true"></i><span> LinkedIn</span></a>
</section>


      
  <nav class="pagination">
    
      <a href="/cn/docs/servicecomb-accept-newcapec-institute-code-donation/" class="pagination--pager" title="Apache ServiceComb社区接受新开普软件研究院的代码捐赠
">Previous</a>
    
    
      <a href="/cn/docs/playing-on-the-open-source-community-with-Apache-ServiceComb-BUPT/" class="pagination--pager" title="与Apache ServiceComb一起玩开源-北邮站 (PPT Download)
">Next</a>
    
  </nav>


    </div>

    
      <div class="page__comments">
  
  
    <section id="static-comments">
      
        <!-- Start static comments -->
        <div class="js-comments">
          
        </div>
        <!-- End static comments -->

        <!-- Start new comment form -->
        <h4 class="page__comments-title">Leave a Comment</h4>
        <p class="small">Your email address will not be published. Required fields are marked <span class="required">*</span></p>
        <form id="new_comment" class="page__comments-form js-form form" method="post" action="https://api.staticman.net/v1/entry/apache/incubator-servicecomb-website/master">
          <div class="form__spinner">
            <i class="fa fa-spinner fa-spin fa-3x fa-fw"></i>
            <span class="sr-only">Loading...</span>
          </div>

          <fieldset>
            <label for="comment-form-message">Comment <small class="required">*</small></label>
            <textarea type="text" rows="3" id="comment-form-message" name="fields[message]" tabindex="1"></textarea>
            <div class="small help-block"><a href="https://daringfireball.net/projects/markdown/">Markdown is supported.</a></div>
          </fieldset>
          <fieldset>
            <label for="comment-form-name">Name <small class="required">*</small></label>
            <input type="text" id="comment-form-name" name="fields[name]" tabindex="2" />
          </fieldset>
          <fieldset>
            <label for="comment-form-email">Email address <small class="required">*</small></label>
            <input type="email" id="comment-form-email" name="fields[email]" tabindex="3" />
          </fieldset>
          <fieldset>
            <label for="comment-form-url">Website (optional)</label>
            <input type="url" id="comment-form-url" name="fields[url]" tabindex="4"/>
          </fieldset>
          <fieldset class="hidden" style="display: none;">
            <input type="hidden" name="options[slug]" value="servicecomb-accept-newcapec-institute-code-donation">
            <label for="comment-form-location">Not used. Leave blank if you are a human.</label>
            <input type="text" id="comment-form-location" name="fields[hidden]" autocomplete="off"/>
          </fieldset>
          <!-- Start comment form alert messaging -->
          <p class="hidden js-notice">
            <strong class="js-notice-text"></strong>
          </p>
          <!-- End comment form alert messaging -->
          <fieldset>
            <button type="submit" id="comment-form-submit" tabindex="5" class="btn btn--large">Submit Comment</button>
          </fieldset>
        </form>
        <!-- End new comment form -->
      
    </section>
  
</div>

    
  </article>

  
  
    <div class="page__related">
      <h4 class="page__related-title">You May Also Enjoy</h4>
      <div class="grid__wrapper">
        
          



<div class="grid__item">
  <article class="archive__item" itemscope itemtype="http://schema.org/CreativeWork">
    
    <h2 class="archive__item-title" itemprop="headline">
      
        <a href="/cn/docs/playing-on-the-open-source-community-with-Apache-ServiceComb-GDUT/" rel="permalink">与Apache ServiceComb一起玩开源-广工站 (PPT Download)
</a>
      
    </h2>
    <p class="archive__item-excerpt" itemprop="description">与Apache ServiceComb一起玩开源-广工站 (PPT Download)
</p>
    
      <p class="page__meta"><i class="fa fa-clock-o" aria-hidden="true"></i> 




  less than 1 minute read

</p>
    
  </article>
</div>

        
          



<div class="grid__item">
  <article class="archive__item" itemscope itemtype="http://schema.org/CreativeWork">
    
    <h2 class="archive__item-title" itemprop="headline">
      
        <a href="/cn/docs/servicecomb-service-center-client/" rel="permalink">使用ServiceComb客户端轻松调用ServiceCenter
</a>
      
    </h2>
    <p class="archive__item-excerpt" itemprop="description">使用ServiceComb客户端轻松调用ServiceCenter
</p>
    
      <p class="page__meta"><i class="fa fa-clock-o" aria-hidden="true"></i> 




  2 minute read

</p>
    
  </article>
</div>

        
          



<div class="grid__item">
  <article class="archive__item" itemscope itemtype="http://schema.org/CreativeWork">
    
    <h2 class="archive__item-title" itemprop="headline">
      
        <a href="/cn/docs/playing-on-the-open-source-community-with-Apache-ServiceComb-BUPT/" rel="permalink">与Apache ServiceComb一起玩开源-北邮站 (PPT Download)
</a>
      
    </h2>
    <p class="archive__item-excerpt" itemprop="description">与Apache ServiceComb一起玩开源-北邮站 (PPT Download)
</p>
    
      <p class="page__meta"><i class="fa fa-clock-o" aria-hidden="true"></i> 




  less than 1 minute read

</p>
    
  </article>
</div>

        
          



<div class="grid__item">
  <article class="archive__item" itemscope itemtype="http://schema.org/CreativeWork">
    
    <h2 class="archive__item-title" itemprop="headline">
      
        <a href="/cn/docs/servicecomb-accept-newcapec-institute-code-donation/" rel="permalink">Apache ServiceComb社区接受新开普软件研究院的代码捐赠
</a>
      
    </h2>
    <p class="archive__item-excerpt" itemprop="description">Apache Servicecomb社区接受新开普软件研究院的代码捐赠
</p>
    
      <p class="page__meta"><i class="fa fa-clock-o" aria-hidden="true"></i> 




  less than 1 minute read

</p>
    
  </article>
</div>

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


    <script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
    <div align="center" style="margin: 0 0;">
    <ins class="adsbygoogle"
         style="display:block; border-bottom: initial;"
         data-ad-client="ca-pub-7328585512091257"
         data-ad-slot="3049671934"
         data-ad-format="auto"></ins>
    </div>

    <div class="page__footer">
      <footer>
        <!-- start custom footer snippets -->

<!-- end custom footer snippets -->

        <div class="container">
  <div class="row justify-content-md-center">
    
    <div class="col">
      <ul>
        <p class="header">Resources</p>
        <li><a href="/docs/getting-started/">Getting started</a></li>
        <li><a href="/docs/users/">User Guide</a></li>
        <li><a href="/slides/">Slides</a></li>
        <li><a href="/users/faq/">Common Questions</a></li>
      </ul>
    </div>
    <div class="col">
      <ul>
        <p class="header">ASF</p>
        <li><a href="http://www.apache.org">Foundation</a></li>
        <li><a href="http://www.apache.org/licenses/">License</a></li>
        <li><a href="http://www.apache.org/events/current-event">Events</a></li>
        <li><a href="http://www.apache.org/foundation/sponsorship.html">Sponsorship</a></li>
        <li><a href="http://www.apache.org/foundation/thanks.html">Thanks</a></li>
      </ul>
    </div>
    <div class="col">
      <ul>
        <p class="header">Contribute</p>
        <li><a href="http://issues.apache.org/jira/browse/SCB">Report a Doc Issue</a></li>
        <li><a href="https://github.com/apache/servicecomb-website/edit/master/_posts/2019-11-07-servicecomb-accept-newcapec-institute-code-donation.md">Edit This Page on Github</a></li>
        <li><a href="/developers/submit-codes/">Code Submit Guide</a></li>
        <li><a href="/security">Security</a></li>
      </ul>
    </div>
    <div class="col">
      <ul class="social-icons">
        <p class="header">Community</p>
        <li>
            <a href="mailto:dev-subscribe@servicecomb.incubator.apache.org" rel="nofollow"><span class="mail">Mailing List</span></a>
        </li>
        <li>
            <a href="https://github.com/apache?q=ServiceComb" target="_blank"><span class="github">Github</span></a>
        </li>
        <li>
            <a href="https://twitter.com/ServiceComb" target="_blank"><span class="twitter">Twitter</span></a>
        </li>
        <li>
            <a href="/feed.xml" target="_blank"><span class="rss">Feed</span></a>
        </li>
      </ul>
    </div>
  </div>
</div>
<div class="page__footer-bottom">
  <div>&copy; 2019 Apache ServiceComb. Powered by <a href="http://jekyllrb.com" rel="nofollow">Jekyll</a> &amp; <a href="https://mademistakes.com/work/minimal-mistakes-jekyll-theme/" rel="nofollow">Minimal Mistakes</a>.</div>
  <div>All other marks mentioned may be trademarks or registered trademarks of their respective owners.</div>
</div>

      </footer>
    </div>

    <script src="/assets/js/main.min.js"></script>




  <script>
  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
  })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');

  ga('create', 'UA-101622733-1', 'auto');
  ga('send', 'pageview');
</script>







  
  <script>
    (function ($) {
    var $comments = $('.js-comments');

    $('#new_comment').submit(function () {
      var form = this;

      $(form).addClass('disabled');
      $('#comment-form-submit').html('<i class="fa fa-spinner fa-spin fa-fw"></i> Loading...');

      $.ajax({
        type: $(this).attr('method'),
        url: $(this).attr('action'),
        data: $(this).serialize(),
        contentType: 'application/x-www-form-urlencoded',
        success: function (data) {
          $('#comment-form-submit').html('Submitted');
          $('.page__comments-form .js-notice').removeClass('notice--danger');
          $('.page__comments-form .js-notice').addClass('notice--success');
          showAlert('Thanks for your comment! It will show on the site once it has been approved.');
        },
        error: function (err) {
          console.log(err);
          $('#comment-form-submit').html('Submit Comment');
          $('.page__comments-form .js-notice').removeClass('notice--success');
          $('.page__comments-form .js-notice').addClass('notice--danger');
          showAlert('Sorry, there was an error with your submission. Please make sure all required fields have been completed and try again.');
          $(form).removeClass('disabled');
        }
      });

      return false;
    });

    function showAlert(message) {
      $('.page__comments-form .js-notice').removeClass('hidden');
      $('.page__comments-form .js-notice-text').html(message);
    }
  })(jQuery);
  </script>







  </body>
</html>
