README revision f4f78bb6
1f4f78bb6SmrgPixman is a library that provides low-level pixel manipulation
2b4b94579Smrgfeatures such as image compositing and trapezoid rasterization.
3b4b94579Smrg
4f4f78bb6SmrgQuestions, bug reports and patches should be directed to the pixman
5952204abSmrgmailing list:
6b4b94579Smrg
7952204abSmrg        http://lists.freedesktop.org/mailman/listinfo/pixman
8b4b94579Smrg
9f4f78bb6SmrgYou can also file bugs at
101b18d63aSmrg
111b18d63aSmrg        https://bugs.freedesktop.org/enter_bug.cgi?product=pixman
121b18d63aSmrg
13f4f78bb6SmrgFor real time discussions about pixman, feel free to join the IRC
14f4f78bb6Smrgchannels #cairo and #xorg-devel on the FreeNode IRC network.
15f4f78bb6Smrg
16f4f78bb6Smrg
17f4f78bb6SmrgContributing
18f4f78bb6Smrg------------
19f4f78bb6Smrg
20f4f78bb6SmrgIn order to contribute to pixman, you will need a working knowledge of
21f4f78bb6Smrgthe git version control system. For a quick getting started guide,
22f4f78bb6Smrgthere is the "Everyday Git With 20 Commands Or So guide"
23f4f78bb6Smrg
24f4f78bb6Smrg        http://www.kernel.org/pub/software/scm/git/docs/everyday.html
25f4f78bb6Smrg
26f4f78bb6Smrgfrom the Git homepage. For more in depth git documentation, see the
27f4f78bb6Smrgresources on the Git community documentation page:
28f4f78bb6Smrg
29f4f78bb6Smrg        http://git-scm.com/documentation
30f4f78bb6Smrg
31f4f78bb6SmrgPixman uses the infrastructure from the freedesktop.org umbrella
32f4f78bb6Smrgproject. For instructions about how to use the git service on
33f4f78bb6Smrgfreedesktop.org, see:
34f4f78bb6Smrg
35f4f78bb6Smrg        http://www.freedesktop.org/wiki/Infrastructure/git/Developers
36f4f78bb6Smrg
37f4f78bb6SmrgThe Pixman master repository can be found at:
38b4b94579Smrg
39b4b94579Smrg	git://anongit.freedesktop.org/git/pixman
40b4b94579Smrg
41f4f78bb6Smrgand browsed on the web here:
42f4f78bb6Smrg
43f4f78bb6Smrg	http://cgit.freedesktop.org/pixman/
44f4f78bb6Smrg
45f4f78bb6Smrg
46f4f78bb6SmrgSending patches
47f4f78bb6Smrg---------------
48f4f78bb6Smrg
49f4f78bb6SmrgThe general workflow for sending patches is to first make sure that
50f4f78bb6Smrggit can send mail on your system. Then, 
51f4f78bb6Smrg
52f4f78bb6Smrg - create a branch off of master in your local git repository
53f4f78bb6Smrg
54f4f78bb6Smrg - make your changes as one or more commits
55f4f78bb6Smrg
56f4f78bb6Smrg - use the 
57f4f78bb6Smrg
58f4f78bb6Smrg        git send-email
59f4f78bb6Smrg
60f4f78bb6Smrg   command to send the patch series to pixman@lists.freedesktop.org.
61f4f78bb6Smrg
62f4f78bb6SmrgIn order for your patches to be accepted, please consider the
63f4f78bb6Smrgfollowing guidelines:
64f4f78bb6Smrg
65f4f78bb6Smrg - This link:
66f4f78bb6Smrg
67f4f78bb6Smrg        http://www.kernel.org/pub/software/scm/git/docs/user-manual.html#patch-series
68f4f78bb6Smrg
69f4f78bb6Smrg   describes how what a good patch series is, and to create one with
70f4f78bb6Smrg   git.
71f4f78bb6Smrg
72f4f78bb6Smrg - At each point in the series, pixman should compile and the test
73f4f78bb6Smrg   suite should pass.
74f4f78bb6Smrg
75f4f78bb6Smrg   The exception here is if you are changing the test suite to
76f4f78bb6Smrg   demonstrate a bug. In this case, make one commit that makes the
77f4f78bb6Smrg   test suite fail due to the bug, and then another commit that fixes
78f4f78bb6Smrg   the bug.
79f4f78bb6Smrg
80f4f78bb6Smrg   You can run the test suite with 
81f4f78bb6Smrg
82f4f78bb6Smrg        make check
83f4f78bb6Smrg
84f4f78bb6Smrg   It will take around two minutes to run on a modern PC.
85f4f78bb6Smrg
86f4f78bb6Smrg - Follow the coding style described in the CODING_STYLE file
87f4f78bb6Smrg
88f4f78bb6Smrg - For bug fixes, include an update to the test suite to make sure
89f4f78bb6Smrg   the bug doesn't reappear.
90f4f78bb6Smrg
91f4f78bb6Smrg - For new features, add tests of the feature to the test
92f4f78bb6Smrg   suite. Also, add a program demonstrating the new feature to the
93f4f78bb6Smrg   demos/ directory.
94f4f78bb6Smrg
95f4f78bb6Smrg - Write descriptive commit messages. Useful information to include:
96f4f78bb6Smrg        - Benchmark results, before and after
97f4f78bb6Smrg	- Description of the bug that was fixed
98f4f78bb6Smrg	- Detailed rationale for any new API
99f4f78bb6Smrg	- Alternative approaches that were rejected (and why they
100f4f78bb6Smrg          don't work)
101f4f78bb6Smrg	- If review comments were incorporated, a brief version
102f4f78bb6Smrg          history describing what those changes were.
103f4f78bb6Smrg
104f4f78bb6Smrg - For big patch series, send an introductory email with an overall
105f4f78bb6Smrg   description of the patch series, including benchmarks and
106f4f78bb6Smrg   motivation. Each commit message should still be descriptive and
107f4f78bb6Smrg   include enough information to understand why this particular commit
108f4f78bb6Smrg   was necessary.
109b4b94579Smrg
110f4f78bb6SmrgPixman has high standards for code quality and so almost everybody
111f4f78bb6Smrgshould expect to have the first versions of their patches rejected.
112b4b94579Smrg
113f4f78bb6SmrgIf you think that the reviewers are wrong about something, or that the
114f4f78bb6Smrgguidelines above are wrong, feel free to discuss the issue on the
115f4f78bb6Smrglist. The purpose of the guidelines and code review is to ensure high
116f4f78bb6Smrgcode quality; it is not an exercise in compliance.
117