Contributing to Greasemonkey: Difference between revisions

From GreaseSpot Wiki
Jump to navigationJump to search
Jp (talk | contribs)
mNo edit summary
 
(14 intermediate revisions by 9 users not shown)
Line 1: Line 1:
Want to help with Greasemonkey? Great! We need all the help we can get.
See https://github.com/greasemonkey/greasemonkey


Here's how to get started:
== Documentations ==
 
* [https://github.com/greasemonkey/greasemonkey/wiki Developers wiki]
 
** [https://github.com/greasemonkey/greasemonkey/wiki/Development-Philosophy Development Philosophy]
== Decide what to to ==
* [http://greasemonkey.github.com/contrib.html Contributing to Greasemonkey]
 
* [http://greasemonkey.github.com/style.html Greasemonkey - JavaScript Style Guide]
All changes to Greasemonkey should be associated with a bug in the [http://mozdev.org/bugs/buglist.cgi?bug_status=UNCONFIRMED&bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&email1=&emailtype1=substring&emailassigned_to1=1&email2=&emailtype2=substring&emailreporter2=1&bugidtype=include&bug_id=&changedin=&votes=&chfieldfrom=&chfieldto=Now&chfieldvalue=&product=greasemonkey&short_desc=&short_desc_type=allwordssubstr&long_desc=&long_desc_type=allwordssubstr&bug_file_loc=&bug_file_loc_type=allwordssubstr&field0-0-0=noop&type0-0-0=noop&value0-0-0=&cmdtype=doit&order=Bug+Number Greasemonkey Bugs Database].
 
If there is a feature that you want that doesn't exist yet, that is a bug too, so go ahead and create an account and add it. But first, make sure it isn't already there.
 
If you don't have anything in particular you want to do, then just pick something from the bugs database. Bugs are categorized by priority (P1 is the highest, P5 is the lowest).
 
== Announce your intentions ==
 
This step is '''very important'''. You should communicate what you intend to do with the Greasemonkey community before you begin doing it. If you don't do this, there's no guarantee that we won't request significant changes before accepting it, or that we will accept it at all.
 
To announce your intentions, join greasemonkey-dev@googlegroups.com at http://groups.google.com/group/greasemonkey-dev and send us a note saying what you want to change. Include the link to the BugsDB entry.
 
There will likely be discussion in the comments of the bug as to the appropriate strategy for the design and implementation. Once there is consensus, you can assign the bug to yourself and begin your implementation.
 
== Get the source code ==
 
Greasemonkey source code is manage with [http://www.nongnu.org/cvs/ CVS]. Using CVS means that we can see all the changes that anyone has ever made to Greasemonkey, and can always roll back to some earlier state if something gets broken.
 
To use CVS, you need to install a CVS client and "check out" the source code. Here is a quick explanation of how to do this on various platforms:
 
=== Windows ===
 
* Install [http://www.tortoisecvs.org/ TortoiseCVS]
* Create a folder to store your Greasemonkey files in. For the sake of conversation, let's call this folder 'greasemonkey'.
* Right click on the greasemonkey folder and select 'new module' from the CVS menu
* Paste this string into the CVSROOT textbox: ''':pserver:guest@mozdev.org:/cvs login'''
* Press OK. All the greasemonkey files will be downloaded into the folder.
 
=== Mac ===
 
* TODO
 
=== Linux ===
 
* mkdir greasemonkey
* cvs -d :pserver:guest@mozdev.org:/cvs login
* cvs -z3 -d :pserver:guest@mozdev.org:/cvs co greasemonkey
 
== Implement your change ==
 
Greasemonkey is easy to hack on because it has a quick edit/test cycle. Here is how to set it up.
 
=== Set up your development profile ===
 
You will want to have a separate Firefox profile for developing Greasemonkey. It's useful because you can have your regular Firefox profile open for reading email and checking documentation without having to constantly restart it when you want to test your changes to GM.
 
Also, if something you change happens to corrupt your profile, you won't destroy your main one :-)
 
To set up a new Firefox profile, you can use the regular Firefox Profile Manager, but I think it is easier to create the directory yourself:
 
==== Windows ====
 
# Create a new folder anywhere you want, let's say "c:\gmprofile".
# Inside the folder, create a new folder, called "extensions".
# Inside that folder, create a new text file called '''{e4a8a97b-f2ed-450b-b12d-ee082ba24781}''' (without the quotes). It's important the file not have ".txt" at the end.
# Open the text file and enter the path to the '''src''' folder inside your Greasemonkey checkout. So if you checked out to c:\greasemonkey then you would enter '''c:\greasemonkey\src''' inside the text file.
# Close any open Firefox windows
# Open a command prompt by going to Start > Run > and typing "cmd".
# Run firefox with this command: '''MOZ_NO_REMOTE=1 c:\program files\firefox\firefox.exe -profile c:\gmprofile'''.
 
Obviously, you will need to change the path to firefox.exe to be correct for your system. You can find the path to firefox.exe by right-clicking on any firefox icon and showing it's properties.
 
==== Linux ====
 
# mkdir -p gmprofile/extensions
# echo 'path/to/greasemonkey/checkout/src' > gmprofile/extensions/{e4a8a97b-f2ed-450b-b12d-ee082ba24781}
# MOZ_NO_REMOTE=1 firefox -profile gmprofile
 
==== Mac ====
 
TODO
 
 
The MOZ_NO_REMOTE=1 part of the command allows other firefox profiles to be run at the same time. So now, you should be able to open your regular firefox at the same time and use it to browse docs or check mail or whatever.
 
Your development cycle will now be something like this:
 
# Edit files in your greasemonkey source checkout
# Restart firefox (using MOZ_NO_REMOTE=1... command)
# Test change
# Rinse, repeat
 
No separate compile step is necessary.
 
== Send your changes for review ==
 
Changes to any open source project are communicated by way of something called a "patch" or "diff" file. This is a special file that shows the changes you have made on your private copy of Greasemonkey. You can generate one using your CVS client.
 
* Windows: Right-click on the greasemonkey folder and select cvs > diff
* Linux: from the root source directory: '''cvs diff > /tmp/greasemonkey.patch'''
* Mac: TODO
 
Take your patch file and attach it to the bug with a description of what you have done. There will hopefully be some feedback from the community.  Continue in an iterative fashion, collecting feedback, making changes, etc, until you believe you are done and everyone else does too.
 
Once this occurs, the Greasemonkey admins (currently just Aaron) will decide which release your change should appear in. Usually this will just be the next one. Someone with access to commit changes to source control (currently Jeremy, Aaron, and Nickolas) will submit your changes and add you to the contributors list in the install.rdf file.

Latest revision as of 16:30, 3 November 2017