Contributions Policy

From OpenSimulator

(Difference between revisions)
Jump to: navigation, search
(Code added to core can be changed by anybody)
 
(37 intermediate revisions by 6 users not shown)
Line 1: Line 1:
 +
__NOTOC__
 +
{{Quicklinks}}
 +
<br />
 
__TOC__
 
__TOC__
  
Any contributions must comply with the following OpenSim contribution policy, guidelines, and licensing conditions.
+
Any contributions must comply with the following OpenSimulator contribution policy, guidelines, and licensing conditions.
  
In order for your contribution to be accepted you need to read and adhere to the OpenSim Code to this policy, guidelines, and licensing conditions.
+
In order for your contribution to be accepted you need to read and adhere to the OpenSimulator Code to this policy, guidelines, and licensing conditions.
  
==OpenSim Core Values==
+
==OpenSimulator Core Values==
  
 
So, you're thinking of contributing? Great! In order to make your ride as smooth as possible, here's listing some of this projects guiding principles:
 
So, you're thinking of contributing? Great! In order to make your ride as smooth as possible, here's listing some of this projects guiding principles:
 
====This is an early alpha experimental project====
 
This means that we value simple and naive solutions over efficiency - we will optimize but first we need to get the basics right.
 
It also means a very optimistic use of the word 'stable'.
 
 
   
 
   
 
====This is a 3D application platform, ''not a Second Life wannabe world simulator''====
 
====This is a 3D application platform, ''not a Second Life wannabe world simulator''====
Line 20: Line 19:
 
This means that any given patch, fix or feature is very much up to whether somebody thinks it fun, worthwile or would pay good money for it.
 
This means that any given patch, fix or feature is very much up to whether somebody thinks it fun, worthwile or would pay good money for it.
 
   
 
   
====This is a young project====
+
====This is a is a project in permanent evolution====
Being through four major architectural changes in <s>six</s> twelve months means we still
+
Many architectural changes have taken place in OpenSimulator's lifetime, so there are still lots of tangly and bushy remnants of old ways of doing stuff.
have lots of tangly and bushy remnants of old ways of doing stuff.
+
  
====This is a noob-friendly project====
+
====Sometimes the code is the documentation====
Yes, believe it or not, we're aiming at continously trying to make the code as simple, structured and readable for newcomers as time and experience will let us.
+
We try to make the code as simple, strightforward and readable as possible.
+
====The code is the documentation====
+
Even though we're trying to document the things that are reasonably set, instead of documentation and commenting we try to make the code as simple, strightforward and readable as possible.
+
  
 
====Documentation is good, comments are good====
 
====Documentation is good, comments are good====
There is a dispute about above point. Some of us are trying to comment code correctly so that it is obvious to newcomers how things are connected (large and small), where to make changes, what the change will affect and how to extend OpenSim.
+
However, sometimes comments are necessary in addition to clear code so that newcomers can learn and maintain the project.
  
 
====We are a multi-platform project====
 
====We are a multi-platform project====
This means we will go to lengths to avoid bringing in new technologies that would provide thresholds for installing and using the code on different environments. The default configuration should always be build- and runnable on checkout, provided you are on a c# .net/mono environment with either vs build or nant. Other technologies than those can be provided, but will not be guaranteed not to break at any given time.
+
This means we will go to lengths to avoid bringing in new technologies that would provide thresholds for installing and using the code on different environments. The default configuration should always be build- and runnable on checkout, provided you are on a c# .net/mono environment with build tools. Other technologies than those can be provided, but will not be guaranteed not to break at any given time.
 
   
 
   
 
Codewise, we're trying to move towards looser coupling and better code reuse - and to separate the code into a 'framework' layer, a 'service' layer and an 'application' layer; the framework layer defines all base classes and interfaces, the service layer provide networked and persistent implementations of those, and the application layer provides configuration logic and executables.
 
Codewise, we're trying to move towards looser coupling and better code reuse - and to separate the code into a 'framework' layer, a 'service' layer and an 'application' layer; the framework layer defines all base classes and interfaces, the service layer provide networked and persistent implementations of those, and the application layer provides configuration logic and executables.
  
== OpenSim Licensing Conditions ==
+
====Incremental Improvements over Profound Rewriting ====
To make sure that we can accept your contribution and continue to distribute the OpenSim materials under the most free license possible, any contributions to the OpenSim project need to follow the following licensing conditions:
+
"We don't usually do profound refactorings, as it destabilizes the project and the community. We prefer incremental improvements. But profound refactorings have happened before. If you have a concrete refactoring you want to suggest, please do so." ([http://opensimulator.org/mantis/view.php?id=5512 mantis #5512])
  
* Your contribution is either wholly your own, or if it contains third party materials, they are licensed in a manner compatible with the OpenSim project. If you rely on third party contributions, acknowledge them and include a copy of the license conditions for those components if they differ from the OpenSim project license. We cannot accept virally licensed code unless there is a specific F/OSS exemption for BSD-licensed projects.
+
====Changes which affect existing content must have agreement from the core developers====
 +
Wherever possible, we aim to preserve backwards compatibility with existing content, whether that's in the asset database, within inventory archives, etc. The exception is for areas marked as experimental (see below).
  
* You accept whole liability for any contributions you make for inclusion of third party intellectual property, in the jurisdiction of both yourself, and where the servers are located (United States). If you are unsure about the licensing conditions for a piece of source, do not include it and work around it. If you have a problem here, ask the rest of the developers as they may be able to help.
+
If backwards compatibility can't be preserved, then the associated changes must have agreement from all the core developers concerned.
  
* You have not witnessed, seen or been party to the development of the official Linden Lab Server Software. If you have been involved in the official server development your contributions may affect the licensing of the main codebase and we cannot accept the contributions without a waiver from Linden Lab disclaiming any interest in your contributions.
+
====Core functionality must be useful to more than one person/group====
 +
Features added to core can't be just for the benefit of one person or group, since they place a maintenance burden on everybody else. Features that are added should have enough documentation to make them useful to other people.
  
* You have not studied or copied source code from the GPL Second Life viewer to submit your contribution
+
====Code added to core can be changed by anybody====
 +
Code submited to core becomes fair game for other developers to change, to make it more useful to everybody, to improve it, to fix bugs, to eliminate duplication or for any other of the usual open-source reasons.
  
* You submit your contribution to the repository under the BSD license below.
+
== OpenSimulator Licensing ==
 +
OpenSimulator code, and hence all contributions, must be licensed under the BSD as shown below.  If your patch creates new code files they must have the BSD license header as shown below.
  
===OpenSim BSD License===
+
===OpenSimulator BSD License===
  
 
<pre>
 
<pre>
Line 64: Line 63:
 
       notice, this list of conditions and the following disclaimer in the
 
       notice, this list of conditions and the following disclaimer in the
 
       documentation and/or other materials provided with the distribution.
 
       documentation and/or other materials provided with the distribution.
     * Neither the name of the OpenSim Project nor the
+
     * Neither the name of the OpenSimulator Project nor the
 
       names of its contributors may be used to endorse or promote products
 
       names of its contributors may be used to endorse or promote products
 
       derived from this software without specific prior written permission.
 
       derived from this software without specific prior written permission.
Line 81: Line 80:
 
</pre>
 
</pre>
  
==Guidelines for Contributing==
+
== Instructions on submitting code patches ==
 
+
We value code contributions, and we also value the community-at-large's effort and feedback. There are 3 major channels of communication between the community and the developers. It's important that you understand what their purpose is, and how to use them in the most effective manner.
+
 
+
It's also important to understand that the opensim project '''does not provide user support''' beyond that provided by volunteer members of the community. Read the license: "The software is provided as is." If it breaks on you, you get to keep all the pieces!
+
 
+
===IRC channels===
+
 
+
The Feeenode IRC channels #opensim and #opensim-dev are two chat rooms where you can go at any time and interact lively with other opensim users (#opensim) and the opensim developers (#opensim-dev). At any time during the day/night chances are there will be people there.
+
 
+
* #opensim is a chat room for exchanging user experiences. If you have a problem running openim that you can't solve, this is the right channel to go to. There may be other people there who have the same problem as you, and, hopefully, there will be volunteers there who will be able to give you advice on how to solve it. Note that this is a volunteer-ran channel. Be courteous and respectful of their willingness to help you for free. As you get more experienced with opensim, consider volunteer your time too to help other people.
+
 
+
* #opensim-dev is primarily a channel for exchanging developer experiences. The conversations there are highly technical. If you are working on an extension to opensim and you need help with the opensim code, this is the right channel to go to. The developers are friendly to technical questions and hopefully someone will clarify things for you. Note that the developers are also volunteers, and have no obligation to help you whatsoever. Be courteous and respectuful of their willingness to help you for free.
+
 
+
===Mailling Lists===
+
 
+
There are two mailing lists: opensim-users and opensim-dev. If you're uncomfortable with using the chat rooms, you can use these mailing lists instead. Their respective purposes are the same as the IRC channels above. But chances are the help you need will be slower.
+
 
+
The opensim-dev mailing list serves an additional purpose of being the primary channel for discussing difficult technical issues related to the code and its evolution.
+
 
+
===Mantis===
+
  
 +
Please see [[Submitting code to OpenSim]].
  
[[Category:Main]]
 
[[Category:Users]]
 
 
[[Category:Development]]
 
[[Category:Development]]

Latest revision as of 05:14, 1 December 2019


Contents


Any contributions must comply with the following OpenSimulator contribution policy, guidelines, and licensing conditions.

In order for your contribution to be accepted you need to read and adhere to the OpenSimulator Code to this policy, guidelines, and licensing conditions.

[edit] OpenSimulator Core Values

So, you're thinking of contributing? Great! In order to make your ride as smooth as possible, here's listing some of this projects guiding principles:

[edit] This is a 3D application platform, not a Second Life wannabe world simulator

This means that we value decoupling, modularity and indirection over clock cycles and feature completeness.

[edit] We are all in this for our own separate reasons, some to have fun, some to make money

This means that any given patch, fix or feature is very much up to whether somebody thinks it fun, worthwile or would pay good money for it.

[edit] This is a is a project in permanent evolution

Many architectural changes have taken place in OpenSimulator's lifetime, so there are still lots of tangly and bushy remnants of old ways of doing stuff.

[edit] Sometimes the code is the documentation

We try to make the code as simple, strightforward and readable as possible.

[edit] Documentation is good, comments are good

However, sometimes comments are necessary in addition to clear code so that newcomers can learn and maintain the project.

[edit] We are a multi-platform project

This means we will go to lengths to avoid bringing in new technologies that would provide thresholds for installing and using the code on different environments. The default configuration should always be build- and runnable on checkout, provided you are on a c# .net/mono environment with build tools. Other technologies than those can be provided, but will not be guaranteed not to break at any given time.

Codewise, we're trying to move towards looser coupling and better code reuse - and to separate the code into a 'framework' layer, a 'service' layer and an 'application' layer; the framework layer defines all base classes and interfaces, the service layer provide networked and persistent implementations of those, and the application layer provides configuration logic and executables.

[edit] Incremental Improvements over Profound Rewriting

"We don't usually do profound refactorings, as it destabilizes the project and the community. We prefer incremental improvements. But profound refactorings have happened before. If you have a concrete refactoring you want to suggest, please do so." (mantis #5512)

[edit] Changes which affect existing content must have agreement from the core developers

Wherever possible, we aim to preserve backwards compatibility with existing content, whether that's in the asset database, within inventory archives, etc. The exception is for areas marked as experimental (see below).

If backwards compatibility can't be preserved, then the associated changes must have agreement from all the core developers concerned.

[edit] Core functionality must be useful to more than one person/group

Features added to core can't be just for the benefit of one person or group, since they place a maintenance burden on everybody else. Features that are added should have enough documentation to make them useful to other people.

[edit] Code added to core can be changed by anybody

Code submited to core becomes fair game for other developers to change, to make it more useful to everybody, to improve it, to fix bugs, to eliminate duplication or for any other of the usual open-source reasons.

[edit] OpenSimulator Licensing

OpenSimulator code, and hence all contributions, must be licensed under the BSD as shown below. If your patch creates new code files they must have the BSD license header as shown below.

[edit] OpenSimulator BSD License

Copyright (c) Contributors, http://opensimulator.org/
See CONTRIBUTORS.TXT for a full list of copyright holders.

Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
    * Redistributions of source code must retain the above copyright
      notice, this list of conditions and the following disclaimer.
    * Redistributions in binary form must reproduce the above copyright
      notice, this list of conditions and the following disclaimer in the
      documentation and/or other materials provided with the distribution.
    * Neither the name of the OpenSimulator Project nor the
      names of its contributors may be used to endorse or promote products
      derived from this software without specific prior written permission.

THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY EXPRESS OR
IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

[edit] Instructions on submitting code patches

Please see Submitting code to OpenSim.

Personal tools
General
About This Wiki