summaryrefslogtreecommitdiff
path: root/README.developers
blob: 48c266478fa4107d33dc34d0ff1148c2ebc6f538 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
=======================================================================
*** README.developers - JACK development practices                  ***
=======================================================================

Version: $Id$

-----------------------------------------------------------------------
 What is this? 
-----------------------------------------------------------------------

This file is a collection of practices and rules for JACK
development. If you have questions, or would like to make 
changes, raise the issue on jackit-devel (see 
http://jackit.sourceforge.net/lists ).

---------------------------------------------------------------------
 Contents
-----------------------------------------------------------------------

- What is this?
- Version numbers
- Important files for developers
- Sending patches
- CVS Access
- Decision Process

-----------------------------------------------------------------------
 Important files for developers
-----------------------------------------------------------------------

AUTHORS
	List of contributors. If you have contributed code, mail Paul 
	Davis to get your name added to the list, or if you have 
	CVS-access, help yourself. :)
README.developers 
	This file.
TODO
	A one file mini-bugzilla for JACK developers. Contains a list
 	of open and closed items. You can update this directly or 
 	contact Kai Vehmanen if you don't have CVS access.
libjack/ChangeLog
	A list of _all_ changes to the public interface!

-----------------------------------------------------------------------
 Version numbers 
-----------------------------------------------------------------------

1. JACK's package version

JACK's package version is set in configure.in, and consists of 
major, minor and revision numbers. This version should be 
updated whenever a non-trivial set of changes is committed 
to CVS:
 
   major version = ask on jackit-devel :)
   minor version = incremented when any of the public or internal
                   interfaces are changed
   revision      = incremented when implementation-only
                   changes are made

2. Client API versioning

JACK clients are affected by two interfaces, the JACK Client API (libjack)
and the JACK Client Protocol API (interface between jackd and 
libjack). The former one is versioned using libtool interface 
versioniong (set in configure.in). This version should be updated 
whenever a set of changes affecting the interface is committed 
to CVS:

    current  = incremented whenever the public libjack API is changed 
    revision = incremented when the libjack implementation is changed
    age      = current libjack is both source and binary compatible with
               libjack interfaces current,current-1,...,current-age

Note! It was decided in January 2003 that current interface number
      will remain as zero until the first stable JACK version
      is released.

JACK Client Protocol is versioned... <TBD>.

Note! All changes that affect the libjack API must be documented 
in jack/libjack/ChangeLog using the standard ChangeLog style
(see GNU developer docs).

---------------------------------------------------------------------
 Sending patches
-----------------------------------------------------------------------

1. People without CVS-access

Send your patches to jackit-devel. Normally patches are accepted
by Paul Davis. He either applies the patch right away, or 
sends an "ok to me" message, after which other developers with
CVS-access can commit the patch.

2. People with CVS-access

Trivial changes can be committed without review. For non-trivial 
changes, you should first send a proposal to jackit-devel and
wait for comments. There are no strict approval rules so use of
common sense is recommended. ;)

3. Tips for making patches

- test your patch on a clean CVS-checkout
- remember to run cvs update before making commits

-----------------------------------------------------------------------
 CVS Access
-----------------------------------------------------------------------

Contact Paul Davis.

---------------------------------------------------------------------
 Uses of external libraries and other packages
-----------------------------------------------------------------------

The main JACK components, jackd and libjack, should only use 
standard POSIX and ANSI-C services. Other components like
example clients and drivers, may rely on other packages, but 
these dependencies should not affect the main build process.

---------------------------------------------------------------------
 Decision Process
-----------------------------------------------------------------------

All non-trivial changes should be discussed on the jackit-devel 
mailing list. It has been agreed that Paul Davis will make 
the final decisions based on these discussions.

=======================================================================