2014-11-16 16:27:32 +00:00
|
|
|
# Contributions Welcome!
|
|
|
|
|
|
|
|
The maintainers of this Copyleft Guide project encourage contribution from
|
|
|
|
the community. Part of the impetus for this project was to create a
|
|
|
|
community around a "copyleft codebase" for information about copyleft. In
|
|
|
|
other words, this project is a tutorial project about Copyleft that is like a
|
|
|
|
Free Software project.
|
|
|
|
|
|
|
|
## Who Is In Charge?
|
|
|
|
|
|
|
|
Currently, [Bradley M. Kuhn](http://ebb.org/bkuhn/) is the editor-in-chief of
|
|
|
|
this Guide project. However, many other contributors have given patches and
|
|
|
|
improvements to the text. Review the
|
|
|
|
[commit log in the Git repository](https://gitorious.org/copyleft-org/tutorial/commits/master)
|
2014-12-20 18:11:40 +00:00
|
|
|
for more details on who has contributed to the project.
|
2014-11-16 16:27:32 +00:00
|
|
|
|
|
|
|
## How Do I Get Involved?
|
|
|
|
|
2014-12-20 18:30:22 +00:00
|
|
|
The Guide is maintained in a copylefted distributed version control system called
|
2014-11-16 16:27:32 +00:00
|
|
|
[Git](http://git-scm.com/). Currently, the project utilizes the services of
|
2014-12-20 18:30:22 +00:00
|
|
|
a Git hosting website called [Gitorious](https://gitorious.org). (The
|
|
|
|
software which runs Gitorious is, itself, copylefted, too.)
|
|
|
|
|
|
|
|
Those who are comfortable with Gitorious can submit
|
2014-11-16 16:27:32 +00:00
|
|
|
[merge requests on copyleft.org's gitorious site](https://gitorious.org/copyleft-org/tutorial/merge_requests).
|
|
|
|
See the section "Merge Request and Patch Workflow" below for more information
|
|
|
|
on the details of doing that.
|
|
|
|
|
2014-12-20 18:36:51 +00:00
|
|
|
However, lack of Git and/or LaTeX knowledge is *not a barrier* for
|
|
|
|
contribution to this project. Useful contributions will be accepted by the
|
|
|
|
following means as well:
|
2014-11-16 16:27:32 +00:00
|
|
|
|
|
|
|
* Patches posted to
|
|
|
|
[the mailing list](http://lists.copyleft.org/cgi-bin/mailman/listinfo/discuss).
|
|
|
|
|
|
|
|
* New sections of text or simply ideas and input emailed to
|
|
|
|
[the mailing list](http://lists.copyleft.org/cgi-bin/mailman/listinfo/discuss).
|
|
|
|
|
|
|
|
* Ideas and suggestions mentioned on the
|
|
|
|
[irc channel #copyleft on freenode](irc://irc.freenode.net/#copyleft).
|
|
|
|
|
|
|
|
Please, do not worry if your patches or new sections of text are not properly
|
|
|
|
formatted as patches and/or are not formatted in LaTeX properly. Indeed,
|
2014-12-20 18:37:13 +00:00
|
|
|
feel free to offer patches that break LaTeX formatting, or to just write up
|
|
|
|
your suggestion in an email. If the content is appropriate for the Guide,
|
|
|
|
the editor-in-chief or someone else will format your contribution properly
|
|
|
|
for LaTeX.
|
2014-11-16 16:27:32 +00:00
|
|
|
|
|
|
|
Note: by submitting contributions via any of these means, you agree to the
|
|
|
|
"Author's Certificate of Origin" (see below).
|
|
|
|
|
|
|
|
## How Do I Figure Out What To Contribute?
|
|
|
|
|
|
|
|
If you're looking for something to fix, just grep the *.tex files for "FIXME"
|
|
|
|
and you'll find plenty. Many of them are simple and easy to do. Some of
|
2014-12-20 18:37:21 +00:00
|
|
|
them are writing, and some of them are simply formatting-related.
|
|
|
|
|
|
|
|
If you want a larger, more involved writing project, take a look at the
|
|
|
|
[TODO list in this repository](TODO.md). That list has bigger items that
|
|
|
|
other contributors have identified as necessary. (BTW, the project
|
|
|
|
contributors are considering various possible copylefted bug-tracking
|
|
|
|
solutions, but admittedly haven't picked a bug-tracker yet.)
|
2014-11-16 16:27:32 +00:00
|
|
|
|
|
|
|
There is also a [TODO list on the website](https://copyleft.org/todo/), which
|
|
|
|
are mostly related to formatting, layout and infrastructure, but if you'd
|
|
|
|
like to help there, such help is also welcome.
|
2014-11-16 16:53:35 +00:00
|
|
|
|
2014-12-22 21:10:06 +00:00
|
|
|
## Contributing Third-Party CC-BY-SA'd Works
|
|
|
|
|
2014-12-22 23:10:27 +00:00
|
|
|
As can be seen in
|
|
|
|
[the LaTeX source file, third-party-citations.tex](third-party-citations.tex),
|
|
|
|
some material from third-party works has occasionally been merged into this
|
|
|
|
guide. We're always on the hunt for useful CC-BY-SA'd materials that would
|
|
|
|
work well with this guide.
|
|
|
|
|
|
|
|
Do offer merge requests and/or patches that incorporate useful third-party
|
|
|
|
works, provided that is clearly licensed under CC-BY-SA. Follow these
|
|
|
|
procedures when doing so:
|
|
|
|
|
|
|
|
0. Target all changes for the 'next' branch (see below). Likely, use of a
|
|
|
|
secondary branch will be useful for the following steps (perhaps use the
|
|
|
|
procedure below entitled "Contributing via Gitorious" to do so).
|
|
|
|
|
|
|
|
1. If possible, follow this procedure for the first commit that begins the
|
|
|
|
work of integrating the third party text.
|
|
|
|
|
|
|
|
Initially, just "paste in" any useful text from the other work into the
|
|
|
|
appropriate .tex file. Try to keep it as similar to the upstream sourced
|
|
|
|
text as possible. Surround the text with '% FIXME: ' as needed to remind
|
|
|
|
that editing is needed to integrate the text into document. Then, commit
|
|
|
|
this just as a stand-alone commit without any attempt to integrate the
|
|
|
|
text.
|
|
|
|
|
|
|
|
While not strictly necessary, it's ideal to set the "Author" field and
|
|
|
|
"Author-Date" fields of this first commit to match the original author of
|
|
|
|
the work, rather than your own. You can do this with a command like this:
|
|
|
|
|
|
|
|
$ date="2014-05-31 13:15:01 -0400"; env GIT_AUTHOR_DATE="$date" GIT_AUTHOR_NAME="Original Author Name" GIT_AUTHOR_EMAIL="originalauthor@example.org" git commit -a
|
|
|
|
|
|
|
|
Write a commit message that specifically identifies the original author,
|
|
|
|
the original title of the published work. Include specific details
|
|
|
|
stating the reasons why you believe the work is licensed under CC-BY-SA.
|
|
|
|
If the original published work has a canonical hyperlink for the work,
|
|
|
|
include that as well in the commit message.
|
|
|
|
|
|
|
|
Finally, include any comments or reasoning why the text is appropriate for
|
|
|
|
the Guide (and/or, why some text from the original material is not
|
|
|
|
included because those parts aren't appropriate for the Guide).
|
|
|
|
|
|
|
|
This procedure creates a "commit point" that shows the specific text
|
|
|
|
brought from the other source — more-or-less as it stood in the
|
|
|
|
other work. This is useful for historical archiving purposes.
|
|
|
|
|
|
|
|
[Commit 678e841079aa708f98fe948ec8cef672d9a4c3cc](https://gitorious.org/copyleft-org/tutorial/commit/678e841079aa708f98fe948ec8cef672d9a4c3cc)
|
|
|
|
contains an example of this specific procedure.
|
|
|
|
|
|
|
|
2. In a second commit, by itself, add the following two things only:
|
|
|
|
|
|
|
|
* Update the copyright notices found in
|
|
|
|
[comprehensive-gpl-guide.tex](comprehensive-gpl-guide.tex). Ensure
|
|
|
|
that the LaTeX formatting is correct.
|
|
|
|
|
|
|
|
* Add an entry in
|
|
|
|
[third-party-citations.tex](third-party-citations.tex) with a link to
|
|
|
|
the work. Mimic the formatting of existing '\item' entries on the
|
|
|
|
list already in that file.
|
|
|
|
|
|
|
|
3. Next, through a series of small commits, carefully integrate the text into
|
|
|
|
the larger whole. Think carefully about how the new text will appear to
|
|
|
|
readers. Rework phrases as necessary to match the style of the existing
|
|
|
|
text of the Guide; pay particular attention to the style in the paragraphs
|
|
|
|
immediately surrounding your pastes to ensure the text reads a unified
|
|
|
|
whole. Commit changes as necessary, in the smallest increments reasonably
|
|
|
|
possible.
|
|
|
|
|
|
|
|
4. Carefully vet the text for locations where the positions contradict or
|
|
|
|
otherwise aren't fully congruent with the existing material in the Guide.
|
|
|
|
Ideally, all copyleft advocates would agree on all points, but they don't.
|
|
|
|
Therefore, the Guide should note the major differences in opinion in the
|
|
|
|
actual text, and include footnotes for any notable minority opinions.
|
|
|
|
Commit changes as necessary, in the smallest increments reasonably
|
|
|
|
possible.
|
|
|
|
|
|
|
|
[Commit 07a02b0b1c6d3ac2af9ed21b2a563abcf44d3d0f](https://gitorious.org/copyleft-org/tutorial/commit/07a02b0b1c6d3ac2af9ed21b2a563abcf44d3d0f)
|
|
|
|
is an example of the process for the last two steps.
|
|
|
|
|
|
|
|
5. Submit a merge request for your branch into 'next'. In this particular
|
|
|
|
situation, it's particularly helpful to make a formal merge request on
|
|
|
|
Gitorious rather than emailing a patch set.
|
2014-12-22 21:10:06 +00:00
|
|
|
|
2014-11-16 16:53:35 +00:00
|
|
|
## Merge Request and Patch Workflow
|
|
|
|
|
2014-12-20 18:42:11 +00:00
|
|
|
Currently, the main location for work on this project is
|
|
|
|
[on Gitorious](https://gitorious.org/copyleft-org/tutorial), and active new
|
|
|
|
development on the project happens on the
|
|
|
|
['next' branch](https://gitorious.org/copyleft-org/tutorial/source/next:)
|
|
|
|
(which is
|
|
|
|
[auto-published on the copyleft.org/guide-next URL](https://copyleft.org/guide-next/)).
|
|
|
|
Here is a suggested workflow for submitting patches — first doing so
|
2014-12-20 22:21:31 +00:00
|
|
|
*with* the Gitorious infrastructure, second *avoiding* the Gitorious
|
|
|
|
infrastructure but still using Git, and third avoiding Git altogether.
|
|
|
|
|
|
|
|
Merge requests and/or patches against
|
|
|
|
['next' branch](https://gitorious.org/copyleft-org/tutorial/source/next:) are
|
|
|
|
typically much preferred, and the workflow explanations below assume that.
|
|
|
|
However, merge requests and/or patches against
|
|
|
|
['master' branch](https://gitorious.org/copyleft-org/tutorial/source/master:)
|
|
|
|
are not necessarily rejected. In fact, if your change is a fix for typo,
|
|
|
|
spelling, grammar, formatting or anything urgent, submitting a patch against
|
|
|
|
'master' may make more sense.
|
2014-11-16 16:53:35 +00:00
|
|
|
|
2014-12-20 22:53:02 +00:00
|
|
|
To use the instructions below for proposals against the 'master' branch, just
|
|
|
|
replace 'next' everywhere below with 'master'.
|
|
|
|
|
|
|
|
|
2014-12-20 22:42:18 +00:00
|
|
|
### Contributing via Gitorious
|
|
|
|
|
|
|
|
First-time contributors may want to do the following four items first:
|
|
|
|
|
|
|
|
0. [Create an account on Gitorious](https://gitorious.org/users/new)
|
|
|
|
|
|
|
|
1. [Visit gitorious.org/copyleft-org/tutorial](https://gitorious.org/copyleft-org/tutorial)
|
|
|
|
and click "Clone".
|
|
|
|
|
|
|
|
Instead of the default, you might call your clone
|
|
|
|
"MYNAME-copyleft-tutorial-suggestions".
|
|
|
|
|
|
|
|
2. On the command line create a *local* clone of your Clone, by typing:
|
|
|
|
|
|
|
|
$ git clone git@gitorious.org:copyleft-org/MYNAME-copyleft-tutorial-suggestions.git copyleft-tutorial
|
|
|
|
$ cd copyleft-tutorial
|
|
|
|
$ git remote rename origin MYNAME-copyleft-tutorial-suggestions
|
|
|
|
|
|
|
|
(The last part isn't strictly necessary; you just might want to name the
|
|
|
|
upstream repository a more descriptive name, since below you'll add the
|
|
|
|
official repository as well).
|
|
|
|
|
2014-12-22 22:44:17 +00:00
|
|
|
3. Now, add to your clone a copy of the "real" copyleft.org tutorial
|
2014-12-20 22:42:18 +00:00
|
|
|
repository, and make a branch that tracks the official version:
|
|
|
|
|
|
|
|
$ git remote add copyleft-tutorial-official git@gitorious.org:copyleft-org/tutorial.git
|
|
|
|
$ git fetch copyleft-tutorial-official
|
|
|
|
$ git branch --track official-next copyleft-tutorial-official/next
|
|
|
|
|
|
|
|
That completes the first-time setup. Next is a workflow each proposed merge
|
|
|
|
request.
|
|
|
|
|
|
|
|
0. First, ensure the Git repository points at the right branch and all old
|
|
|
|
changes are committed.
|
|
|
|
|
|
|
|
$ git status
|
|
|
|
|
|
|
|
The output of the last command should look like this:
|
|
|
|
|
2014-12-20 23:30:33 +00:00
|
|
|
# On branch SOME_BRANCH
|
2014-12-20 22:42:18 +00:00
|
|
|
nothing to commit (working directory clean)
|
|
|
|
|
2014-12-20 23:30:33 +00:00
|
|
|
If you don't get that output, you probably have uncommitted changes from
|
|
|
|
some other situation, which is beyond the scope of this document.
|
|
|
|
|
|
|
|
1. Now, get the most recent version of the 'next' branch:
|
|
|
|
|
|
|
|
$ git checkout master
|
|
|
|
$ git branch -D official-next
|
|
|
|
$ git fetch copyleft-tutorial-official
|
|
|
|
$ git branch --track official-next copyleft-tutorial-official/next
|
|
|
|
$ git checkout official-next
|
|
|
|
$ git pull
|
|
|
|
|
|
|
|
(This step is more complicated than is typically found in a tutorial like
|
|
|
|
this. Experienced Git users will note the above is the easiest way to
|
|
|
|
handle the fact that the 'next' branch is occasionally rebased against
|
|
|
|
master. If 'next' branch has not been rebased since the last time the
|
|
|
|
operation was performed, the last two commands suffice for this step.)
|
2014-12-20 22:42:18 +00:00
|
|
|
|
|
|
|
1. Next, create a new branch to hold your changes:
|
|
|
|
|
|
|
|
$ git checkout -b my-new-idea-for-tutorial official-next
|
|
|
|
|
|
|
|
Use a name that briefly describes your planned proposal for
|
|
|
|
"my-new-idea-for-tutorial".
|
|
|
|
|
|
|
|
2. Make your edits. If you're editing the tutorial, you likely want to focus
|
|
|
|
on the files ending in '.tex'. Commit frequently while you're editing
|
|
|
|
with:
|
|
|
|
|
|
|
|
$ git commit -a
|
|
|
|
|
|
|
|
Write useful and clear commit messages that explain the purpose of the
|
|
|
|
changes.
|
|
|
|
|
|
|
|
3. When you are done all the changes related to 'my-new-idea-for-tutorial',
|
|
|
|
verify they've all been committed this way:
|
|
|
|
|
|
|
|
$ git status
|
|
|
|
# On branch my-new-idea-for-tutorial
|
|
|
|
nothing to commit (working directory clean)
|
|
|
|
|
|
|
|
4. Next, upload and publish those ideas to your own clone on Gitorious.
|
|
|
|
|
|
|
|
$ git push MYNAME-copyleft-tutorial-suggestions my-new-idea-for-tutorial
|
|
|
|
|
|
|
|
That's the end of the command-line part.
|
|
|
|
|
2014-12-20 22:49:05 +00:00
|
|
|
5. Now, visit Gitorious' merge-request creation web interface at
|
2014-12-20 22:42:18 +00:00
|
|
|
https://gitorious.org/copyleft-org/MYNAME-copyleft-tutorial-suggestions/merge_requests/new
|
2014-12-20 22:49:05 +00:00
|
|
|
|
2014-12-20 22:42:18 +00:00
|
|
|
Initiate your merge request with by setting:
|
|
|
|
|
|
|
|
Summary: Briefly describe your proposal
|
|
|
|
Description: More completely describe your proposal
|
|
|
|
Target: tutorial
|
|
|
|
Target Branch: next
|
|
|
|
Source Branch: my-new-idea-for-tutorial
|
|
|
|
|
2014-12-20 22:50:42 +00:00
|
|
|
6. While it's possible to discuss the details of the merge request via the
|
|
|
|
web interface, for larger changes, it may be worthwhile to start a thread
|
|
|
|
on
|
|
|
|
[the mailing list](http://lists.copyleft.org/cgi-bin/mailman/listinfo/discuss)
|
|
|
|
about the merge request. Include the URL of the merge request in the
|
|
|
|
post.
|