forked from Gitlink/forgeplus-react
page
This commit is contained in:
parent
3f01ac4ccb
commit
d86b07ae4a
|
@ -2,7 +2,7 @@ import React from 'react';
|
|||
|
||||
function Footer(props){
|
||||
return(
|
||||
<div className="footsnav">ddd</div>
|
||||
<div className="footsnav">Copyright © 中国开源云联盟 京ICP备05013730号-37</div>
|
||||
)
|
||||
}
|
||||
export default Footer;
|
|
@ -1,14 +1,10 @@
|
|||
import React from 'react';
|
||||
import Nav from './Nav';
|
||||
|
||||
function Header(props){
|
||||
return(
|
||||
<div className="headsnav">
|
||||
<div>
|
||||
<ul>
|
||||
<li>首页</li>
|
||||
<li>开源许可证</li>
|
||||
</ul>
|
||||
</div>
|
||||
<Nav />
|
||||
</div>
|
||||
)
|
||||
}
|
||||
|
|
|
@ -0,0 +1,11 @@
|
|||
import React from 'react';
|
||||
import Nav from './Nav';
|
||||
|
||||
function HomeHeader(props){
|
||||
return(
|
||||
<div className="homeHeader">
|
||||
<Nav />
|
||||
</div>
|
||||
)
|
||||
}
|
||||
export default HomeHeader;
|
|
@ -0,0 +1,17 @@
|
|||
import React, { Component } from 'react';
|
||||
import Header from './HomeHeader';
|
||||
import './Index.scss';
|
||||
|
||||
export function HomeHoc(Sub){
|
||||
return class II extends Component {
|
||||
render(){
|
||||
return(
|
||||
<div style={{height:"100%",overflow:"auto"}}>
|
||||
<Header {...this.props} {...this.state}/>
|
||||
<div className="homebody"><Sub {...this.props} {...this.state}/></div>
|
||||
</div>
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
export default HomeHoc;
|
|
@ -7,7 +7,7 @@ export function HOC(Sub){
|
|||
return class II extends Component {
|
||||
render(){
|
||||
return(
|
||||
<div style={{height:"100%"}}>
|
||||
<div style={{height:"100%",overflow:"auto"}}>
|
||||
<Header {...this.props} {...this.state}/>
|
||||
<div className="homebody"><Sub {...this.props} {...this.state}/></div>
|
||||
<Footer {...this.props} {...this.state}/>
|
||||
|
|
|
@ -5,27 +5,41 @@
|
|||
top:0px;
|
||||
height: 60px;
|
||||
line-height: 60px;
|
||||
background-color: #fff;
|
||||
box-shadow: 0px 0px 10px rgba(0,0,0,0.1);
|
||||
& > div{
|
||||
width:1200px;
|
||||
margin: 0px auto;
|
||||
ul{
|
||||
display: flex;
|
||||
}
|
||||
.homeHeader{
|
||||
position: fixed;
|
||||
width: 100%;
|
||||
left: 0px;
|
||||
top:0px;
|
||||
height: 60px;
|
||||
line-height: 60px;
|
||||
}
|
||||
.headDiv{
|
||||
width:1200px;
|
||||
margin: 0px auto;
|
||||
.headerNav{
|
||||
display: flex;
|
||||
height: 100%;
|
||||
li{
|
||||
padding:0px 18px;
|
||||
height: 100%;
|
||||
li{
|
||||
padding:0px 18px;
|
||||
height: 100%;
|
||||
font-size: 16px;
|
||||
}
|
||||
font-size: 16px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.homebody{
|
||||
padding-top: 60px;
|
||||
}
|
||||
.footsnav{
|
||||
position: absolute;
|
||||
width: 100%;
|
||||
bottom: 0px;
|
||||
left: 0px;
|
||||
// position: absolute;
|
||||
// width: 100%;
|
||||
// bottom: 0px;
|
||||
// left: 0px;
|
||||
text-align: center;
|
||||
padding-bottom:10px;
|
||||
background-color: #fff;
|
||||
color: #999;
|
||||
}
|
|
@ -0,0 +1,14 @@
|
|||
import React from 'react';
|
||||
import { Link } from 'react-router-dom';
|
||||
|
||||
function Nav(props){
|
||||
return(
|
||||
<div className="headDiv">
|
||||
<ul className="headerNav">
|
||||
<li><Link to={`/`}>首页</Link></li>
|
||||
<li><Link to={`/license/preface`}>开源许可证</Link></li>
|
||||
</ul>
|
||||
</div>
|
||||
)
|
||||
}
|
||||
export default Nav;
|
|
@ -1,23 +1,9 @@
|
|||
import React from 'react';
|
||||
import { HOC } from './HOC/Index';
|
||||
import {Route,Switch} from 'react-router-dom';
|
||||
import Loadable from 'react-loadable';
|
||||
import Loading from '../Loading';
|
||||
import { HomeHoc } from './HOC/HomeHoc';
|
||||
|
||||
const LicenseIndex = Loadable({
|
||||
loader: () => import('./license/Index'),
|
||||
loading: Loading,
|
||||
})
|
||||
function Index(props){
|
||||
return(
|
||||
<Switch {...props}>
|
||||
<Route
|
||||
path="/license"
|
||||
render={(p) => (
|
||||
<LicenseIndex {...props} {...p} />
|
||||
)}
|
||||
></Route>
|
||||
</Switch>
|
||||
<div>dsfdsdf首页</div>
|
||||
)
|
||||
}
|
||||
export default HOC(Index);
|
||||
export default HomeHoc(Index);
|
|
@ -0,0 +1,107 @@
|
|||
import React from 'react';
|
||||
import Title from '../../forge/Component/Title';
|
||||
import RenderHtml from '../../components/render-html';
|
||||
|
||||
function FAQ(props){
|
||||
const value = `<div class="content">
|
||||
<p><strong>木兰宽松许可证,第1版(Mulan PSL v1)的主要特点是什么?</strong></p>
|
||||
<p class="tid2 mb2">Mulan PSL v1许可证采用中英文表达,中英文表述具有同等法律效力,简化了中国使用者进行法律解释时的复杂度;许可证针对现有诉讼问题更清晰地明确版权、专利和商标授权,提供更完善的法律保护;许可证遵从表述简洁原则,去除冗余,条款简洁,容易理解,兼容性好。</p>
|
||||
|
||||
<p><strong>木兰宽松许可证,第1版(Mulan PSL v1)与业界主流许可证的主要异同是什么?</strong></p>
|
||||
<p class="tid2">Mulan PSL v1与BSD 3-clause License与Apache License V2.0在声明义务、专利许可、对用户专利维权限制及版权许可上均有差异,在商标许可上无差异,见下表:</p>
|
||||
<div class="mb2">
|
||||
<table class="ui small celled table">
|
||||
<thead>
|
||||
<tr>
|
||||
<th style="width:10%"></th>
|
||||
<th class="center aligned" style="width:30%"><strong>Mulan PSL v1</strong></th>
|
||||
<th class="center aligned" style="width:30%"><strong>BSD 3-clause License</strong></th>
|
||||
<th class="center aligned" style="width:30%"><strong>Apache License V2.0</strong></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr class="top aligned">
|
||||
<td><strong>声明义务</strong></td>
|
||||
<td>
|
||||
<p>1,分发时附带许可证,保留免责等声明</p>
|
||||
</td>
|
||||
<td>
|
||||
<p>1,分发时附带许可证,保留免责等声明;</p>
|
||||
<p>2,其他使用时附带许可证,保留免责等声明</p>
|
||||
</td>
|
||||
<td>
|
||||
<p>1,分发时附带许可证;</p>
|
||||
<p>2,分发修改版时应明显声明已修改的文件;</p>
|
||||
<p>3,分发修改版源代码时保留各种声明;</p>
|
||||
<p>4,如许可软件含Notice文件,则分发修改版时应带其中的归属声明</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="top aligned">
|
||||
<td><strong>专利许可</strong></td>
|
||||
<td>
|
||||
<p>1,原始许可人及其关联实体提供专利许可;</p>
|
||||
<p>2,后续贡献者及其关联实体提供专利许可;</p>
|
||||
</td>
|
||||
<td>
|
||||
<p>无明确专利许可</p>
|
||||
</td>
|
||||
<td>
|
||||
<p>1,原始许可人提供专利许可;</p>
|
||||
<p>2,后续贡献者及其关联实体提供专利许可;</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="top aligned">
|
||||
<td><strong>对用户专利维权的限制</strong></td>
|
||||
<td>
|
||||
<p>1,用户及其关联实体如直接对许可软件发起专利诉讼,专利许可终止;</p>
|
||||
<p>2,发起非诉讼维权(如行政维权)专利许可终止;</p>
|
||||
<p>3,通过间接方式实施上述行为,专利许可终止</p>
|
||||
</td>
|
||||
<td>无</td>
|
||||
<td>
|
||||
<p>1,用户及其关联实体如直接对许可软件发起专利诉讼,专利许可终止;</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="top aligned">
|
||||
<td><strong>版权许可</strong></td>
|
||||
<td>
|
||||
<p>1,原始版权人及其关联公司提供版权许可;</p>
|
||||
<p>2,后续贡献者及其关联实体提供版权许可;</p>
|
||||
</td>
|
||||
<td>
|
||||
<p>所有贡献者授予版权许可</p>
|
||||
</td>
|
||||
<td>
|
||||
<p>1,原始许可人提供版权许可;</p>
|
||||
<p>2,后续贡献者及其关联实体提供版权许可;</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr class="top aligned">
|
||||
<td><strong>商标许可</strong></td>
|
||||
<td>无</td>
|
||||
<td>无</td>
|
||||
<td>无</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
</div>
|
||||
|
||||
<p><strong>木兰宽松许可证,第1版(Mulan PSL v1)与业界主流许可证兼容情况如何?</strong></p>
|
||||
<p class="tid2">许可证的兼容性评判并无统一标准。我们从Mulan PSL v1的条款及目的出发,认为Mulan PSL v1与BSD类许可证类似,兼容性很好。BSD、MIT类宽松许可证兼容Mulan PSL v1许可证;Mulan PSL v1兼容Apache License v2.0、L/GPLv2、L/GPLv3等许可证。即,许可在BSD、MIT类许可证下的代码可以贡献到Mulan PSL v1的项目中,许可在Mulan PSL v1下的代码可以贡献到Apache License V2.0、L/GPLv2或L/GPLv3等的项目中。</p>
|
||||
<p class="tid2">注意,许可证A兼容许可证B(A许可证是B许可证 Compatible)是指,A授权的作品与B授权的作品经过修改或合并,可以使用B对作品的整体进行授权。兼容性是有方向的,A兼容B,但B不一定兼容A。</p>
|
||||
|
||||
|
||||
</div>`;
|
||||
return(
|
||||
<div>
|
||||
<Title>常见问题</Title>
|
||||
<div class="content">
|
||||
<div className="pre">
|
||||
<RenderHtml className="break_word_comments imageLayerParent" value={value} url={props.history.location}/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
)
|
||||
}
|
||||
export default FAQ;
|
|
@ -10,28 +10,61 @@ const Preface = Loadable({
|
|||
loader: () => import('./Preface'),
|
||||
loading: Loading,
|
||||
})
|
||||
const PSL = Loadable({
|
||||
loader: () => import('./PSL'),
|
||||
loading: Loading,
|
||||
})
|
||||
const Public = Loadable({
|
||||
loader: () => import('./Public'),
|
||||
loading: Loading,
|
||||
})
|
||||
const FAQ = Loadable({
|
||||
loader: () => import('./FAQ'),
|
||||
loading: Loading,
|
||||
})
|
||||
function Index(props){
|
||||
const pathname = props.history.location.pathname;
|
||||
return(
|
||||
<div className="panelsBox">
|
||||
<Box>
|
||||
<Short>
|
||||
<ul className="leftmenus">
|
||||
<li><Link to={``}>序言</Link></li>
|
||||
<li><Link to={``}>木兰宽松许可证</Link></li>
|
||||
<li><Link to={``}>木兰公共许可证</Link></li>
|
||||
<li><Link to={``}>常见问题</Link></li>
|
||||
<li className={pathname.indexOf(`/license/preface`) > -1 ?"active":""}><Link to={`/license/preface`}>引言</Link></li>
|
||||
<li className={pathname.indexOf(`/license/psl`) > -1 ?"active":""}><Link to={`/license/psl/1`}>木兰宽松许可证</Link></li>
|
||||
<li className={pathname.indexOf(`/license/public`) > -1 ?"active":""}><Link to={`/license/public/1`}>木兰公共许可证</Link></li>
|
||||
<li className={pathname.indexOf(`/license/faq`) > -1 ?"active":""}><Link to={`/license/faq`}>常见问题</Link></li>
|
||||
</ul>
|
||||
</Short>
|
||||
<Long>
|
||||
<Gap>
|
||||
<Switch {...props}>
|
||||
<Route
|
||||
path="/license/preface"
|
||||
render={(p) => (
|
||||
<Preface {...props} {...p} />
|
||||
)}
|
||||
></Route>
|
||||
</Switch>
|
||||
<div className="boxshadow">
|
||||
<Switch {...props}>
|
||||
<Route
|
||||
path="/license/preface"
|
||||
render={(p) => (
|
||||
<Preface {...props} {...p} />
|
||||
)}
|
||||
></Route>
|
||||
<Route
|
||||
path="/license/psl/:id"
|
||||
render={(p) => (
|
||||
<PSL {...props} {...p} />
|
||||
)}
|
||||
></Route>
|
||||
<Route
|
||||
path="/license/public/:id"
|
||||
render={(p) => (
|
||||
<Public {...props} {...p} />
|
||||
)}
|
||||
></Route>
|
||||
<Route
|
||||
path="/license/faq"
|
||||
render={(p) => (
|
||||
<FAQ {...props} {...p} />
|
||||
)}
|
||||
></Route>
|
||||
</Switch>
|
||||
</div>
|
||||
</Gap>
|
||||
</Long>
|
||||
</Box>
|
||||
|
|
|
@ -4,12 +4,26 @@
|
|||
.leftmenus{
|
||||
box-shadow: 0px 0px 10px rgba(0,0,0,0.1);
|
||||
li{
|
||||
height: 48px;
|
||||
line-height: 48px;
|
||||
height: 52px;
|
||||
line-height: 52px;
|
||||
border-bottom: 1px solid #eee;
|
||||
position: relative;
|
||||
&:last-child{
|
||||
border: none;
|
||||
}
|
||||
&.active::before{
|
||||
position: absolute;
|
||||
content: "";
|
||||
left: 0px;
|
||||
height: 30px;
|
||||
width: 3px;
|
||||
top:50%;
|
||||
margin-top: -15px;
|
||||
background-color: #4d9fef;
|
||||
}
|
||||
&.active a,a:hover{
|
||||
color: #4d9fef;
|
||||
}
|
||||
a{
|
||||
display: block;
|
||||
padding:0px 20px;
|
||||
|
@ -18,4 +32,29 @@
|
|||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
.boxshadow{
|
||||
box-shadow: 0px 0px 10px rgba(0,0,0,0.1);
|
||||
}
|
||||
.content{
|
||||
padding:15px 30px;
|
||||
font-size: 15px;
|
||||
line-height: 24px;
|
||||
text-indent: 2em;
|
||||
color: #333;
|
||||
.pre > pre {
|
||||
font-family: Menlo,Monaco,Consolas,"Courier New",monospace;
|
||||
padding: 12px;
|
||||
margin: 0 0 10px;
|
||||
font-size: 13px;
|
||||
line-height: 1.5;
|
||||
word-break: break-all;
|
||||
white-space: pre-wrap;
|
||||
background-color: #f5f5f5;
|
||||
border-radius: 0;
|
||||
border: 1px solid #ccc;
|
||||
}
|
||||
.markdown-body table td{
|
||||
word-break: break-word;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,148 @@
|
|||
import React, { useEffect, useState } from 'react';
|
||||
import Title from '../../forge/Component/Title';
|
||||
import RenderHtml from '../../components/render-html';
|
||||
import { Dropdown , Menu } from 'antd';
|
||||
import { Link } from 'react-router-dom';
|
||||
|
||||
const list = {
|
||||
1:`<p><strong>木兰宽松许可证, 第1版</strong></p>
|
||||
<p style={{marginBottom:"20px"}}>2019年8月</p>
|
||||
|
||||
<p style={{textIndent:"2em"}}>您对“软件”的复制、使用、修改及分发受木兰宽松许可证,第1版(“本许可证”)的如下条款的约束:</p>
|
||||
<p><strong>0. 定义</strong></p>
|
||||
<div style={{textIndent:"2em"}}>
|
||||
<p><strong>“软件”</strong>是指由“贡献”构成的许可在“本许可证”下的程序和相关文档的集合。</p>
|
||||
<p><strong>“贡献者”</strong>是指将受版权法保护的作品许可在“本许可证”下的自然人或“法人实体”。</p>
|
||||
<p><strong>“法人实体”</strong>是指提交贡献的机构及其“关联实体”。</p>
|
||||
<p><strong>“关联实体”</strong>是指,对“本许可证”下的一方而言,控制、受控制或与其共同受控制的机构,此处的控制是指有受控方或共同受控方至少50%直接或间接的投票权、资金或其他有价证券。</p>
|
||||
<p><strong>“贡献”</strong>是指由任一“贡献者”许可在“本许可证”下的受版权法保护的作品。</p>
|
||||
</div>
|
||||
|
||||
<p><strong>1. 授予版权许可</strong></p>
|
||||
<div style={{textIndent:"2em"}}>
|
||||
<p>每个“贡献者”根据“本许可证”授予您永久性的、全球性的、免费的、非独占的、不可撤销的版权许可,您可以复制、使用、修改、分发其“贡献”,不论修改与否。</p>
|
||||
</div>
|
||||
|
||||
<p><strong>2. 授予专利许可</strong></p>
|
||||
<div style={{textIndent:"2em"}}>
|
||||
<p>每个“贡献者”根据“本许可证”授予您永久性的、全球性的、免费的、非独占的、不可撤销的(根据本条规定撤销除外)专利许可,供您制造、委托制造、使用、许诺销售、销售、进口其“贡献”或以其他方式转移其“贡献”。前述专利许可仅限于“贡献者”现在或将来拥有或控制的其“贡献”本身或其“贡献”与许可“贡献”时的“软件”结合而将必然会侵犯的专利权利要求,不包括仅因您或他人修改“贡献”或其他结合而将必然会侵犯到的专利权利要求。如您或您的“关联实体”直接或间接地(包括通过代理、专利被许可人或受让人),就“软件”或其中的“贡献”对任何人发起专利侵权诉讼(包括反诉或交叉诉讼)或其他专利维权行动,指控其侵犯专利权,则“本许可证”授予您对“软件”的专利许可自您提起诉讼或发起维权行动之日终止。</p>
|
||||
</div>
|
||||
|
||||
<p><strong>3. 无商标许可</strong></p>
|
||||
<div style={{textIndent:"2em"}}>
|
||||
<p>“本许可证”不提供对“贡献者”的商品名称、商标、服务标志或产品名称的商标许可,但您为满足第4条规定的声明义务而必须使用除外。</p>
|
||||
</div>
|
||||
|
||||
<p><strong>4. 分发限制</strong></p>
|
||||
<div style={{textIndent:"2em"}}>
|
||||
<p>您可以在任何媒介中将“软件”以源程序形式或可执行形式重新分发,不论修改与否,但您必须向接收者提供“本许可证”的副本,并保留“软件”中的版权、商标、专利及免责声明。</p>
|
||||
</div>
|
||||
|
||||
<p><strong>5. 免责声明与责任限制</strong></p>
|
||||
<div style={{textIndent:"2em"}}>
|
||||
<p>“软件”及其中的“贡献”在提供时不带任何明示或默示的担保。在任何情况下,“贡献者”或版权所有者不对任何人因使用“软件”或其中的“贡献”而引发的任何直接或间接损失承担责任,不论因何种原因导致或者基于何种法律理论,即使其曾被建议有此种损失的可能性。</p>
|
||||
</div>
|
||||
|
||||
<p><strong>条款结束</strong></p>
|
||||
<p><strong>如何将木兰宽松许可证,第1版,应用到您的软件</strong></p>
|
||||
<p>如果您希望将木兰宽松许可证,第1版,应用到您的新软件,为了方便接收者查阅,建议您完成如下三步:</p>
|
||||
<p>1, 请您补充如下声明中的空白,包括软件名、软件的首次发表年份以及您作为版权人的名字;</p>
|
||||
<p>2, 请您在软件包的一级目录下创建以“LICENSE”为名的文件,将整个许可证文本放入该文件中;</p>
|
||||
<p>3, 请将如下声明文本放入每个源文件的头部注释中。</p>
|
||||
<pre>Copyright (c) [2019] [name of copyright holder]
|
||||
[Software Name] is licensed under the Mulan PSL v1.
|
||||
You can use this software according to the terms and conditions of the Mulan PSL v1.
|
||||
You may obtain a copy of Mulan PSL v1 at:
|
||||
http://license.coscl.org.cn/MulanPSL
|
||||
THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY OR FIT FOR A PARTICULAR
|
||||
PURPOSE.
|
||||
See the Mulan PSL v1 for more details.</pre>`,
|
||||
2:`<p><strong>木兰宽松许可证, 第2版</strong></p>
|
||||
<p style={{marginBottom:"20px"}}>2020年1月</p>
|
||||
<p style={{textIndent:"2em"}}>您对“软件”的复制、使用、修改及分发受木兰宽松许可证,第2版(“本许可证”)的如下条款的约束:</p>
|
||||
<div style={{textIndent:"2em"}}>
|
||||
<p><strong>0. 定义</strong></p>
|
||||
<p><strong>“软件”</strong> 是指由“贡献”构成的许可在“本许可证”下的程序和相关文档的集合。</p>
|
||||
<p><strong>“贡献”</strong> 是指由任一“贡献者”许可在“本许可证”下的受版权法保护的作品。</p>
|
||||
<p><strong>“贡献者”</strong> 是指将受版权法保护的作品许可在“本许可证”下的自然人或“法人实体”。</p>
|
||||
<p><strong>“法人实体”</strong> 是指提交贡献的机构及其“关联实体”。</p>
|
||||
<p><strong>“关联实体”</strong> 是指,对“本许可证”下的行为方而言,控制、受控制或与其共同受控制的机构,此处的控制是指有受控方或共同受控方至少50%直接或间接的投票权、资金或其他有价证券。</p>
|
||||
</div>
|
||||
<div style={{textIndent:"2em"}}>
|
||||
<p><strong>1. 授予版权许可</strong></p>
|
||||
<p>每个“贡献者”根据“本许可证”授予您永久性的、全球性的、免费的、非独占的、不可撤销的版权许可,您可以复制、使用、修改、分发其“贡献”,不论修改与否。</p>
|
||||
</div>
|
||||
<div style={{textIndent:"2em"}}>
|
||||
<p><strong>2. 授予专利许可</strong></p>
|
||||
<p>每个“贡献者”根据“本许可证”授予您永久性的、全球性的、免费的、非独占的、不可撤销的(根据本条规定撤销除外)专利许可,供您制造、委托制造、使用、许诺销售、销售、进口其“贡献”或以其他方式转移其“贡献”。前述专利许可仅限于“贡献者”现在或将来拥有或控制的其“贡献”本身或其“贡献”与许可“贡献”时的“软件”结合而将必然会侵犯的专利权利要求,不包括对“贡献”的修改或包含“贡献”的其他结合。如果您或您的“关联实体”直接或间接地,就“软件”或其中的“贡献”对任何人发起专利侵权诉讼(包括反诉或交叉诉讼)或其他专利维权行动,指控其侵犯专利权,则“本许可证”授予您对“软件”的专利许可自您提起诉讼或发起维权行动之日终止。</p>
|
||||
</div>
|
||||
<div style={{textIndent:"2em"}}>
|
||||
<p><strong>3. 无商标许可</strong></p>
|
||||
<p>“本许可证”不提供对“贡献者”的商品名称、商标、服务标志或产品名称的商标许可,但您为满足第4条规定的声明义务而必须使用除外。</p>
|
||||
</div>
|
||||
<div style={{textIndent:"2em"}}>
|
||||
<p><strong>4. 分发限制</strong></p>
|
||||
<p>您可以在任何媒介中将“软件”以源程序形式或可执行形式重新分发,不论修改与否,但您必须向接收者提供“本许可证”的副本,并保留“软件”中的版权、商标、专利及免责声明。</p>
|
||||
</div>
|
||||
|
||||
<div style={{textIndent:"2em"}}>
|
||||
<p><strong>5. 免责声明与责任限制</strong></p>
|
||||
<p><strong>“软件”及其中的“贡献”在提供时不带任何明示或默示的担保。在任何情况下,“贡献者”或版权所有者不对任何人因使用“软件”或其中的“贡献”而引发的任何直接或间接损失承担责任,不论因何种原因导致或者基于何种法律理论,即使其曾被建议有此种损失的可能性。</strong></p>
|
||||
</div>
|
||||
|
||||
<div style={{textIndent:"2em"}}>
|
||||
<p><strong>6. 语言</strong></p>
|
||||
<p><strong>“本许可证”以中英文双语表述,中英文版本具有同等法律效力。如果中英文版本存在任何冲突不一致,以中文版为准。</strong></p>
|
||||
</div>
|
||||
|
||||
<p style={{marginBottom:"20px"}}><strong>条款结束</strong></p>
|
||||
|
||||
<p><strong>如何将木兰宽松许可证,第2版,应用到您的软件</strong></p>
|
||||
<p>如果您希望将木兰宽松许可证,第2版,应用到您的新软件,为了方便接收者查阅,建议您完成如下三步:</p>
|
||||
<p>1, 请您补充如下声明中的空白,包括软件名、软件的首次发表年份以及您作为版权人的名字;</p>
|
||||
<p>2, 请您在软件包的一级目录下创建以“LICENSE”为名的文件,将整个许可证文本放入该文件中;</p>
|
||||
<p>3, 请将如下声明文本放入每个源文件的头部注释中。</p>
|
||||
<pre>Copyright (c) [Year] [name of copyright holder]
|
||||
[Software Name] is licensed under Mulan PSL v2.
|
||||
You can use this software according to the terms and conditions of the Mulan PSL v2.
|
||||
You may obtain a copy of Mulan PSL v2 at:
|
||||
http://license.coscl.org.cn/MulanPSL2
|
||||
THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
|
||||
EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
|
||||
MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
|
||||
See the Mulan PSL v2 for more details.</pre>`
|
||||
}
|
||||
function PSL(props){
|
||||
const [value , setValue ] = useState(undefined);
|
||||
const id = props.match.params.id;
|
||||
|
||||
useEffect(()=>{
|
||||
if(id && id!==value){
|
||||
setValue(parseInt(id));
|
||||
console.log(id);
|
||||
}
|
||||
},[id])
|
||||
|
||||
const menus = (
|
||||
<Menu>
|
||||
<Menu.Item><Link to={`/license/psl/1`}>第一版</Link></Menu.Item>
|
||||
<Menu.Item><Link to={`/license/psl/2`}>第二版</Link></Menu.Item>
|
||||
</Menu>
|
||||
)
|
||||
|
||||
return(
|
||||
<div>
|
||||
<Title>木兰宽松许可证<Dropdown overlay={menus} placement="bottomRight"><i className="iconfont icon-sandian font-17 color-grey-9"></i></Dropdown></Title>
|
||||
<div class="content">
|
||||
<div className="pre">
|
||||
{
|
||||
value &&
|
||||
<RenderHtml className="break_word_comments imageLayerParent" value={list[value]} url={props.history.location}/>
|
||||
}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
)
|
||||
}
|
||||
export default PSL;
|
|
@ -1,9 +1,22 @@
|
|||
import React from 'react';
|
||||
|
||||
import Title from '../../forge/Component/Title';
|
||||
|
||||
function Preface(props){
|
||||
return(
|
||||
<div>序言</div>
|
||||
<div>
|
||||
<Title>引言</Title>
|
||||
<div class="content">
|
||||
<p>开源(Open Source)是人类在互联网发展进程中探索出的一种面向全球的大规模协作生产方式,它以开放共享、合作共赢为宗旨,有效地推进了全球化进程。当前,我国开发者和企业参与开源的热情不断高涨,开源产业也逐步完善;然而,我国面向开源的环境、技术、人才、生态等方面还存在诸多问题。推动国内外开源的交流与合作,促进产学研用结合,保护广大开源参与者的利益,造就有影响力、可持续发展的开源生态系统,是相关行业当前的一项重要任务。</p>
|
||||
<p>开源许可证是对开源软件的使用、复制、修改和分发等行为进行规范和约束的一种具有法律效力的格式合同,是开源运动的基石。目前,经开源促进会(OSI)认证的开源软件许可证共有 80 多个,它们都由国外或国际组织机构使用英文发布。对于来自世界各地的广大开源参与者而言,现有许可证中的条款的表述比较晦涩,容易因理解有误而违约。同时,很多许可证对被许可方责任和义务的表述不够完善,容易导致难以解决的法律纠纷。此外,当前国际形势需要来自全球不同地方的更多声音和力量来倡导开源。</p>
|
||||
<p>基于以上考虑,北京大学作为国家重点研发计划“云计算和大数据开源社区生态系统”的子任务牵头单位,依托全国信标委云计算标准工作组和中国开源云联盟,联合国内开源生态圈产学研各界优势团队、开源社区以及拥有丰富知识产权相关经验的众多律师,在对现有主流开源协议全面分析的基础上,共同起草、修订并发布了木兰系列开源许可证。</p>
|
||||
<p>第一发,木兰宽松许可证(Mulan PSL v1),具有以下特点:</p>
|
||||
<p>1,许可证内容以中英文双语表述,中英文版本具有同等法律效力,方便更多的开源参与者阅读使用,简化了中国使用者进行法律解释时的复杂度。</p>
|
||||
<p>2,许可证明确授予用户永久性、全球性、免费的、非独占的、不可撤销的版权和专利许可,并针对目前专利联盟存在的互诉漏洞问题,明确规定禁止“贡献者”或“关联实体”直接或间接地(通过代理、专利被许可人或受让人)进行专利诉讼或其他维权行动,否则终止专利授权。</p>
|
||||
<p>3,许可证明确不提供对“贡献者”的商品名称、商标、服务标志等的商标许可,保护“贡献者”的切身利益。</p>
|
||||
<p>4,许可证经技术专家和法律专家共同修订,在明确合同双方行为约束的前提下尽可能地精简条款、优化表述,降低产生法律纠纷的风险。</p>
|
||||
<p>贡献单位:北京大学,中国电子技术标准化研究院,西南大学,中国科学院软件所,开源社,中移(苏州)软件技术有限公司,华为技术有限公司,华云数据集团有限公司,普元信息技术股份有限公司,中兴通讯股份有限公司,中标软件有限公司等</p>
|
||||
</div>
|
||||
</div>
|
||||
)
|
||||
}
|
||||
export default Preface;
|
|
@ -0,0 +1,122 @@
|
|||
import React, { useEffect, useState } from 'react';
|
||||
import Title from '../../forge/Component/Title';
|
||||
import RenderHtml from '../../components/render-html';
|
||||
import { Dropdown , Menu } from 'antd';
|
||||
import { Link } from 'react-router-dom';
|
||||
|
||||
const list = {
|
||||
1:`<p><strong>木兰公共许可证,第1版</strong></p>
|
||||
<p style={{marginBottom:"2em"}}>2020年12月</p>
|
||||
|
||||
<p style={{textIndent:"2em"}}>您对“贡献”的复制、使用、修改及分发受木兰公共许可证, 第1版(“本许可证”)的如下条款的约束:</p>
|
||||
<p><strong>0. 定义</strong></p>
|
||||
<div style={{textIndent:"2em"}}>
|
||||
<p><strong>“贡献”</strong>是指由“贡献者”许可在“本许可证”下的受版权法保护的作品,包括最初“贡献者”许可在“本许可证”下的作品及后续“贡献者”许可在“本许可证”下的“衍生作品”。</p>
|
||||
<p><strong>“贡献者”</strong>是指将受版权法保护的作品许可在“本许可证”下的自然人或“法人实体”。</p>
|
||||
<p><strong>“法人实体”</strong>是指提交贡献的机构及其“关联实体”。</p>
|
||||
<p><strong>“关联实体”</strong>是指,对“本许可证”下的行为方而言,控制、受控制或与其共同受控制的机构,此处的控制是指有受控方或共同受控方至少50%直接或间接的投票权、资金或其他有价证券。</p>
|
||||
<p><strong>“衍生作品”</strong>是指基于“贡献”创作的作品,具体包括对全部或部分“贡献”进行修改、重写、翻译、注释、组合或与之链接(包括动态链接或静态链接)而形成的作品。仅与“贡献”进行进程间通信或系统调用的作品是独立作品,不属于“衍生作品”。</p>
|
||||
<p><strong>“对应源代码”</strong>是指生成、安装和(对于可执行作品)运行目标代码所需的所有源文件和与之关联的接口定义文件,以及控制这些活动的脚本,但不包括编译环境、编译工具、云服务平台(如果有)。</p>
|
||||
<p><strong>“分发”</strong>是指通过任何媒介向他人提供“贡献”或“衍生作品”的行为,以及利用“贡献”或“衍生作品”通过网络远程给用户提供服务的行为,例如通过利用“贡献”或“衍生作品”搭建的云服务平台提供在线服务的行为。</p>
|
||||
</div>
|
||||
|
||||
<p><strong>1. 授予版权许可</strong></p>
|
||||
<div style={{textIndent:"2em"}}>
|
||||
<p>每个“贡献者”根据“本许可证”授予您永久性的、全球性的、免费的、非独占的、不可撤销的版权许可,您可以复制、使用、修改、“分发”其“贡献”或“衍生作品”,不论修改与否。</p>
|
||||
</div>
|
||||
|
||||
<p><strong>2. 授予专利许可</strong></p>
|
||||
<div style={{textIndent:"2em"}}>
|
||||
<p>每个“贡献者”根据“本许可证”授予您永久性的、全球性的、免费的、非独占的、不可撤销的(根据本条规定撤销除外)专利许可,供您制造、委托制造、使用、许诺销售、销售、进口其“贡献”或以其他方式转移其“贡献”。前述专利许可仅限于“贡献者”现在或将来拥有或控制的其“贡献”中的专利权利要求,不包括仅因您或他人修改“贡献”而将必然会侵犯到的专利权利要求。如果您或您的“关联实体”直接或间接地,就“贡献”对任何人发起专利侵权诉讼(包括反诉或交叉诉讼)或其他专利维权行动,指控其侵犯专利权,则本许可证授予您对“贡献”的专利许可自您提起诉讼或发起维权行动之日终止。</p>
|
||||
</div>
|
||||
|
||||
<p><strong>3. 无商标许可</strong></p>
|
||||
<div style={{textIndent:"2em"}}>
|
||||
<p>“本许可证”不提供对“贡献者”的商品名称、商标、服务标志或产品名称的商标许可,但您为满足第4条规定的声明义务而必须使用除外。</p>
|
||||
</div>
|
||||
|
||||
<p><strong>4. 分发限制</strong></p>
|
||||
<div style={{textIndent:"2em"}}>
|
||||
<p>您可以在任何媒介中将您接收到的“贡献”或您的“衍生作品”以源程序形式或可执行形式重新“分发”,但必须满足下列条件:</p>
|
||||
<p>(1)您必须向接收者提供“本许可证”的副本,并保留“贡献”中的版权、商标、专利及免责声明;并且,</p>
|
||||
<p>(2)如果您“分发”您接收到的“贡献”,您必须使用“本许可证”提供该“贡献”的源代码副本;如果您 “分发”您的“衍生作品”,您必须:</p>
|
||||
<p>(i)随“衍生作品”向接收者提供使用“本许可证”“分发”的您的“衍生作品”的“对应源代码”。如果您通过下载链接提供前述“对应源代码”,则您应将下载链接地址置于“衍生作品”或其随附文档中的明显位置,有效期不少于自该“衍生作品”“分发”之日起三年,并确保接收者可以获得“对应源代码”;或者,</p>
|
||||
<p>(ii)随“衍生作品”向接收者提供一个书面要约,表明您愿意提供使用“本许可证”“分发”的您“衍生作品”的“对应源代码”。书面要约应放在“衍生作品”中的明显位置,并确保接收者根据书面要约可获取“对应源代码”的时间从您接到该请求之日起不得超过三个月,且有效期不少于自该“衍生作品”“分发”之日起三年。</p>
|
||||
</div>
|
||||
|
||||
<p><strong>5. 违约与终止</strong></p>
|
||||
<div style={{textIndent:"2em"}}>
|
||||
<p>如果您违反“本许可证”,任何“贡献者”有权书面通知您终止其依据“本许可证”授予您的许可。该“贡献者”授予您的许可从您接到其终止通知之日起终止。但在如下两种情形下,即使您收到“贡献者”的通知也并不终止您的许可:</p>
|
||||
<p>(1)您在接到终止通知之前已停止所有违反行为;</p>
|
||||
<p>(2)您是首次收到该“贡献者”根据“本许可证”发出的书面终止通知,您在收到该通知后30天内停止所有违反行为。</p>
|
||||
<p>只要下游接收者遵守“本许可证”的相关规定,您在“本许可证”下的许可终止,不影响下游接收者根据“本许可证”享有的权利。</p>
|
||||
</div>
|
||||
|
||||
<p><strong>6. 例外</strong></p>
|
||||
<div style={{textIndent:"2em"}}>
|
||||
<p>如果您将“贡献”或您的“衍生作品”与采用GPLv3、AGPLv3、或前述许可证的后续版本(以下简称“GPL类许可证”)的作品结合,且根据“GPL类许可证”的要求您有义务将形成的结合作品以对应的“GPL类许可证”许可的,您可以根据对应的“GPL类许可证”许可结合作品,只要您在分发该结合作品的同时向接收者提供“本许可证”的副本,并保留“贡献”中的版权、商标、专利及免责声明。任何“贡献者”不会因您根据前述原因选择“GPL类许可证”许可而授予该结合作品的接收者更多权利。</p>
|
||||
</div>
|
||||
|
||||
<p><strong>7. 免责声明与责任限制</strong></p>
|
||||
<div style={{textIndent:"2em"}}>
|
||||
<p><strong>“贡献”在提供时不带任何明示或默示的担保。在任何情况下,“贡献者”或版权所有者不对任何人因使用“贡献”而引发的任何直接或间接损失承担责任,不论因何种原因导致或者基于何种法律理论,即使其曾被建议有此种损失的可能性。</strong></p>
|
||||
</div>
|
||||
|
||||
<p><strong>8. 语言</strong></p>
|
||||
<div style={{textIndent:"2em"}}>
|
||||
<p><strong>“本许可证”以中英文双语表述,中英文版本具有同等法律效力。如果中英文版本存在任何冲突不一致,以中文版为准。</strong></p>
|
||||
</div>
|
||||
|
||||
<p><strong>条款结束</strong></p>
|
||||
|
||||
<p> </p>
|
||||
|
||||
<p><strong>如何将木兰公共许可证,第1版,应用到您的软件</strong></p>
|
||||
<p>如果您希望将木兰公共许可证,第1版,应用到您的新软件,为了方便接收者查阅,建议您完成如下三步:</p>
|
||||
<p>1, 请您补充如下声明中的空白,包括软件名、软件的首次发表年份以及您作为版权人的名字;</p>
|
||||
<p>2, 请您在软件包的一级目录下创建以“LICENSE”为名的文件,将整个许可证文本放入该文件中;</p>
|
||||
<p>3, 请将如下声明文本放入每个源文件的头部注释中。</p>
|
||||
<pre>Copyright (c) [Year] [name of copyright holder]
|
||||
[Software Name] is licensed under Mulan PubL v1.
|
||||
You can use this software according to the terms and conditions of the Mulan PubL v1.
|
||||
You may obtain a copy of Mulan PubL v1 at:
|
||||
http://license.coscl.org.cn/MulanPubL-1.0
|
||||
THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
|
||||
EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
|
||||
MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
|
||||
See the Mulan PubL v1 for more details.
|
||||
</pre>`
|
||||
}
|
||||
function Public(props){
|
||||
const [value , setValue ] = useState(undefined);
|
||||
const id = props.match.params.id;
|
||||
|
||||
useEffect(()=>{
|
||||
if(id && id!==value){
|
||||
setValue(parseInt(id));
|
||||
console.log(id);
|
||||
}
|
||||
},[id])
|
||||
|
||||
const menus = (
|
||||
<Menu>
|
||||
<Menu.Item><Link to={`/license/public/1`}>第一版</Link></Menu.Item>
|
||||
</Menu>
|
||||
)
|
||||
|
||||
return(
|
||||
<div>
|
||||
<Title>木兰公共许可证<Dropdown overlay={menus} placement="bottomRight"><i className="iconfont icon-sandian font-17 color-grey-9"></i></Dropdown></Title>
|
||||
<div class="content">
|
||||
<div className="pre">
|
||||
{
|
||||
value &&
|
||||
<RenderHtml className="break_word_comments imageLayerParent" value={list[value]} url={props.history.location}/>
|
||||
}
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
)
|
||||
}
|
||||
export default Public;
|
Loading…
Reference in New Issue