아파치 라이선스(Apache License) 아파치 소프트웨어 재단에서 자체적으로 만든 소프트웨어에 대한 라이선스 규정이다.

아파치 2.0 라이선스는 누구나 해당 소프트웨어에서 파생된 프로그램을 제작할 수 있으며 저작권을 양도, 전송할 수 있는 라이선스 규정을 의미한다. 아파치 라이선스에 따르면 누구든 자유롭게 아파치 소프트웨어를 다운 받아 부분 혹은 전체를 개인적 혹은 상업적 목적으로 이용할 수 있으며 재배포시에는 원본 소스 코드 또는 수정한 소스 코드를 반드시 포함시켜야 하는 것은 아니고[1] [2] 아피치 라이선스, 버전 2.0을 포함시켜야 하며 아파치 소프트웨어 재단에 개발된 소프트웨어라는 것을 명확하게 밝혀야 한다.


Apache License (아파치 라이센스)는 Apache 소프트웨어 재단 (ASF)의 소프트웨어에 라이센스 규정. 1.1 이전에는 Apache Software License (ASL)라고 칭하고 있었다. 저작권 표시 및 면책 사항 표시 유지를 요구하고있다. 1.1 이후 버전은 Open Source Initiative 가 오픈 소스 라이센스 로 승인하고있다. GNU 프로젝트는 1.1 이전 버전을 GPL 호환되지 않는 비 카피 레프트 의 무료 소프트웨어 라이센스, 버전 2.0을 GPL 버전 3 호환 (GPL2 이전과 호환되지)의 자유 소프트웨어 라이선스하고있다. 소스 코드는 자유 소프트웨어와 오픈 소스 프로젝트 개발에 사용, 독점 소프트웨어 나 닫힌 소스 개발에도 사용할 수있다. BSD 라이선스 를 기반으로 만들어진 BSD 스타일의 라이센스 의 하나이다.

ASF와 하위 프로젝트가 만드는 소프트웨어는 모든 Apache License로 제공되고있다. ASF 이외의 소프트웨어에서도 Apache License를 사용하는 것이있다. 2010 년 6 월 현재SourceForge.net 에서 5000 이상의 ASF 이외의 프로젝트가 Apache License에 출시 된 [1] .

목차

  [ 숨기기 ] 

개정 내역 편집 ]

Apache Software License 1.0 이 첫 번째 버전이며, Apache HTTP Server 1.2 등 기존 Apache 패키지에만 적용됐다.

Apache Software License 1.1 은 2000 년에 ASF가 승인했다. 1.0의 주요 변경 사항은 이른바 '선전 조항 "(1.0 라이센스 제 3 항)이다. 파생 제품의 선전 매체에 ASF 소프트웨어를 사용하고 있다고 설명하도록 요구 없어졌지만, 최종 사용자 문서에 기술해야한다 [2] . 또한, 제 4 항 및 제 5 항에서는 "Apache", "Apache Server", "Apache Group"이라는 문구를 광고 목적으로 허가없이 사용하는 것을 금지했다.

Apache License 2.0 은 2004 년 1 월에 ASF가 승인했다. ASF 이외의 프로젝트의 라이센스의 공존을 촉진하기 위해, GPL 의 라이센스로 호환성을 개선하고 모든 파일의 라이센스 표시는 필요없이 참조 만 잘되어있다. 또한 기여 라이센스를 명확히하고, 특허권과의 관계를 명확히했다 [2] .

라이센스 조건 편집 ]

다른 자유 소프트웨어 라이선스뿐만 아니라 Apache License는 사용자가 소프트웨어의 사용이나 배포, 수정, 파생 버전의 배포하는 것을 제한하지 않는다.

Apache License는 배포되는 이차적 저작물 이 동일한 라이센스로 제공되고, 무료 소프트웨어, 오픈 소스 소프트웨어로 배포되는 것을 요구하지 않는다. 요구하는 사용자가 소프트웨어에 Apache License 코드가 사용되었는지를 알리는 문구를 넣을 것이다. 따라서 카피 레프트 라이선스와 달리 Apache License 코드 이차 창작물의 사용자는 무료 라이센스가 적용되지 않을 가능성도있다.

라이센스 된 파일 각각 원래의 저작권과 특허권의 기술은 그대로 유지해야하며, 어떠한 수정이되어있는 경우는 그 취지를 추가 설명해야한다.

GPL과 호환 편집 ]

Apache 소프트웨어 재단과 자유 소프트웨어 재단 은 Apache License 2.0과 GNU General Public License 버전 3 (GPLv3)가 호환임을 공통 인식에 도달하는 (즉 양자를 포함하는 소프트웨어의 배포는 허용된다) .

그러나 자유 소프트웨어 재단은 GPL 버전 1 ~ 2와 호환되지라고하는 [3] [4] . 예를 들어, Apache License 2.0은 GPL 버전 1 ~ 2가 요구하지 않는 특허권의 정지 조건에 대해서 이야기하고있다.그런 특허권 정지가 나쁜 아이디어라고 생각하지 않지만, 이에 한정하지 않고 GPL에는없는 강력한 제한을 추가 라이센스는 어느쪽으로도 GPL과 호환되지하다고하고있다 [5] .

관련 항목 편집 ]

각주 편집 ]


출처 - http://ko.wikipedia.org/wiki/%EC%95%84%ED%8C%8C%EC%B9%98_%EB%9D%BC%EC%9D%B4%EC%84%A0%EC%8A%A4






Apache License Version 2.0을 번역해 봤습니다. 될 수 있으면 쉽게 번역해 보려고 노력했는데, 영어 원문 자체가 워낙 어려운데다 제 번역 경험이 일천한지라 애초 달성하려고 했던 쉽게 번역하는 것은 달성하지 못한 듯하네요. 그래도 참고삼아 보시라고 용감하게 공개해 봅니다. 무식하면 용감한 것이죠. ^^

ChangeLog
2008년 8월 5일: 
- 제 생각을 [Comment]로 추가했습니다
- 4. 재배포, 4.a, 4.b 번역했습니다.
2008년 8월 7일:
- 4.c, 4.d, 5. 번역했습니다.
2008년 8월 8일:
- 6. 7. 번역했습니다.
2008년 8월 9일:
- 번역 완료했습니다.
- 말도 조금 더 다듬고, Comment 도 좀 더 추가하고 용어도 통일했습니다.

======
번역에 대한 법적 책임 면제에 대한 공지:

다음 Apache License Version 2.0 번역본은 제 개인적인 목적에 의해 번역된 것을 밝힙니다. 이 번역본에 의해 아파치 라이선스의 정확한 법적 조건을 판단하는 것은 그 정확성을 보증할 수 없음을 밝히며, 임의로 사용 후에 발생하는 손해에 대해 저는 책임질 수 없음을 밝힙니다. 정확한 법적 조건을 알기 위해서는 링크를 통해 접근할 수 있는 원문을 참고하시기 바랍니다.

아파치 라이선스
Apache License
2.0판, 2004년 2월
Version 2.0, January 2004
http://www.apache.org/licenses/

사용, 재생산, 배포를 위한 조항 및 조건
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION

1. 정의
1. Definitions
.

"라이선스"란 이 문서의 1절부터 9절에 제시되어 있는 사용, 재생산, 배포를 위한 조항 및 조건을 뜻한다.
"License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document.

"라이선스 허가자"란 라이선스를 허가하는 저작권자 본인 또는 저작권자에 의해 지명된 사람[entity 를 모두 사람이라고 번역했습니다]을 뜻한다.
"Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License.

"법인"이란 실제 행동하는 사람과 그 사람을 조정하거나 그 사람에 의해 조정당하는 모든 사람들, 그 사람과 공통의 조정하에 있는 모든 사람들의 연합체[회사나 비영리 법인 같은 걸 뜻하는 거겠죠?]를 뜻한다. 여기서 "조정"이란 (i) 직간접적으로 그 사람의 행동 방향을 결정하거나 관리를 하는 권력을 뜻하거나, (ii) 발행주식 중 50% 이상을 소유하고 있거나, (iii) 그 실체로부터 수익을 얻는 소유권이 있음을 뜻한다.
"Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity.

"라이선스 사용자"란 이 라이선스에 의해 허가된 조항들을 실제 실행하는 개인 또는 법인을 뜻한다.
"You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License.

"소스" 형태란 소프트웨어 소스 코드, 문서 소스, 구성 파일 등과 같이 수정에 편리한 형태를 뜻한다. 그렇지만 이 세가지 형태로 국한되지는 않는다[including but not limited 를 이렇게 번역했습니다].
"Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files.

"목적물" 형태란 소스 형태를 기계적으로 변환하거나 번역하여 얻은 임의의 결과물을 뜻한다. 예로는 컴파일된 목적 코드, 생성된 문서, 여타 미디어 타입으로 변환된 형태 등이 있으며 이 세가지 형태로 국한되지는 않는다.
"Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types.

"창작물"이란 이 라이선스 조건 하에 소스 형태 또는 목적물 형태로 가용하게 된 원작자의 작업물을 뜻한다. 이 라이선스를 아래 첨부에 있는 예에서와 같이 창작물에 포함시키거나 부착하여 라이선스 적용 여부를 표시한다.
"Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below).

"파생 창작물"이란 소스 형태 또는 목적물 형태로 창작물에 기반하여 편집상 개정하거나, 주석을 추가하거나, 상세화하거나, 기타 전체적으로 볼 때 원저작자의 창작물임을 알 수 있을 정도로 수정한 저작물을 뜻한다[파생 창작물의 범위가 어떤 것인지는 Open Source License 에서 상당히 중요한 개념이죠. 아파치 라이선스에서는 편집상 개정, 주석 추가, 상세화, 원창작물을 식별할 수 있을 정도로 수정된 결과 등이 해당되네요. modification 을 법적 용어로는 개작이라고 표현하던데, 저는 그냥 수정이라고 번역했습니다. 대문자 Work 와 소문자 work를 구분해서 Work 는 창작물 work 는 저작물이라고 번역했습니다. 여기서 Work는 1.정의에서 언급한 창작물을 뜻하기 때문입니다]. 여기서 파생 창작물이란 창작물과 것의 모든 파생 창작물과는 분리된 형태로 존재하는 저작물[독립된 프로세스로 존재하며 창작물의 서비스를 이용하는 경우를 뜻하는 것 같습니다. Affero GPL 인가 하는 것은 이런 경우도 GPL로 공개해야 한다고 하더군요. 아직 확인은 안 해 봤습니다. ^^]과 그 인터페이스에 단순 연결(즉, 이름에 의한 연결)된 저작물[라이브러리 형태의 창작물에 링크만 한 경우를 뜻하는 것 같습니다. GPL과는 다르네요]은 포함하지 않는다.
"Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof.

"기여물"이란 창작물 원래 버전과 창작물과 그것의 모든 파생 창작물에 대한 수정 또는 추가 사항을 포함한 저작물로서 저작권자가 직접 또는 저작권자에 의해 지명된 개인 또는 법인이 저작권자를 대신하여 창작물에 포함시켜달라고 제출한 것을 뜻한다[대표적인 경우가 버그를 발견해서 이렇게 저렇게 fix 해 달라고 메일을 보낸 경우가 될 것 같습니다. 아래 2. 저작권 라이선스 허가에 따르면 자신이 기여한 소스에 대해서는 자연스럽게 사용권을 허가하게 되는 방식입니다]. 여기서 "제출"이란 전자적 대화, 음성대화, 기록대화 어떤 형태로든 라이선스 허가자 또는 그의 대리자에게 보낸 내용을 뜻한다. 대화 창구의 예로는 창작물에 관해 논의하고 창작물을 개선할 목적으로 라이선스 허가자에 의해 또는 라이선스 허가자를 대신하는 사람에 의해 관리되는 전자 메일링 리스트, 소스 코드 제어 시스템, 이슈 트랙킹 시스템 등이 있으나 이 세 가지에 국한되지는 않는다. 저작권자가 "기여물에 해당되지 않음"이라고 명확하게 표시하거나 그렇게 기록되어 있는 문서는 기여물에 포함되지 않는다[만약 라이선스를 허가하고 싶지 않다면 메일 보낼 때 "Not a Contribution"이라고 딱지를 붙여서 보내야겠네요. 그런데 그럴 거면 아예 메일을 보내질 않지 뭐하려고 "Not a Contribution"이라고 보낼까요 ?].
"Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution."

"기여자"란 라이선스 허가자에게 기여물을 보내어 그 기여물이 라이선스 허가자에 의해 창작물에 반영되었을 때, 그 기여물을 보낸 개인 또는 법인을 뜻한다. 라이선스 허가자는 기여자에 포함된다[이 개념에 따르면 최초의 원저작자도 기여자가 되는 것이겠죠 ? 그 이후에 이렇게 저렇게 수정을 한 모든 사람들도 기여자가 되는 것이구요].
"Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work.

2. 저작권 라이선스 허가. 각 기여자는 이 라이선스의 조항 및 조건에 따라 라이선스 이용자에게 소스 형식 또는 목적물 형식으로 창조물과 그것의 모든 파생 창조물을 재생산하고, 그것들의 파생 창조물을 준비하고, 일반인에게 공표하고, 일반인 앞에서 실행하고, 재차 라이선스하고, 배포할 수 있는 저작물 사용 권한을 허가한다[이 조항에 따르면 사용권에는 재생산, 수정, 공표, 실행, sublicense, 배포권이 포함되네요. 근데 sublicense란 뭘 뜻하는거죠 ?]. 이 권한은 영구적이고, 전세계적이며, 독점적이지 않고, 부과금이 없고, 사용료가 없으며, 취소될 수 없다[취소될 수 없다면 이 라이선스였다가 중간에 바뀌었더라도 바뀌기 전 버전을 가지고는 허가된 권한을 계속 사용할 수 있다는 뜻이네요].
2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form.

3. 특허 라이선스 허가. 각 기여자는 자신이 제출한 기여물 단독으로 또는 원창작물과 조합된 기여물에 의해 어쩔 수 없이 침해될 수 밖에 없으나 자신에 의해 라이선스 허가가 가능한 특허 청구항에 대해서만 이 라이선스의 조항 및 조건에 따라 라이선스 이용자에게 창작물을 제작하고, 사용하고, 판매를 제안하고, 판매하고, 수입하고, 전송할 수 있는 특허 사용권을 허가한다[모든 기여자의 특허는 자신이 알던 모르던 사용권이 허가되는 것이네요. 혹시 회사 업무의 일부로 기여를 했는데, 자신도 모르게 회사의 특허로 기여를 했다면 그 회사의 특허는 사용권을 허가해 버리게 되는 것이네요]. 이 권한은 영구적이고, 전세계적이며, 독점적이지 않고, 부과금이 없고, 사용료가 없으며, 이 절에서 기술된 경우를 제외하고는 취소될 수 없다. 라이선스 사용자가 창작물 또는 창작물에 포함된 기여물이 직접적으로 또는 기여적으로 특허를 침해했다고 주장하는 어떤 개인 또는 법인과 특허 소송을 시작하면(맞고소 포함), 이 라이선스 하에서 라이선스 사용자에게 허가된 모든 특허 사용권은 소송이 신청된 날로부터 취소된다[어떤 개인 또는 법인이라도 아파치 라이선스를 적용하고 있는 창작물을 사용하고 있는 임의의 한 회사에게 특허 소송을 걸면 바로 사용권이 취소된다는 얘기네요. 그렇다면 그 회사만 영향을 받는 것이겠죠 ? 모든 사람이 적용받는 게 아니라... 이건 법적으로 더 확인해 볼 필요가 있을 것 같네요. 이 조항의 해석에 따라 특허권을 보호 받고 싶은 회사가 일일이 사용하는 사람 또는 법인에게 다 소송을 걸어야 하는 것인지 아니면 한 회사에 대해 소송에서 승소하면 그걸로 끝인지... 일일이 소송을 걸어야 한다고 하더라도 한 번 판결이 나면 웬만한 회사들은 더이상 사용하질 않겠죠? 그리고 사용권이 취소되는 시점도 판결이 난 이후가 아니라 특허 소송이 접수된 시점이라서 아파치 라이선스가 적용된 소스는 사용상에 약간 위험성이 크네요. 어떻게 보면 특허권을 가졌다고 주장하는 회사에게 유리한 조항이군요].
3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed.

4. 재배포. 라이선스 사용자는 임의의 미디어에 담긴, 창작물과 함께 그것의 파생 창작물의 복사본을, 수정 여부에 관계 없이, 소스 형태 또는 목적물 형태로 재생산하거나 배포할 수 있다. 단, 다음과 같은 조건을 만족하여야 한다[라이선스 사용자가 재배포를 할 경우, 의무사항을 나열하고 있는 부분이네요. 잘 따라야 하겠지요. 그런데 수정 내용을 공개하라는 말도 없고 재배포시에 반드시 소스 형태로 제공해야 한다는 말도 없네요. 이것도 GPL과는 상당히 다른 점이군요]:
4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions:

  1. 라이선스 사용자는 창작물 또는 파생 창작물의 수신자에게 이 라이선스의 복사본을 줘야 한다[라이선스 복사본을 배포해야 하고]; 그리고
    You must give any other recipients of the Work or Derivative Works a copy of this License; and 
  2. 라이선스 사용자는 자신이 수정한 파일들에 알아보기 쉽게 수정하였다는 것을 명시해야 한다[수정 내용은 공개하지 않더라도 수정한 파일들을 알려 줘야 하는군요]; 그리고 
    You must cause any modified files to carry prominent notices stating that You changed the files; and 
  3. 라이선스 사용자는 창작물의 소스 형태에 있던 저작권 공지, 특허 공지, 상표권 공지, 귀속 공지를 파생 창작물의 소스 형태에 그대로 유지한 채로 배포해야 한다. 단, 파생 창작물과 관계 없는 공지는 제외한다[소스 형태로 파생 창작물을 배포할 때는 공지사항을 포함시켜야 한다는 것인가요?]; 그리고
    You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and 
  4. 창작물의 배포본에 "NOTICE" 파일이 포함되어 있다면 라이선스 사용자가 배포하는 모든 파생 창작물에도 그 NOTICE 파일에 담긴 귀속 공지 사본이 읽을 수 있는 형태로 포함되어야 한다[쉽게 말하면 그 NOTICE 파일을 그냥 그대로 놔두면 되겠네요]. 단, 파생 창작물의 어떤 부분에도 관련이 없는 공지는 제외한다. 그 공지는 적어도 다음과 같이 위치 중 한 곳에 위치해야 한다: 1) 파생 창작물의 일부로 배포되는 NOTICE 텍스트 파일안에, 2) 파생 창작물과 함께 배포 되는 소스 또는 문서 안에, 3)파생 창작물에 의해 생성되는 화면 안에 보통 나타나는 제3자 공지사항으로[목적물 형태로 배포하는 경우에는 이렇게 할 수 있겠네요]. NOTICE 파일의 내용은 정보 제공의 목적이므로 라이선스 조건을 변경할 수는 없다. 라이선스 사용자는 자신이 배포하는 파생 창작물 내에 창작물의 NOTICE 파일에 덧붙여 자신만의 귀속 공지를 배포할 수 있으나 그 귀속 공지가 라이선스 조건을 변경해서는 안된다.
    If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License.
라이선스 사용자는 자신이 수정한 부분에 자신만의 저작권 선언을 추가하고, 수정 부분의 사용, 재생산, 배포권에 대해 부가적인 또는 이 라이선스와는 다른 조항 및 조건을 기술할 수 있다. 또는 라이선스 사용자의 사용, 재생산, 배포의 조건이 이 라이선스와 호환이 된다면 수정 부분이 아닌 전체 파생 창작물에 대해 부가적인 또는 이 라이선스와는 다른 조항 및 조건을 기술할 수 있다[자신이 변경한 부분에 대해서는 다른 라이선스를 내걸 수 있다는 게 GPL과는 상당히 다른 점이네요. 이상의 재배포 조건을 보건데 GPL보다는 상당히 완화된 의무사항이네요]
You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License.

5. 제출된 기여물. 라이선스 사용자가 창작물에 포함시키려는 의도를 가지고 라이선스 허가자에게 제출한 기여물은 명확하게 기여물이 아니라고 기술하지 않았다면 추가적인 조항과 조건 없이 이 라이선스의 조항과 조건하에 놓이게 된다. 이렇다 하더라도 라이선스 사용자가 기여물에 관해 라이선스 허가자와 별도로 맺은 라이선스 합의 조건을 이 조항이 대신하거나 변경하지는 않는다[기여물로 제출하면 당연히 이 라이선스를 따르게 된다는 거죠].
5. Submission of Contributions
. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions.

6. Trademarks. 이 라이선스는 라이선스 허가자의 상품명, 등록상표, 서비스 마크, 제품명을 사용할 권한을 부여하지 않는다. 단, 창작물의 시초를 밝히거나 NOTICE 파일을 재생산하기 위해 합리적이고 관습적으로 쓰는 경우에 한해서는 사용할 수 있다[등록 상표를 함부로 쓰면 안되겠군요. 예를 들면 Apache HTTP Server 파생 창작물을 만들고 기여물로 제출하지 않은 채로 Apache 라는 이름을 쓰면 안된다는 것이죠].
6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file.

7. 보증 거부. 법에 의해 요구되거나 문서상으로 합의한 경우를 제외하고, 라이선스 허가자는 아무런 보증 없이 창작물의 상태 그대로를 제공한다. 또한, 적법한 권한, 무침해, 거래 적합성, 특정 목적 부합성을 보증하지도 않는다. 라이선스 사용자는 자신이 직접 창작물 사용 및 배포의 적합성을 판단하여야 하고, 이 라이선스 하에서 허가된 권한을 실행하는데 있어 관련된 위험이 있을 수 있다는 걸 인지하여야 한다[어떠한 보장도 못하니 알아서 판단해서 쓰라는 얘기군요. 심지어는 다른 사람의 권리를 침해하지 않았다는 것도 보증하지 못한다네요. You use this at your own risk. 이것만 보면 정말 겁나는 얘기죠].
7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License.

8. 법적 책임의 한계. 어떤 사건, 어떤 법률적 이론 하에서도, 직무 태만을 포함한 불법 행위, 계약, 또는 다른 형태로든, 관련 법률이 강제하거나 기여자가 문서로 합의하지 않는 한, 기여자는 라이선스 사용자의 손해에 대한 책임을 지지 않는다. 그 손해가 직접적이던, 간접적이던, 특별한 손해이던, 우연한 손해이던, 창작물의 사용으로 인한 손해, 창작물의 사용 불가로 인한 손해, 이 라이선스로 인한 손해 등과 같이 인과적인 손해이던지 상관없이 책임을 지지 않는다. 그러한 손해의 예로는 선의의 손실로 인한 손해, 업무의 중단에 의한 손해, 컴퓨터 고장 또는 오동작으로 인한 손해, 기타 모든 상업적인 손해등이 있으며, 이것들만으로 제한되진 않는다. 기여자가 이러한 손해의 가능성에 대해 조언을 받았다고 하더라도 이 조항은 그대로 적용된다.
8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages.

9. 보증 또는 책임의 추가. 창작물과 그것들의 파생 창작물을 재배포할 때, 라이선스 사용자는 소정의 수수료를 받고 지원, 보증, 손해배상 책임, 기타 이 라이선스와 일치하는 법적 책임 및 권한을 받아들일 수 있다. 그러나, 그러한 책임을 받아들임에 있어 라이선스 사용자는 오로지 자신의 책임하에 받아들여야 하며, 이로 인해 야기되는 법적 책임 또는 지불 청구 등에 대해 기여자를 대신하여 배상금을 지불하고, 기여자를 보호하고, 각 기여자가 손해를 입지않도록 하는데 동의하여야 한다[7.항 8.항에 따르면 기여자들은 어떤 책임도 지지 않기 때문에 이항을 통해 보증 또는 책임을 짐으로써 비즈니스를 영위하는 경우를 명시적으로 허용하고 있네요. 이렇게 되면 오픈 소스 사업을 하는 사람도 나올 수 있고, 기여자들은 안심하고 기여를 할 수 있으니 누이 좋고 매부 좋고네요 ^^]
9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability.

조항 및 조건의 끝
END OF TERMS AND CONDITIONS 

첨부: 자신의 창작물에 아파치 라이선스를 적용하는 방법
APPENDIX: How to apply the Apache License to your work

자신의 창작물에 아파치 라이선스를 적용하려면 다음의 틀을 갖는 공지에서 대괄호를 둘러 쌓인 부분을 자신을 식별할 수 있는 정보로 대치해야 한다(대괄호 자체는 포함해서는 안된다). 파일 형식에 따라서는 적절한 코멘트 형식으로 둘러 싸야 한다[예를 들자면, C/C++ 소스 코드에 포함하는 경우에는 /* */ 이런 걸로 둘러 쌓아라는 말이겠죠]. 파일 이름, 클래스 이름, 목적 기술은 제3자의 아카이브 안에서도 쉽게 확인할 수 있도록 인쇄할 때 저작권 공지와 동일한 페이지에 나타나도록 할 것을 추천한다.
To apply the Apache License to your work, attach the following boilerplate notice, with the fields enclosed by brackets "[]" replaced with your own identifying information. (Don't include the brackets!) The text should be enclosed in the appropriate comment syntax for the file format. We also recommend that a file or class name and description of purpose be included on the same "printed page" as the copyright notice for easier identification within third-party archives.

Copyright [yyyy] [name of copyright owner] Licensed 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.


출처 - http://yesarang.tistory.com/272



'OpenSource > License' 카테고리의 다른 글

Apache License 2.0 사용법  (0) 2013.01.11
Posted by linuxism
,


eclipse.ini

Overview

Eclipse startup is controlled by the options in $ECLIPSE_HOME/eclipse.ini. If $ECLIPSE_HOME is not defined, the default eclipse.ini in your Eclipse installation directory (or in the case of Mac, theEclipse.app/Contents/MacOS directory) is used.

eclipse.ini is a text file containing command-line options that are added to the command line used when Eclipse is started up. There are many options available, please see here.

Important:

  1. Each option and each argument to an option must be on its own line.
  2. All lines after -vmargs are passed as arguments to the JVM, so all arguments and options for eclipse must be specified before -vmargs (just like when you use arguments on the command-line)
  3. Any use of -vmargs on the command-line replaces all -vmargs settings in the .ini file unless --launcher.appendVmargs is specified either in the .ini file or on the command-line. (doc)


By default, eclipse.ini looks something like this (the exact contents will vary based on operating system and which Eclipse package you have):

-startup
../../../plugins/org.eclipse.equinox.launcher_1.2.0.v20110502.jar
--launcher.library
../../../plugins/org.eclipse.equinox.launcher.cocoa.macosx.x86_64_1.1.100.v20110502
-product
org.eclipse.epp.package.jee.product
--launcher.defaultAction
openFile
-showsplash
org.eclipse.platform
--launcher.XXMaxPermSize
256m
--launcher.defaultAction
openFile
-vmargs
-Dosgi.requiredJavaVersion=1.5
-XX:MaxPermSize=256m
-Xms40m
-Xmx512m

Among other things, this sets the heap space to 40MB initially and a maximum of 512MB, and also specifies a maximum PermGen size of 256MB. A max heap of 512MB might be OK for some users, but it's often necessary to bump that value up for large project sets or when some third-party plugins are installed.

Specifying the JVM

One of the most recommended options to use is to specify a specific JVM for Eclipse to run on. Doing this ensures that you are absolutely certain which JVM Eclipse will run in and insulates you from system changes that can alter the "default" JVM for your system. Many a user has been tripped up because they thought they knew what JVM would be used by default, but they thought wrong. eclipse.ini lets you be CERTAIN.

The following examples of eclipse.ini demonstrate correct usage of the -vm option.

Note the format of the -vm option - it is important to be exact:

  • The -vm option and its value (the path) must be on separate lines.
  • The value must be the full absolute or relative path to the Java executable, not just to the Java home directory.
  • The -vm option must occur before the -vmargs option, since everything after -vmargs is passed directly to the JVM.
  • For the 32-bit Eclipse executable (eclipse.exe on Windows) a 32-bit JVM must be used and for the 64-bit Eclipse executable a 64-bit JVM must be used. 32-bit Eclipse will not work with a 64-bit JVM.

Here is an example of what eclipse.ini might look like on a Windows system after you've added the -vm argument and increased the maximum heap space:

-startup
plugins/org.eclipse.equinox.launcher_1.2.0.v20110502.jar
--launcher.library
plugins/org.eclipse.equinox.launcher.win32.win32.x86_1.1.100.v20110502
-product
org.eclipse.epp.package.java.product
--launcher.defaultAction
openFile
--launcher.XXMaxPermSize
256M
-showsplash
org.eclipse.platform
--launcher.XXMaxPermSize
256m
--launcher.defaultAction
openFile
-vm
C:\Java\JDK\1.6\bin\javaw.exe
-vmargs
-Dosgi.requiredJavaVersion=1.5
-Xms40m
-Xmx1024m

Remember that the exact values will differ slightly depending on operating system and Eclipse package.

-vm value: Windows Example

This is how the -vm argument might look on Windows (your exact path to javaw.exe could be different, of course):

-vm
C:\jdk1.7.0_21\bin\javaw.exe 

An alternative way is to insert the following VM option before the -vmargs option in the Eclipse shortcut properties(edit the field Target inside the "Shortcut" tab):

-vm C:\jdk1.7.0_21\bin\javaw.exe

or

-vm C:\jdk1.7.0_21\jre\bin\java.exe



This might not work on all systems. If you encounter "Java was started but returned exit code=1" error while starting the eclipse, modify the -vm argument to point to jvm.dll (exact path could be different):

-vm
C:\Development\Java\64bit\jdk1.7.0_09\jre\bin\server\jvm.dll

-vm value: Linux Example

This is how the -vm argument might look on Linux (your exact path to java could be different, of course):

 -vm
/opt/sun-jdk-1.6.0.02/bin/java

-vm value: Mac OS X Example

On a Mac OS X system, you can find eclipse.ini by right-clicking (or Ctrl+click) on the Eclipse executable in Finder, choose Show Package Contents, and then locate eclipse.ini in the MacOSfolder under Contents.

To specify Java 6 for OS X:

 -vm
/System/Library/Frameworks/JavaVM.framework/Versions/1.6.0/Home/bin/java

For versions of Mac OS X 10.7+ the location has changed to

/Library/Java/JavaVirtualMachines/<''jdk_name_ver''>/Contents/Home/...

To be safer, determine the location for the JDK you intend to use via the utility /usr/libexec/java_home and put this value with .../bin/java appended into the Eclipse.ini file.

See Also



source - https://wiki.eclipse.org/Eclipse.ini








* jvm path 설정

-vm

/usr/local/jdk1.7/bin

-vmargs


-vm 옶션을 -vmargs 앞에 오도록 설정한다.



* workspace path 설정

- data

~/eclipse/workspace

Posted by linuxism
,



socket.io Client: Sockets for the rest of us

The socket.io client is basically a simple HTTP Socket interface implementation. It allows you to establish a realtime connection with a server (see socket.io server here), hiding the complexity of the different transports (WebSocket, Flash, forever iframe, XHR long polling, XHR multipart encoded, etc).

Features

  • Supports

    • WebSocket
    • Adobe Flash Socket
    • ActiveX HTMLFile (IE)
    • Server-Sent Events (Opera)
    • XHR with multipart encoding
    • XHR with long-polling
  • ActionScript Socket is known not to work behind proxies, as it doesn't have access to the user agent proxy settings to implement the CONNECT HTTP method. If it fails, socket.io will try something else.

  • On a successful connection, it remembers the transport for next time (stores it in a cookie).

  • Small. Closure Compiled with all deps: 5.82kb (gzipped).

  • Easy to use! See socket.io-node for the server to connect to.

How to use

In your head

<script src="/path/to/socket.io.min.js">
<script>
    io.setPath('/path/to/socket.io/');
</script>

In your code

socket = new io.Socket('localhost');
socket.connect();
socket.send('some data');
socket.addEvent('message', function(data){
    alert('got some data' + data);
});

For an example, check out the chat source.

Documentation

io.Socket

new io.Socket(host, [options]);

Options:

  • port

    80
    

    The port socket.io server is attached to

  • resource

    socket.io
    

    The resource is what allows the socket.io server to identify incoming connections by socket.io clients. In other words, any HTTP server can implement socket.io and still serve other normal, non-realtime HTTP requests.

  • transports

    ['websocket', 'server-events', 'flashsocket', 'htmlfile', 'xhr-multipart', 'xhr-polling']
    

    A list of the transports to attempt to utilize (in order of preference)

  • transportOptions

    {
        someTransport: {
            someOption: true
        },
        ...
    }
    

    An object containing (optional) options to pass to each transport.

Properties:

  • options

    The passed in options combined with the defaults

  • connected

    Whether the socket is connected or not.

  • connecting

    Whether the socket is connecting or not.

  • transport

    The transport instance.

Methods:

  • connect

    Establishes a connection

  • send(message)

    A string of data to send.

  • disconnect

    Closes the connection

  • addEvent(event, λ)

    Adds a listener for the event event

  • removeEvent(event, λ)

    Removes the listener λ for the event event

Events:

  • connect

    Fired when the connection is established and the handshake successful

  • message(message)

    Fired when a message arrives from the server

  • close

    Fired when the connection is closed. Be careful with using this event, as some transports will fire it even under temporary, expected disconnections (such as XHR-Polling).

  • disconnect

    Fired when the connection is considered disconnected.

Credits

Guillermo Rauch [guillermo@rosepad.com]

License

(The MIT License)

Copyright (c) 2009 RosePad <dev@rosepad.com>

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the 'Software'), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.



출처 - https://github.com/guille/Socket.IO






socket.io

Sockets for the rest of us

The socket.io client is basically a simple HTTP Socket interface implementation. It looks similar to WebSocket while providing additional features and leveraging other transports when WebSocket is not supported by the user's browser.

var socket = io.connect('http://domain.com');
socket.on('connect', function () {
  // socket connected
});
socket.on('custom event', function () {
  // server emitted a custom event
});
socket.on('disconnect', function () {
  // socket disconnected
});
socket.send('hi there');

Recipes

Utilizing namespaces (ie: multiple sockets)

If you want to namespace all the messages and events emitted to a particular endpoint, simply specify it as part of the connect uri:

var chat = io.connect('http://localhost/chat');
chat.on('connect', function () {
  // chat socket connected
});

var news = io.connect('/news'); // io.connect auto-detects host
news.on('connect', function () {
  // news socket connected
});

Emitting custom events

To ease with the creation of applications, you can emit custom events outside of the global message event.

var socket = io.connect();
socket.emit('server custom event', { my: 'data' });

Forcing disconnection

var socket = io.connect();
socket.on('connect', function () {
  socket.disconnect();
});

Documentation

io#connect

io.connect(uri, [options]);
Options:
  • resource

    socket.io

    The resource is what allows the socket.io server to identify incoming connections by socket.io clients. In other words, any HTTP server can implement socket.io and still serve other normal, non-realtime HTTP requests.

  • transports

['websocket', 'flashsocket', 'htmlfile', 'xhr-multipart', 'xhr-polling', 'jsonp-polling']

A list of the transports to attempt to utilize (in order of preference).

  • 'connect timeout'
5000

The amount of milliseconds a transport has to create a connection before we consider it timed out.

  • 'try multiple transports'
true

A boolean indicating if we should try other transports when the connectTimeout occurs.

  • reconnect
true

A boolean indicating if we should automatically reconnect if a connection is disconnected.

  • 'reconnection delay'
500

The amount of milliseconds before we try to connect to the server again. We are using a exponential back off algorithm for the following reconnections, on each reconnect attempt this value will get multiplied (500 > 1000 > 2000 > 4000 > 8000).

  • 'max reconnection attempts'
10

The amount of attempts should we make using the current transport to connect to the server? After this we will do one final attempt, and re-try with all enabled transport methods before we give up.

Properties:
  • options

    The passed in options combined with the defaults.

  • connected

    Whether the socket is connected or not.

  • connecting

    Whether the socket is connecting or not.

  • reconnecting

    Whether we are reconnecting or not.

  • transport

    The transport instance.

Methods:
  • connect(λ)

    Establishes a connection. If λ is supplied as argument, it will be called once the connection is established.

  • send(message)

    A string of data to send.

  • disconnect

    Closes the connection.

  • on(event, λ)

    Adds a listener for the event event.

  • once(event, λ)

    Adds a one time listener for the event event. The listener is removed after the first time the event is fired.

  • removeListener(event, λ)

    Removes the listener λ for the event event.

Events:
  • connect

    Fired when the connection is established and the handshake successful.

  • connecting(transport_type)

    Fired when a connection is attempted, passing the transport name.

  • connect_failed

    Fired when the connection timeout occurs after the last connection attempt. This only fires if the connectTimeout option is set. If the tryTransportsOnConnectTimeout option is set, this only fires once all possible transports have been tried.

  • message(message)

    Fired when a message arrives from the server

  • close

    Fired when the connection is closed. Be careful with using this event, as some transports will fire it even under temporary, expected disconnections (such as XHR-Polling).

  • disconnect

    Fired when the connection is considered disconnected.

  • reconnect(transport_type,reconnectionAttempts)

    Fired when the connection has been re-established. This only fires if the reconnect option is set.

  • reconnecting(reconnectionDelay,reconnectionAttempts)

    Fired when a reconnection is attempted, passing the next delay for the next reconnection.

  • reconnect_failed

    Fired when all reconnection attempts have failed and we where unsuccessful in reconnecting to the server.

Contributors

Guillermo Rauch <guillermo@learnboost.com>

Arnout Kazemier <info@3rd-eden.com>

License

(The MIT License)

Copyright (c) 2010 LearnBoost <dev@learnboost.com>

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the 'Software'), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


출처 - https://github.com/LearnBoost/socket.io-client

'Development > JavaScript' 카테고리의 다른 글

javascript - 크롬에서 동적으로 로드된 js 파일 디버깅 방법  (0) 2013.07.28
javascript - forms 객체  (0) 2013.05.13
comet  (0) 2012.12.28
자바스크립트 이벤트 핸들링  (0) 2012.12.27
javascript random generate  (0) 2012.12.25
Posted by linuxism
,