1 1.1.1.8 mrg Pixman 2 1.1.1.8 mrg ====== 3 1.1.1.8 mrg 4 1.1.1.5 mrg Pixman is a library that provides low-level pixel manipulation 5 1.1 mrg features such as image compositing and trapezoid rasterization. 6 1.1 mrg 7 1.1.1.8 mrg Questions should be directed to the pixman mailing list: 8 1.1 mrg 9 1.1.1.8 mrg https://lists.freedesktop.org/mailman/listinfo/pixman 10 1.1 mrg 11 1.1.1.5 mrg You can also file bugs at 12 1.1.1.4 mrg 13 1.1.1.8 mrg https://gitlab.freedesktop.org/pixman/pixman/-/issues/new 14 1.1.1.8 mrg 15 1.1.1.8 mrg or submit improvements in form of a Merge Request via 16 1.1.1.8 mrg 17 1.1.1.8 mrg https://gitlab.freedesktop.org/pixman/pixman/-/merge_requests 18 1.1.1.4 mrg 19 1.1.1.5 mrg For real time discussions about pixman, feel free to join the IRC 20 1.1.1.5 mrg channels #cairo and #xorg-devel on the FreeNode IRC network. 21 1.1.1.5 mrg 22 1.1.1.5 mrg 23 1.1.1.5 mrg Contributing 24 1.1.1.5 mrg ------------ 25 1.1.1.5 mrg 26 1.1.1.5 mrg In order to contribute to pixman, you will need a working knowledge of 27 1.1.1.5 mrg the git version control system. For a quick getting started guide, 28 1.1.1.5 mrg there is the "Everyday Git With 20 Commands Or So guide" 29 1.1.1.5 mrg 30 1.1.1.8 mrg https://www.kernel.org/pub/software/scm/git/docs/everyday.html 31 1.1.1.5 mrg 32 1.1.1.5 mrg from the Git homepage. For more in depth git documentation, see the 33 1.1.1.5 mrg resources on the Git community documentation page: 34 1.1.1.5 mrg 35 1.1.1.8 mrg https://git-scm.com/documentation 36 1.1.1.5 mrg 37 1.1.1.5 mrg Pixman uses the infrastructure from the freedesktop.org umbrella 38 1.1.1.5 mrg project. For instructions about how to use the git service on 39 1.1.1.5 mrg freedesktop.org, see: 40 1.1.1.5 mrg 41 1.1.1.8 mrg https://www.freedesktop.org/wiki/Infrastructure/git/Developers 42 1.1.1.5 mrg 43 1.1.1.5 mrg The Pixman master repository can be found at: 44 1.1 mrg 45 1.1.1.8 mrg https://gitlab.freedesktop.org/pixman/pixman 46 1.1.1.5 mrg 47 1.1.1.5 mrg 48 1.1.1.7 mrg Sending patches 49 1.1.1.7 mrg --------------- 50 1.1.1.5 mrg 51 1.1.1.8 mrg Patches should be submitted in form of Merge Requests via Gitlab. 52 1.1.1.5 mrg 53 1.1.1.8 mrg You will first need to create a fork of the main pixman repository at 54 1.1.1.6 mrg 55 1.1.1.8 mrg https://gitlab.freedesktop.org/pixman/pixman 56 1.1.1.6 mrg 57 1.1.1.8 mrg via the Fork button on the top right. Once that is done you can add your 58 1.1.1.8 mrg personal repository as a remote to your local pixman development git checkout: 59 1.1.1.5 mrg 60 1.1.1.8 mrg git remote add my-gitlab git (a] gitlab.freedesktop.org:YOURUSERNAME/pixman.git 61 1.1.1.5 mrg 62 1.1.1.8 mrg git fetch my-gitlab 63 1.1.1.5 mrg 64 1.1.1.8 mrg Make sure to have added ssh keys to your gitlab profile at 65 1.1.1.6 mrg 66 1.1.1.8 mrg https://gitlab.freedesktop.org/profile/keys 67 1.1.1.6 mrg 68 1.1.1.8 mrg Once that is set up, the general workflow for sending patches is to create a 69 1.1.1.8 mrg new local branch with your improvements and once it's ready push it to your 70 1.1.1.8 mrg personal pixman fork: 71 1.1.1.6 mrg 72 1.1.1.8 mrg git checkout -b fix-some-bug 73 1.1.1.8 mrg ... 74 1.1.1.8 mrg git push my-gitlab 75 1.1.1.8 mrg 76 1.1.1.8 mrg The output of the `git push` command will include a link that allows you to 77 1.1.1.8 mrg create a Merge Request against the official pixman repository. 78 1.1.1.8 mrg 79 1.1.1.8 mrg Whenever you make changes to your branch (add new commits or fix up commits) 80 1.1.1.8 mrg you push them back to your personal pixman fork: 81 1.1.1.8 mrg 82 1.1.1.8 mrg git push -f my-gitlab 83 1.1.1.8 mrg 84 1.1.1.8 mrg If there is an open Merge Request Gitlab will automatically pick up the 85 1.1.1.8 mrg changes from your branch and pixman developers can review them anew. 86 1.1.1.8 mrg 87 1.1.1.8 mrg In order for your patches to be accepted, please consider the 88 1.1.1.8 mrg following guidelines: 89 1.1.1.5 mrg 90 1.1.1.5 mrg - At each point in the series, pixman should compile and the test 91 1.1.1.5 mrg suite should pass. 92 1.1.1.5 mrg 93 1.1.1.5 mrg The exception here is if you are changing the test suite to 94 1.1.1.5 mrg demonstrate a bug. In this case, make one commit that makes the 95 1.1.1.5 mrg test suite fail due to the bug, and then another commit that fixes 96 1.1.1.5 mrg the bug. 97 1.1.1.5 mrg 98 1.1.1.5 mrg You can run the test suite with 99 1.1.1.5 mrg 100 1.1.1.8 mrg meson test -C builddir 101 1.1.1.5 mrg 102 1.1.1.5 mrg It will take around two minutes to run on a modern PC. 103 1.1.1.5 mrg 104 1.1.1.5 mrg - Follow the coding style described in the CODING_STYLE file 105 1.1.1.5 mrg 106 1.1.1.5 mrg - For bug fixes, include an update to the test suite to make sure 107 1.1.1.5 mrg the bug doesn't reappear. 108 1.1.1.5 mrg 109 1.1.1.5 mrg - For new features, add tests of the feature to the test 110 1.1.1.5 mrg suite. Also, add a program demonstrating the new feature to the 111 1.1.1.5 mrg demos/ directory. 112 1.1.1.5 mrg 113 1.1.1.5 mrg - Write descriptive commit messages. Useful information to include: 114 1.1.1.5 mrg - Benchmark results, before and after 115 1.1.1.5 mrg - Description of the bug that was fixed 116 1.1.1.5 mrg - Detailed rationale for any new API 117 1.1.1.5 mrg - Alternative approaches that were rejected (and why they 118 1.1.1.5 mrg don't work) 119 1.1.1.5 mrg - If review comments were incorporated, a brief version 120 1.1.1.5 mrg history describing what those changes were. 121 1.1.1.5 mrg 122 1.1.1.8 mrg - For big patch series, write an introductory post with an overall 123 1.1.1.5 mrg description of the patch series, including benchmarks and 124 1.1.1.5 mrg motivation. Each commit message should still be descriptive and 125 1.1.1.5 mrg include enough information to understand why this particular commit 126 1.1.1.5 mrg was necessary. 127 1.1 mrg 128 1.1.1.5 mrg Pixman has high standards for code quality and so almost everybody 129 1.1.1.5 mrg should expect to have the first versions of their patches rejected. 130 1.1 mrg 131 1.1.1.5 mrg If you think that the reviewers are wrong about something, or that the 132 1.1.1.8 mrg guidelines above are wrong, feel free to discuss the issue. The purpose 133 1.1.1.8 mrg of the guidelines and code review is to ensure high code quality; it is 134 1.1.1.8 mrg not an exercise in compliance. 135