expand TODO
[clinton/guile-figl.git] / TODO
CommitLineData
1a878fcf
AW
1# -*- org -*-
2
3* Completeness
4
5** Complete the high-level GL binding.
6
57a309e7
DH
7*** Bind newer versions.
8
1a878fcf
AW
9Would be nice to bind newer versions as well, while keeping the
10compatibility profile.
11
57a309e7
DH
12The newer versions are backwards compatible with only rare exceptions
13where some function's behaviour (but not prototype) is subtley
14redefined. To support newer versions in a simple way we can export
15all bindings and the user effectively chooses which version they use
16by their choice of procedures.
17
18Exporting particular profiles is a nice addition to this.
19
1a878fcf
AW
20** Complete the high-level GLU binding.
21
22** Complete the high-level GLX binding.
23
24** Complete the high-level GLUT binding.
25
57a309e7
DH
26*** Do not keep alive callback pointers indefinitely.
27
28Perhaps by moving the gc-protect mechanism to the high-level bindings,
29and track which callbacks are active on each window and globally.
30
31Users of the low-level bindings can still use the foo-callback-*
32helpers, but must assume control of pointer lifetime. Such an
33approach permits great flexibility for alternative high-level
34interfaces to reuse the low-level bindings.
35
1a878fcf
AW
36** Write an EGL binding.
37
38There is a wip-egl branch with upstream documentation.
39
40* Naming
41
42** Mangle low-level binding names.
43
44Probably we should do this only if this low-level bindings are good
45enough. In practice this means that output arguments should be natively
46supported, and they low-level bindings should check errors as
47appropriate.
48
57a309e7
DH
49** TODO Document the naming convention. :wigs:
50
51Specifically we should document when a name changes significantly,
52like when to use a "set-" prefix and the abbreviation expansions
53("accum" -> "accumulation-buffer", "coord" -> "coordinates").
54
55Getting this done early will permit implementing the policy more
56accurately. Marking TODO and will work on a draft covering the
57conventions I have used/intend to use soon.
58
59** Maybe drop the "gl-" prefix for high-level bindings.
1a878fcf 60
57a309e7
DH
61The names for most gl, glu, etc. procedures are unique enough to not
62conflict with each other, and most Scheme names generally. Removing
63the prefix will make names where an additional prefix is used (such as
64"set-") much more natural.
65
66Users with specific namespace concerns can use selective and renaming
67imports.
1a878fcf
AW
68
69* Documentation
70
71** Figure out how to incorporate low-level bindings into the
72 documentation.
73
74Often-times the high-level bindings just duplicate information from the
75low-level bindings, but poorly. To do this, we'd have to make a map of
76how to organize the low-level bindings, probably according to their
77section in the specification.
78
79** Mangle enumeration names to link to the enumerator documentation.
80
81** Give an @anchor{} to each API element so that we can link back and
82 forth.
83
57a309e7
DH
84* Examples
85
86** examples/README explaining the layout.
87
88** OpenGL standards.
89
90Language bindings typically provide ports of the standard examples, to
91demonstrate usage patterns and their own unique style.
92
93http://www.sgi.com/products/software/opengl/examples/index.html
94
95Implement at least a few of these, their licencing is permissive
96enough and they have been widely ported to Free Software language
97bindings already.
98
99** More interesting demos.
100
1a878fcf
AW
101* Meta
102
103** Mailing list?
104
105** Web page for documentation?
106
107Both of these point towards hosting on savannah at some point. Figl
108could become a GNU project but it will not have copyright assignment.