| 12 | | ------------------------------------------------------------------------------------- |
| 13 | | |
| 14 | | This page will serve as a holding point for in-depth implementation ideas and prototypes for the next generation of our umbrella project. [put your name when you edit or add something] |
| 15 | | |
| 16 | | [libburn] |
| 17 | | |
| 18 | | Portability: |
| 19 | | |
| 20 | | SCSI access is actually the only portability issue, that's why I would propose creating an abstract library where one can easily add support for more operating systems. [pygi] |
| | 20 | |
| | 21 | ------------------------------------------------------------------------------ |
| | 22 | |
| | 23 | This page will serve as a holding point for in-depth implementation ideas |
| | 24 | and prototypes for the next generation of our umbrella project. |
| | 25 | [pygi] |
| | 26 | |
| | 27 | It currently comprises of individual sections where the comprehensive |
| | 28 | sketches of developers and contributors shall evolve. A general section |
| | 29 | holds notes, questions, messages, ... |
| | 30 | [put your name when you edit or add something there] |
| | 31 | |
| | 32 | One may put prominently marked questions, remarks or protests into the |
| | 33 | section of somebody else. They should be concise, though, and eventually |
| | 34 | point to longer explanations in the own section. |
| | 35 | |
| | 36 | New contributors are entitled to open an own individual section. |
| | 37 | [scdbackup] |
| | 38 | |
| | 39 | ------------------------------------------------------------------------------ |
| | 40 | General Section: |
| | 41 | |
| | 42 | (still empty) |
| | 43 | |
| | 44 | ------------------------------------------------------------------------------ |
| | 45 | lorenzo's section: |
| | 46 | |
| | 47 | --- libburn portability |
| | 48 | |
| | 49 | I think a separate library would probably be best, since we would be able toi |
| | 50 | move most of the system-dependent functions out of the core of libburn. |
| | 51 | It would also make adding support for other operating systems more manageable. |
| | 52 | |
| | 53 | |
| | 54 | --- libburn important features |
| | 55 | |
| | 56 | Whichever way this functionality is implemented, we should be able to access |
| | 57 | drives both by their actual device file names and by any links that point |
| | 58 | to those files. In other words, we should be able to access /dev/cdrw just |
| | 59 | as well as /dev/hdc. This is probably best done on the lower level, |
| | 60 | since device files are dependent on the operating system. |
| | 61 | Libburn itself shouldn't have to care about how a drive is addressed by |
| | 62 | the user or the operating system. And the last thing we need is to force |
| | 63 | the user to address a drive as 0,1,5. :) |
| | 64 | Lorenzo |
| | 65 | |
| | 66 | Multisession appendable CD's should also be supported. [lorenzo] |
| | 67 | |
| | 68 | --- libburn rewrite and new API |
| | 69 | |
| | 70 | (scdbackup proposes unified libburn object as only API handle |
| | 71 | and a legacy API wrapper around that new API) |
| | 72 | |
| | 73 | (pygi objects the duration of the legacy support period) |
| | 74 | |
| | 75 | We should keep the old API for the development version 0.3.x, but remove |
| | 76 | it during stabilization of 0.4.x. That is, of course, unless we have so |
| | 77 | many legacy applications that we have to keep the old API in order to |
| | 78 | support them. I don't currently see that as being a problem for 0.4.x. |
| | 79 | |
| | 80 | I am in favour of having a single consolidated libburn object. I don't |
| | 81 | think a program that uses libburn should need to directly manipulate a |
| | 82 | burn_write_opts struct for example. This could be dangerous for that |
| | 83 | program. Better to let libburn itself handle that kind of thing via |
| | 84 | functions that don't require exposure of these low-level parts of |
| | 85 | libburn. [lorenzo] |
| | 86 | |
| | 87 | --- Media reading: |
| | 88 | |
| | 89 | read.c will need to be entirely rewritten. There is a lot of disabled |
| | 90 | code that is using and setting things that don't even exist, especially |
| | 91 | in burn_disc_read(). The overall rewrite may take care of most of this, |
| | 92 | but I felt it should be specifically mentioned here. [lorenzo] |
| | 93 | |
| | 94 | --- CD types: |
| | 95 | |
| | 96 | (pygi proposes to evaluate CD types other than data and audio) |
| | 97 | |
| | 98 | Mixed mode CD's should be supported; both audio and data on the same disc. |
| | 99 | Right now, libburn supports burning a data track and a group of audio tracks, |
| | 100 | but a CD player will try to play the data track and will play it as silence. |
| | 101 | There is a mixed mode CD format that allows the data track to be the last on |
| | 102 | the disc and still be readable by the CD-ROM drive. I think this is called |
| | 103 | CD Extra or enhanced CD. |
| | 104 | |
| | 105 | --- libisofs important features: |
| | 106 | |
| | 107 | El Torito bootable images should be supported, both with and without emulation. |
| | 108 | [lorenzo] |
| | 109 | |
| | 110 | ------------------------------------------------------------------------------ |
| | 111 | pygi's section: |
| | 112 | |
| | 113 | --- libburn portability |
| | 114 | |
| | 115 | SCSI access is actually the only portability issue, that's why I would |
| | 116 | propose creating an abstract library where one can easily add support |
| | 117 | for more operating systems. [pygi] |
| | 118 | |
| | 119 | (scdbackup proposes to have an abstract function layer within libburn) |
| | 120 | |
| | 121 | Seems like our ideas are simmilar, but why not creating a separate library |
| | 122 | with generic|abstract functions mostly for scsi access? [pygi] |
| | 123 | |
| | 124 | (scdbackup proposes to leave the decision open until a second |
| | 125 | real transport facility emerges) |
| | 126 | |
| | 127 | Ahm, ok. But I think we should rather decide that stuff now. I plan |
| | 128 | to implement at least freeBSD in 0.3.x dev cycle [pygi] |
| | 129 | |
| | 130 | (lorenzo is in favor of library) |
| | 131 | |
| | 132 | |
| | 133 | --- libburn rewrite and new API |
| | 134 | |
| | 135 | We should strive for smaller, nicer, and cleaner api. [pygi] |
| | 136 | |
| | 137 | (scdbackup proposes unified libburn object as only API handle |
| | 138 | and a legacy API wrapper around that new API) |
| | 139 | |
| | 140 | So you would keep that in both development and stable cycle (0.3.x, and 0.4.x)? |
| | 141 | [pygi] |
| | 142 | |
| | 143 | (lorenzo agrees with single API object and proposes to cancel legacy API |
| | 144 | on release of 0.4) |
| | 145 | |
| | 146 | --- Components versioning: |
| | 147 | |
| | 148 | Thanks to separation of components (no global bootstrap) each component will |
| | 149 | be able to uphold its own appropriate version, unlike the current way. |
| | 150 | Still to see what to do with extra things [pygi] |
| | 151 | |
| | 152 | --- libburn CD types: |
| | 153 | |
| | 154 | We currently support data and audio cdburning. We should probably support |
| | 155 | other types as well. Task is to identify other cd types which we want to |
| | 156 | support and list them below this section. [pygi] |
| | 157 | |
| | 158 | (lorenzo reports of Mixed Mode) |
| | 159 | |
| | 160 | --- libisofs Code cleanup: |
| | 161 | |
| | 162 | Currently, there is a lot of C++ code, a lot of compiler warnings, |
| | 163 | and nasty code in general. Task is to identify such parts of code |
| | 164 | and list them below this section. [pygi] |
| | 165 | |
| | 166 | Genisofs: |
| | 167 | |
| | 168 | Genisofs must be written in 0.3.x cycle. |
| | 169 | |
| | 170 | ------------------------------------------------------------------------------ |
| | 171 | scdbackup's section: |
| | 172 | |
| | 173 | --- libburn portability |
| | 174 | |
| | 175 | (pygi proposes abstract SCSI library) |
| 62 | | API changes under full sails. This old API will operate on a global libburn object |
| 63 | | handle and on dummies representing the old API structs, enums and defines.[scdbackup] |
| 64 | | |
| 65 | | One or two major revisions?! You do understand our versioning scheme, right? |
| 66 | | So you would keep that in both development and stable cycle (0.3.x, and 0.4.x)? |
| 67 | | Ah. [pygi] Let's see how fat the legacy API implementation becomes. [scdbackup] |
| 68 | | |
| 69 | | We should keep the old API for the development version 0.3.x, but remove it during stabilization of 0.4.x. That is, of course, unless we have so many legacy applications that we have to keep the old API in order to support them. I don't currently see that as being a problem for 0.4.x. |
| 70 | | |
| 71 | | I am in favour of having a single consolidated libburn object. I don't think a program that uses libburn should need to directly manipulate a burn_write_opts struct for example. This could be dangerous for that program. Better to let libburn itself handle that kind of thing via functions that don't require exposure of these low-level parts of libburn. [lorenzo] |
| 72 | | |
| 73 | | Components versioning: |
| 74 | | |
| 75 | | Thanks to separation of components (no global bootstrap) each component will be able to uphold its own appropriate version, unlike the current way. Still to see what to do with extra things [pygi] |
| 76 | | |
| 77 | | Media reading: |
| 78 | | |
| 79 | | read.c will need to be entirely rewritten. There is a lot of disabled code that is using and setting things that don't even exist, especially in burn_disc_read(). The overall rewrite may take care of most of this, but I felt it should be specifically mentioned here. [lorenzo] |
| 80 | | |
| 81 | | CD types: |
| 82 | | |
| 83 | | We currently support data and audio cdburning. We should probably support other types as well. Task is to identify other cd types which we want to support and list them |
| 84 | | below this section. [pygi] |
| 85 | | |
| 86 | | Mixed mode CD's should be supported; both audio and data on the same disc. Right now, libburn supports burning a data track and a group of audio tracks, but a CD player will try to play the data track and will play it as silence. There is a mixed mode CD format that allows the data track to be the last on the disc and still be readable by the CD-ROM drive. I think this is called CD Extra or enhanced CD. |
| 87 | | |
| 88 | | Multisession appendable CD's should also be supported. [lorenzo] |
| 89 | | |
| 90 | | [-libburn-] |
| 91 | | |
| 92 | | [libisofs] |
| 93 | | |
| 94 | | El Torito: |
| 95 | | |
| 96 | | El Torito bootable images should be supported, both with and without emulation. |
| 97 | | [lorenzo] |
| 98 | | |
| 99 | | Code cleanup: |
| 100 | | |
| 101 | | Currently, there is a lot of C++ code, a lot of compiler warnings, and nasty code in general. Task is to identify such parts of code and list them below this section. [pygi] |
| | 220 | API changes under full sails. This old API will operate on a global libburn |
| | 221 | object handle and on dummies representing the old API structs, enums and |
| | 222 | defines.[scdbackup] |
| | 223 | |
| | 224 | (pygi objects the duration of the legacy support period) |
| | 225 | |
| | 226 | Let's see how fat the legacy API implementation becomes. [scdbackup] |
| | 227 | |
| | 228 | (lorenzo agrees with single API object and proposes to cancel legacy API |
| | 229 | on release of 0.4) |
| | 230 | |
| | 231 | I think we can agree on having a legacy API in the rewrite until |
| | 232 | the next stable major revision 0.4. |
| | 233 | |
| | 234 | --- libisofs Code cleanup: |
| | 235 | |
| | 236 | (pygi reports of sneak-in C++ and ugly code) |