Closed i2000s closed 4 years ago
Updated some details on organizing projects of JuliaQuantum to reflect the issues exposed in another discussion: releasing channel problem and yielding rule for new projects.
Along running JuliaQuantum projects in practice during the past year, the content of this agreement has been dramatically enriched. I have committed this agreement to our website for a clear view and taking effect. It should be improved by the community via pull requests in the future.
What does this document define?
I will close this issue in a week if no questions. Thank you for your participation!
I'm somewhat worried that the length/verbosity of this document may deter potential contributors from reaching out. Other Julia organizations don't have a document like this, AFAIK. At most, they have contribution guidelines, which are generally defined at the package level instead of the organization level. Same goes with licensing, and I imagine release cycles (do other orgs have global release schedules?). I personally believe we should go with the precedent set by other organizations and simply leave most of this stuff up to package authors.
I think having guidelines for new packages for quality control's sake isn't a bad idea, but it should be a concise list. JuliaOpt's guidelines list is a good example.
I think the other information in this document (who to contact for info, how to cite publications, repo descriptions etc.) might be better off having their own bullet points/links on the site than being lumped into a single large document.
@acroy @Jutho @jiahao Your thoughts?
@jrevels Thank you for the first comment. My opinion on having this kind of long legal document follows.
pull request
, fork
and other operations. Different repository can have different instructions as well, and detailed technique instruction should be in a separate document. The rest of the document is mainly for JuliaQuantum members who can manipulate repositories and represent JuliaQuantum to organize social events and requesting money, recruiting and so on. There is a brief TOC on the website page for people to choose what part to look into given their purpose of actions and skip the rest at a time--despite of the length of this legal document. JuliaOpt
and other organizations, do them have such kind of agreement on making level-structured packages? Thanks for reading.
I spent 30 minutes reading the document last night and made many notes, but I will start by saying that I agree with @jrevels that it is too long. (Recall that the third point of the Julia Community Standards, which is linked from the JuliaQuantum "agreement", is "Be concise."
I also find it problematic that is is referred to as a "legal document." I have no desire to be party to any agreement that has not been reviewed by an attorney, nor would I recommend anyone else be party to such an agreement. It should really be a set of "community guidelines," and be much shorter. The only legal documents we should have at this stage are software licenses.
I believe many Julia umbrella organizations also want to have this kind of legal document to avoid troubles
A "legal document" written by a non-lawyer is not going to help us avoid troubles.
One other thing: I would in particular recommend removing the sections about procedures for changing the license of a project. In particular, the MIT License already explicitly grants permission to sublicense, so changing the license should not be necessary for any MIT License'd project.
@garrison Great! I appreciate your patience on reading it through and joining the discussion! I really apologize I make the doc so long and so hard for people to review by now. But I think it is important to have it, either as a guideline or something else :)
To shorten the doc, I think we can do the following.
@garrison On your last point,
One other thing: I would in particular recommend removing the sections about procedures for changing the license of a project. In particular, the MIT License already explicitly grants permission to sublicense, so changing the license should not be necessary for any MIT License'd project.
I just want to clarify that, as you have clearly noticed, the changing license section may only work for repositories started with a more-restricted license to be turned into a less-restricted license like MIT or BSD clause-2 license. I think it is helpful to have a flexible license policy and allow promoting a more-restricted license to be a less-restricted license. As you may not know, when this organization started last year, I have invited a member from a frontier quantum company who has significant contributions to Julia and Julia packages for simulating and controling quantum systems. However, through personal communications I learned that he has restrictions on making packages under certain licenses due to the company's policy. The proposed policy will encourage people in this case to join us and start a project if they would like to use some prefered license and also allowing relicensing once situation permits.
I cannot do the rewriting job at least for the coming a few weeks. As I am fading off from managing the org's affairs due to personal reasons as many have known, it would be really great if anyone else can help simplify the doc little by little in separated pull requests! Thanks!
Maybe a better way for closing this issue is: forget about everything I wrote above and summarize what are the most important points the org should agree on and inform our contributors in a short list. Anything else should be ok with common sense.
I was a little worried about few people from the quantum community have heard of Julia, not to mention contributors, and the org might need to take more efforts to reach out more people through social coding and associated measurements. But this situation may also be solved automatically after the org accumulates enough packages and benchmark data over time with less stress. With this, I shouldn't think of it too much. Sorry for making it complicated.
@garrison Agreed. @i2000s No worries, live and learn! If you're too busy I can draw up some short bullet points sometime this week, and put them in a PR to the site itself. It shouldn't take too much time, and I wanted to check out the site anyway - I haven't looked at the code yet.
I think we should specify somewhere that all repositories in JuliaQuantum will be under a license that has been approved by the Open Source Initiative. (Right now the document says they should be open source licenses, but OSI-approved is more specific -- in fact, I hear about many licenses being described as "open source" even though they fail to meet OSI's Open Source Definition.)
As for relicensing from more restrictive to less restrictive, I generally think there should be a fairly high barrier to doing so. Getting approval from two thirds of contributors is not a very high barrier, and does not consider the desires of the other third of people that contributed to a project under a given license.
I think we should specify somewhere that all repositories in JuliaQuantum will be under a license that has been approved by the Open Source Initiative.
Good point! I have specified the OSI-approved licenses with a link to their website in the original post.
As for relicensing from more restrictive to less restrictive, I generally think there should be a fairly high barrier to doing so. Getting approval from two thirds of contributors is not a very high barrier, and does not consider the desires of the other third of people that contributed to a project under a given license.
I have specified "no denial heard from all the received responses" as the necessary condition for relicensing. Does it make sense now?
I have specified "no denial heard from all the received responses" as the necessary condition for relicensing. Does it make sense now?
I do not see this revision but that makes sense to me. If we ever do need to exercise this procedure to change the license of the project, we may wish to consult with a lawyer before merging the relicensing pull request if we are unable to hear back from everyone regarding the change.
Here is a much-simplified and updated version as my first-step response to #47 . The final version will appear on our website in the next update.
Overall statement: JuliaQuantum is self-organized by people who are interested in developing software packages and computer libraries in Julia to facilitate quantum science and technology research and development in the spirit of open-source, open-access, and open-science. The organization provides forums and supports (GitHub, meetups, GSoC opportunities, etc.) for the quantum community to share their progress of related projects, to help grow the connections among Julians, to coordinate and cooperate across disciplines, and to promote related software development activities and projects... It is open to everyone and represented by everyone in the community. All participants are expected to follow the Julia community standards.
Responsibilities of the steering team include but are not limited to the following:
About using JuliaQuantum's website and Github repositories:
I am outlining some key points mainly for the purpose of quality control and the efficiency of operations. Please comment missed points below, and I will update them back here. To make it as short as possible, you should use common sense to explain general items. Please forgive me that some common knowledge may have also been emphasized, as I think it would be helpful for newbie of open-source projects. This documentation will be linked to the README file for the JuliaQuantum organization, and will be transferred to a editable document under the Roadmap repo once it becomes stable in practice.
Basic Agreement for Participating JuliaQuantum Projects
To ensure the continuous and sustainable development of the JuliaQuantum organization, the following basic agreement and instructions have been composed upon the initiative and development of this organization. We assume you have carefully read and understood the following items when you participate JuliaQuantum projects or become a member of the organization.
I. Purpose statement of JuliaQuantum.
JuliaQuantum as an open-source and non-for-profit organization is formed to unite the efforts of the quantum community to build fundamental and comprehensive Julia libraries for quantum mechanics, quantum chemistry, quantum information & computing, quantum measurement, quantum control and other quantum-related scientific fields. All libraries built by JuliaQuantum will be open-source and accessible on various operating systems. Through the open-source community collaborations organized under JuliaQuantum, we expect to maximize the performance of our codes, maintain the consistency of various functions and packages, span to a broad spectrum of applications and reduce the number of packages you need for technical computing in related fields. Carrying over the appealing features of the Julia language, JuliaQuantum projects are expected to bring you a foundation to build up more advanced programs relatively easily and fast. Moreover, as people got well organized, it becomes an immediately reachable goal to forge a sustainable ecosystem to promote our packages through participating nodes around the world and their activities and events sponsored by various sources interested in our projects as a whole.
II. Licensing under JuliaQuantum.
All projects under the coordination of JuliaQuantum organization are open source projects, and should be used and distributed under the claimed open-source licenses approved by Open Source Initiative. The default license for the produced codes and documentations is the MIT license. Other open-source licenses and external libraries can be used and should be specified in the LICENSE document of JuliaQuantum projects or where it specifies for specific cases. Documentations or websites under open-source licenses should allow redistribution, translation and customization to better fit a wide spectrum of needs of readers without bringing in damages to the legal rights of the original authors.
All video records or other first-hand and derived products made by or granted by JuliaQuantum contributors associated to an event sponsored or organized by JuliaQuantum should be distributed under an open-source license as well. For example, a video recorded for a meetup organized under the name of JuliaQuantum can be released via YouTube channel yet need to use the Creative Commons License instead of the default Standard YouTube License to permit free-of-charge editing and redistribution through other channels. Other resources released under JuliaQuantum should also use open-source licenses if possible. The default MIT license is assumed if no license or copyright claims under a JuliaQuantum repository.
A license of a repository or published product can be changed with the written permission from all related contributors to whom it affects. If a notification of requesting a change of the license has been sent to the contributors through email (contributors' email addresses can be found from the log of git commits) for longer than one month without receiving all positive response, the change can still be made if no less than two third of the total contributors related agree the change and no denial heared from all the received responses. The request of changing licenses should be made as a pull request or issue from the beginning.
III. Contribute to JuliaQuantum projects.
As an open-source organization, JuliaQuantum is powered by constructive contributions in various ways including implementing functionality of software or participating activities outlined but not limited to the Roadmaps, testing/debugging existing packages under JuliaQuantum, filing/solving issues or participating discussions under JuliaQuantum repository forums, news groups and emailing lists, as well as direct source code contributions through the usual pull request approach or direct write access to the source code repositories. Some notes on contributing to open-source projects can be found in the Julia's documentation for the base project and standards where the contribution targets and projects should be replaced by JuliaQuantum counterparts which will be introduced in this document.
IV. Organize JuliaQuantum projects.
1. Main Point: Integrating JuliaQuantum projects as an organizational entity.
The JuliaQuantum organization is formed under a clear purpose, and is promoted by organizing constructive projects. These projects can be categorized into two types:
a. Building Julia packages or libraries as a direct coding output of the organization, and associated activities to promote the specific packages. This type of projects can be counted in the units of repositories or packages on GitHub under JuliaQuantum.
b. Organizing events or non-coding activities that can help build a sustainable ecosystem of the organization and its packages. These projects include bringing JuliaQuantum projects and Julia to potential new users through meetups and hangouts, establishing developers' or users' nodes and networks, supporting JuliaQuantum members to participate related conferences to introduce JuliaQuantum's works to a broader audience, funds raising, introducing academic support teams into the organization, helping collect resources for teaching and learning how to use Julia and JuliaQuantum packages and so on so forth.
2. Add new repositories.
a. A new repository can be added under the name of JuliaQuantum organization with the permission of the steering team (see JuliaQuantum member teams in later section) of the organization. It is strongly suggested to have a project proposal posted in the issue forum of the Roadmap repository as well as the JuliaQuantum.github.io issue forum to notify the audience from the community for a public review lasting at least a week (see the Special repo section). Once the permission is granted, the proposer will be entitled as an owner of the JuliaQuantum organization--if he/she does not have the ownership before--to create the new repository and to manage the associated project under the organization. The new repository can also be created by the steering team members without granting the ownership to the proposer if not necessary to grant an ownership to the proposer or for the sake of management.
b. It is also suggested to have a prototype repository created under a personal account introduced for code review while proposing the new repository or project. This is helpful for the community to judge the value of the project and to raise constructive discussions on how to continue and improve this project, eventually it affects whether the steering team will pass the permission to create the new repository under the organization through listening to what the community say about the proposed direction. If the new repository will be modified based on the repository proposed, a simple
fork
of the original repository is not allowed to generate the new repository under the organization. You can push new content to the new repository as a fresh new project. Afork
will confuse people regarding the releasing channel which should be solely under the name of JuliaQuantum organization. With this said, a JuliaQuantum repository should not be a child or derived repository of any other repositories. Instead, you can create the empty GitHub repository first, and then add the address as a remote location of the source repository on your local machine followed by a forced push to the new GitHub repository. Technically, for the last two step, you can use commandsAfter these operations above, the newly born repository is officially recognized as JuliaQuantum's repository with all its revision history preserved and will be maintained by the community of JuliaQuantum as long as the organization exists. By default, the proposer of the project will be the leader of the repository and enjoy all the benefits an owner of the repository and the organization has--including being promoted as a steering team member of JuliaQuantum to make decisions on where the organization heads to.