Skip to content
Daniel Mendler edited this page Jan 12, 2024 · 20 revisions

Repositories

EXWM is part of GNU ELPA, while development takes place on GitHub.

EXWM on Github

URLs:

EXWM on GNU ELPA

URLs:

GNU ELPA hosts XELB and EXWM as external branches (externals/xelb and externals/exwm respectively). GNU ELPA infrastructure builds a package each time the Version: field of the main source file is changed.

Note that GNU ELPA contributors (Emacs developers) commit changes from time to time.

The GNU ELPA repository is hosted on Savannah (https://savannah.gnu.org/projects/emacs). In order to commit to the GNU ELPA repository the following is needed:

  1. Create a Savannah account

  2. Request becoming a member of the emacs group (My Groups -> Request for Inclusion). Might take a few days for membership to be granted.

  3. Add a SSH Key (My Account Conf -> Authentication Setup -> Edit SSH Public Key)

  4. Add the repository as a Git remote:

    (Skip this and see "Set up local checkouts" below.)

    git remote add elpa.gnu.org [email protected]:/srv/git/emacs/elpa.git -t externals/exwm

    Same for XELB.

EXWM's Testing Team

general client floating fullscreen minibuffer randr systemtray
@jaor
@zhenhua-wang

Inviting new members

I'd like to ask you whether you'd want to form part of EXWM's Testing Team. Before tagging a new release, I'll open a ticket @-mentioning members of the team, with the intention of obtaining feedback about the changes before deploying (note that I only use a small part of EXWM's features). You can also volunteer for testing specific features (client, floating, fullscreen, randr and systemtray at the moment), in which case I'll also @-mention you on changes related to the area. There are no obligations attached to becoming a member: you'll receive a notification, I'll be grateful if you can test and report. You can leave the team by letting me know or erasing your handle from Maintenance yourself.

Call for Testing

This is a DRAFT.

Create a new ticket:

  1. Subject

    Call for testing of EXWM 0.XY

  2. Content

    We will soon release EXWM 0.XY, which incorporates improvements in the following areas:

    EXWM's Testing Team, please test and report back if possible ([INSERT @-mentions]). All users are invited to test and report.

    Will release in N days.

    Thank you.

    1. Replace the correct version number
    2. Replace the ChangeLog
    3. Add link to GNU-devel tarball?
    4. Add EXWM's Testing Team @-mentions
    5. Replace expected release date.

Merging contributions

Contributions usually come in the form of Pull Requests in GitHub.

  1. Review
  2. Test
  3. Check style (indentation, doc, etc.)
  4. Check copyright assignment or trivial tiny change
    • If it is a trivial change append Copyright-paperwork-exempt: yes to the commit message
  5. Check commit messages

Merge with:

(WARN: It seems to me that the following is bad advice: we regularly merge non-fast-fordwardable branches and actually fast-forwarding does not usually work with PRs unless rebased.)

git merge --ff-only

Use the following commit message when merging Pull Requests (no reason other than consistency):

Merge branch 'CONTRIBUTOR.github.com/BRANCH' into externals/exwm

Releasing

  1. Create a commit increasing the value of the Version: field in exwm.el. The commit message should be Bump version to 0.XY.

  2. Tag the commit with the version number: git tag 0.XY

  3. Push to both GNU ELPA and emacs-exwm.github.org. The tag should only be pushed to the latter.

    git push --dry-run elpa.gnu.org 0.XY:externals/exwm
    git push --dry-run emacs-exwm.github.com 0.XY:master 0.XY

    Drop --dry-run after review.

  4. Edit the Changelog header in the wiki home-page:

    #### 0.XY
    <!-- ...................................................................... -->
    
    What's new:
    
    * Item 1
    * Item 2
    * ...
    
    Major fixes:
    
    * Item 1
    * Item 2
    * ...
  5. Create a GitHub Release

Check copyright assignment

Disregard https://www.gnu.org/prep/maintain/maintain.html#Copyright-Papers: as part of GNU ELPA we must ask the ELPA Maintainers (Stefan Monnier as of 2022, otherwise ask [email protected]) to check copyright assignment for us.

Propose contributors to assign copyright to the FSF for contributions to Emacs. Examples:

Please consider assigning copyright to the FSF for Emacs-related contributions, so that I can accept further contributions in the future. Have a look at https://www.gnu.org/software/emacs/manual/html_node/emacs/Copyright-Assignment.html for the process. You are welcome to ask questions here or in [email protected].

Please consider assigning copyright to the FSF for Emacs-related contributions, otherwise I won't be able to accept further contributions in the future. I'd like more contributions from you in the future! Have a look a https://www.gnu.org/software/emacs/manual/html_node/emacs/Copyright-Assignment.html for the process or ask here or in [email protected]. Depending on where you live and your situation it might be quick or more... paperworky.

I couldn't find your copyright assignment. EXWM is part of GNU ELPA, which is part of GNU Emacs. Contributions to Emacs must have their copyright assigned to the FSF (with some exceptions), see https://www.gnu.org/software/emacs/manual/html_node/emacs/Copyright-Assignment.html. I'm afraid that I can't accept your contribution without the assignment, so I kindly ask you to assign copyright for this contribution (or all contributions to Emacs) to the FSF. The process roughly consists of you signing the assignment and possibly your employer signing a disclaimer, then sending it to the FSF and waiting

You would have to assign copyright to the FSF or sign a disclaimer. This requires some paperwork (which sometimes can be done online, and othertimes must be done per snail-mail). If you’ve never heard about this, I can expand on it, just let me know.

To: [email protected]

REQUEST: SEND FORM FOR PAST AND FUTURE CHANGES

[What is the name of the program or package you're contributing to?]

[Did you copy any files or text written by someone else in these changes? Even if that material is free software, we need to know about it.]

[Do you have an employer who might have a basis to claim to own your changes? Do you attend a school which might make such a claim?]

[For the copyright registration, what country are you a citizen of?]

[What year were you born?]

[Please write your email address here.]

[Please write your postal address here.]

[Which files have you changed so far, and which new files have you written so far?]

See:

Chores

Commit messages

We follow Emacs commit message conventions. See http://git.savannah.gnu.org/cgit/emacs.git/tree/CONTRIBUTE#Commit+messages.

Remember to add the Copyright-paperwork-exempt: yes trailer line for trivial changes without assignment.

New maintainer

Update maintainer field

Write your name and e-mail in the Maintainer field of exwm.el.

Set up local checkouts

EXWM

git init exwm; # create empty checkout
cd exwm;
git remote add elpa.gnu.org [email protected]:/srv/git/emacs/elpa.git -t externals/exwm; # add elpa remote
git remote add emacs-exwm.github.com [email protected]:emacs-exwm/exwm.git; # add github remote
git config --add remote.emacs-exwm.github.com.fetch '+refs/pull/*/head:refs/remotes/emacs-exwm.github.com/pull/*'; # fetch pull requests
git fetch --all
git checkout externals/exwm

EXWM's Wiki

git clone [email protected]:emacs-exwm/exwm.wiki.git

XELB:

git init xelb; # create empty checkout
cd xelb;
git remote add elpa.gnu.org [email protected]:/srv/git/emacs/elpa.git -t externals/xelb; # add elpa remote
git remote add emacs-exwm.github.com [email protected]:emacs-exwm/xelb.git; # add github remote
git config --add remote.emacs-exwm.github.com.fetch '+refs/pull/*/head:refs/remotes/emacs-exwm.github.com/pull/*'; # fetch pull requests
git fetch --all
git checkout externals/xelb

Additional resources