-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathDevel.mw
123 lines (96 loc) · 6.27 KB
/
Devel.mw
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
This is the CLAM development wiki.
''Please, prepend 'Devel/' to any development pages you create here.''
* [[Development screenshots]] show last achievements on CLAM development branch.
* [http://clam-project.org/testfarm Testfarm web] shows the last commits and build and tests status in different platforms in real-time.
* [[GSoC 2007]] [[GSoC 2008]] [[GSoC 2009]]
* [http://cia.vc/stats/project/clam Cia.vc, log of commits]
* [http://www.ohloh.net/projects/clam Ohloh, project and developer stats]
== Subversion access ==
Subversion tree contains CLAM libs and applications: NetworkEditor, Annotator, SMSTools and Voice2MIDI.
* Open and read-only
$ svn co http://clam-project.org/clam/trunk clam
* Active CLAM developers can also obtain commit access. See [[rules for commit access]]
== Getting involved ==
To get involved with CLAM development:
* Subscribe to the [http://lists.clam-project.org/listinfo.cgi/clam-devel-clam-project.org clam development mailing list].
* Contact other CLAM developers at the #clam channel of the FreeNode IRC network.
* Blog (occasionally) about CLAM and syndicate your feed in the [http://clam-project.org/planet clam planet].
* Fill bugs in our [http://clam-project.org/bugs bug tracking tool].
* Fix bugs and send a [[#Prepare and apply a patch|patch]] ;-)
* Send some good patches and get [[Rules_for_commit access|svn commit access]]
== HOWTO's ==
* [[Devel/Changelog release policy]]
* [[Devel/Compile and install troubleshooting]]
* [[Devel/Mac OSX build]]
* [[Devel/Linux Gentoo build]]
* [[Devel/Windows build]] with MS Visual Studio 2005 (obsolete)
* [[Devel/Windows MinGW build]] (under development)
* [[Devel/Windows MinGW cross compile]] (the one working now for windows)
* [[Devel/Eclipse]]
* [[Devel/Testing processing algorithms]]
* [[Devel/CLAM idioms]] C++ techniques we use over and over.
* [[Devel/Programming with Qt]] tips and conventions for the CLAM code that uses the Qt framework.
* [[Devel/Faust support]]
* [[Devel/Blender support]]
== Tasks ==
* [[Devel/Release task list]]: Every release check list.
* [[Devel/Current release TODOs]] tasks due for the next release.
* [[Devel/Plugins TODOs]] short and mid-term tasks.
* [[Devel/Ladspa Plugins TODOs]] short-term tasks. Mostly taken by Andreas Calvo.
* [[Devel/Faust integration TODOs]] short-term tasks. Mostly taken by Andreas Calvo.
* [[Devel/Web TODOs]].
* [[SoC ideas]]
* [[Devel/Annotator TODO's]] includes GSoC project tasks taken by Wang Jun
* [[Devel/NetworkEditor TODO's]]
* [[Devel/Infrastructure Refactoring TODO's]]
* [[Devel/Spectral Transformations TODOs]] GSoC project tasks. Mostly taken by Hernán Ordiales
* [[Devel/Real-Time Spectral Model Synthesizer]] GSoC project tasks. Mostly taken by Greg Kellum
* [[Devel/Chord Extraction TODO's]] includes GSoC project tasks taken by Pawel Bartkiewicz
* [[Migration to clam-project.org]] tasks to migrate from iua.upf.edu hosting to community managed clam-project.org (hosted in Dreamhost)
* [[Buffer Ports]] tasks to migrate proccesings from stream port to buffer port
=== Hot Spots ===
Things that core developers are eager to address but still not being refined in small tasks. Of course they might need further discussion.
* Split the processing library and add some plugins as libraries
* Recursive networks
* Run-time error handling and NetworkPlayer status feedback
* Static network scheduling (Based on Pau's Thesis)
* Hot wiring (allowing changing the network without stoping it)
* Parametrized networks (Network configuration, propagated to processings' config)
* Parameter propagation through the data-flow
* Offline networks (visual prototyping on storing and retrieving data from Pools)
* Extend the usage of new single representation spectrums to Spectral and SMS processings.
* Ease widget plugin creation (binders for plots, type managers for configurations...)
* Unify Do() return value semantics. One solution is do it void Do()
* Implicit Consume and Produce when using ports (flow control does it).
* Properly manage sampling rate
* More plugins: VST, VSTi, LV2...
* Better qt designer integration
=== Hot Ideas ===
* Network based music tracker (Controls being sequenced in time in a order list plus pattern way)
== Prepare and apply a patch ==
We only give write access to the repository to developers with experience with clam development. But this not a problem since you can always send a patch to the devel-list, and clam-devs will take care of it (and we use to be quick).
We like receiving patches very much. Please do it even for very small things like improving the INSTALL file, or grammar corrections in the code comments. (So imagine how we like receiving bug-fixes!).
Luckily, working with patches in subversion is very easy:
* How to create a patch with your local modifications?
: Change dir to the '''root of your svn tree''' (the directory containing CLAM/ and NetworkEditor/, etc.) and do
: <pre>$ svn diff > good-description.patch</pre>
:
: You can also add new files in a patch by doing "svn add <newfile>". This adds the file locally -- doesn't need commit access.
: However, if you do so, when the patch is commited by somebody else, svn up '''will generate a confict''' with the local added file. Therefore do "svn rm <newfile>" '''before''' updating for the applied patch.
: If this fails, apply brute force: move the directory containing the new file elsewhere (out of the svn tree). And do restore it with "svn up".
* How to apply a patch (that maybe somebody posted to the list)?
: Change dir to the root of your svn tree and do
: <pre>$ patch -p0 < the.patch
</pre>
We prefer the patches being sent to the '''clam-devel mailing list'''. The issue tracker will be used when patches can not be applied (or discarded) immediately and need to remain on hold for some time.
== Pass the automatic tests ==
Checkout the clam test-data repository:
$ svn co http://clam-project.org/clam_data/trunk clam_data
Change dir to CLAM/test and compile with '''scons''' providing the following options (no installation step is needed):
* clam_prefix --which is the prefix where you installed clam. /usr/local by default
* test_data_path --the path to the clam_data sandbox (local copy of the repository).
For example:
$ scons clam_prefix=~/local test_data_path=~/clam_data
Then execute unit and functional tests:
$ ./UnitTests/UnitTests
$ ./FunctionalTests/FunctionalTests