Changes between Version 25 and Version 26 of liburnia

Show
Ignore:
Timestamp:
09/10/06 03:07:49 (7 years ago)
Author:
scdbackup
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • liburnia

    v25 v26  
    1 ------------------------------------------------------------------------------------- 
    2  
    3 The structure of this wiki is getting out of hand. Shall we convert it into a ticket 
    4 or into a discussion ? Or shall we divide it into personal areas where each 
    5 participant develops an own plan, merrily copying text and ideas from the plans 
    6 of the others. That would keep the single plans consistent - if they are ripe enough. 
     1 
     2This is my proposal for a new structure of this wiki. It is a rearranged version 
     3of what eveolved up to now. I still have the old text on disk (and we will probably 
     4be able to roll back anyway.) [scdbackup] 
     5 
     6------------------------------------------------------------------------------ 
     7 
     8The structure of this wiki is getting out of hand.  
     9hall we convert it into a ticket or into a discussion ? 
     10 
     11Or shall we divide it into personal areas where each participant develops 
     12an own plan, merrily copying text and ideas from the plans 
     13of the others. That would keep the single plans consistent - if they are 
     14ripe enough. 
    715The hope is that the plans find nearer together and that the last discrepancies 
    816can be solved in final discussions on very narrow topics. 
     
    1018 
    1119Ok, personal areas is fine. Are you willing to create such areas on this wiki and copy&paste things where they should belong? [pygi] 
    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 
     23This page will serve as a holding point for in-depth implementation ideas 
     24and prototypes for the next generation of our umbrella project.  
     25[pygi] 
     26 
     27It currently comprises of individual sections where the comprehensive 
     28sketches of developers and contributors shall evolve. A general section 
     29holds notes, questions, messages, ... 
     30[put your name when you edit or add something there] 
     31 
     32One may put prominently marked questions, remarks or protests into the 
     33section of somebody else. They should be concise, though, and eventually 
     34point to longer explanations in the own section. 
     35 
     36New contributors are entitled to open an own individual section. 
     37[scdbackup] 
     38 
     39------------------------------------------------------------------------------ 
     40General Section: 
     41 
     42(still empty) 
     43 
     44------------------------------------------------------------------------------ 
     45lorenzo's section: 
     46 
     47--- libburn portability 
     48 
     49I think a separate library would probably be best, since we would be able toi 
     50move most of the system-dependent functions out of the core of libburn. 
     51It would also make adding support for other operating systems more manageable. 
     52 
     53 
     54--- libburn important features 
     55 
     56Whichever way this functionality is implemented, we should be able to access 
     57drives both by their actual device file names and by any links that point 
     58to those files.  In other words, we should be able to access /dev/cdrw just 
     59as well as /dev/hdc.  This is probably best done on the lower level, 
     60since device files are dependent on the operating system.  
     61Libburn itself shouldn't have to care about how a drive is addressed by 
     62the user or the operating system.  And the last thing we need is to force 
     63the user to address a drive as 0,1,5. :) 
     64Lorenzo 
     65 
     66Multisession 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 
     75We should keep the old API for the development version 0.3.x, but remove 
     76it during stabilization of 0.4.x.  That is, of course, unless we have so 
     77many legacy applications that we have to keep the old API in order to 
     78support them.  I don't currently see that as being a problem for 0.4.x. 
     79 
     80I am in favour of having a single consolidated libburn object.  I don't 
     81think a program that uses libburn should need to directly manipulate a 
     82burn_write_opts struct for example.  This could be dangerous for that 
     83program.  Better to let libburn itself handle that kind of thing via 
     84functions that don't require exposure of these low-level parts of 
     85libburn. [lorenzo] 
     86 
     87--- Media reading: 
     88 
     89read.c will need to be entirely rewritten.  There is a lot of disabled 
     90code that is using and setting things that don't even exist, especially 
     91in burn_disc_read().  The overall rewrite may take care of most of this, 
     92but 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 
     98Mixed mode CD's should be supported; both audio and data on the same disc. 
     99Right now, libburn supports burning a data track and a group of audio tracks, 
     100but a CD player will try to play the data track and will play it as silence. 
     101There is a mixed mode CD format that allows the data track to be the last on 
     102the disc and still be readable by the CD-ROM drive.  I think this is called 
     103CD Extra or enhanced CD.  
     104 
     105--- libisofs important features: 
     106 
     107El Torito bootable images should be supported, both with and without emulation. 
     108[lorenzo] 
     109 
     110------------------------------------------------------------------------------ 
     111pygi's section: 
     112 
     113--- libburn portability 
     114 
     115SCSI access is actually the only portability issue, that's why I would 
     116propose creating an abstract library where one can easily add support 
     117for more operating systems. [pygi] 
     118 
     119(scdbackup proposes to have an abstract function layer within libburn) 
     120 
     121Seems like our ideas are simmilar, but why not creating a separate library 
     122with generic|abstract functions mostly for scsi access? [pygi] 
     123 
     124(scdbackup proposes to leave the decision open until a second 
     125real transport facility emerges) 
     126 
     127Ahm, ok. But I think we should rather decide that stuff now. I plan 
     128to 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 
     135We should strive for smaller, nicer, and cleaner api. [pygi] 
     136 
     137(scdbackup proposes unified libburn object as only API handle 
     138and a legacy API wrapper around that new API) 
     139 
     140So 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 
     144on release of 0.4) 
     145 
     146--- Components versioning: 
     147 
     148Thanks to separation of components (no global bootstrap) each component will 
     149be able to uphold its own appropriate version, unlike the current way. 
     150Still to see what to do with extra things [pygi] 
     151 
     152--- libburn CD types: 
     153 
     154We currently support data and audio cdburning. We should probably support 
     155other types as well. Task is to identify other cd types which we want to 
     156support and list them below this section. [pygi] 
     157 
     158(lorenzo reports of Mixed Mode) 
     159 
     160--- libisofs Code cleanup: 
     161 
     162Currently, there is a lot of C++ code, a lot of compiler warnings, 
     163and nasty code in general. Task is to identify such parts of code 
     164and list them below this section. [pygi] 
     165 
     166Genisofs: 
     167 
     168Genisofs must be written in 0.3.x cycle. 
     169 
     170------------------------------------------------------------------------------ 
     171scdbackup's section: 
     172 
     173--- libburn portability 
     174 
     175(pygi proposes abstract SCSI library)  
    21176 
    22177My idea is to have a set of generic|abstract functions which serve as internal 
     
    26181addresses and the organasition structure of the flock of drives.) [scdbackup] 
    27182 
    28 Seems like our ideas are simmilar, but why not creating a separate library with generic|abstract functions mostly for scsi access? [pygi] 
     183(pygi proposes separate library) 
    29184 
    30185I plan it rather as the lowest generic layer of libburn. Next tier below will 
     
    34189and transport.[scdbackup]  
    35190 
    36 Ahm, ok. But I think we should rather decide that stuff now. I plan 
    37 to implement at least freeBSD in 0.3.x dev cycle [pygi] 
    38  
    39 I think a separate library would probably be best, since we would be able to move most of the system-dependent functions out of the core of libburn.  It would also make adding support for other operating systems more manageable. 
    40  
    41 Whichever way this functionality is implemented, we should be able to access drives both by their actual device file names and by any links that point to those files.  In other words, we should be able to access /dev/cdrw just as well as /dev/hdc.  This is probably best done on the lower level, since device files are dependent on the operating system.  Libburn itself shouldn't have to care about how a drive is addressed by the user or the operating system.  And the last thing we need is to force the user to address a drive as 0,1,5. :) 
    42 Lorenzo 
    43  
    44 API: 
    45  
    46 We should strive for smaller, nicer, and cleaner api. [pygi] 
     191(pygy urges to find a decision soon) 
     192(lorenzo is in favor of library) 
     193 
     194--- libburn important features 
     195 
     196(lorenzo wants -multi) 
     197 
     198I want -tao. 
     199 
     200We could need a .wav extractor for cdrskin. (.au is of less interest) 
     201 
     202--- libburn rewrite and new API 
    47203 
    48204Currently i am inflating the API a bit, i fear. Not for fun. On the other hand 
    49205there is a lot of API functions of which i do not know the use cases. 
    50206(just two: burn_track_set_isrc() , burn_session_hide_first_track() ). 
    51 One will have to carefully analyse before anything can get thrown out. [scdbackup] 
    52  
    53 Currently i am in favor of consolidating all global libburn variables into one 
    54 libburn object that gets created and destroyed dynamically. This object will then 
    55 be manipulated by new API methods which cover the complete set of use cases as 
    56 covered by the old functions. To the rewitten API only the libburn object will 
    57 be exposed - and only as opaque handle for function calls. 
     207One will have to carefully analyse before anything can get thrown out. 
     208[scdbackup] 
     209 
     210I am in favor of consolidating all global libburn variables into one 
     211libburn object that gets created and destroyed dynamically. This object 
     212will then be manipulated by new API methods which cover the complete set 
     213of use cases as covered by the old functions. To the rewitten API only 
     214the libburn object will be exposed - and only as opaque handle for function 
     215calls. 
    58216 
    59217Nevertheless, the old API with it's exposure of internal entrails will be held 
    60218available for at least one - better two - major revisions. Not so much because 
    61219we have many legacy apps but to exercise and demonstrate our ways with future 
    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] 
     220API changes under full sails. This old API will operate on a global libburn 
     221object handle and on dummies representing the old API structs, enums and 
     222defines.[scdbackup] 
     223 
     224(pygi objects the duration of the legacy support period) 
     225 
     226Let's see how fat the legacy API implementation becomes. [scdbackup] 
     227 
     228(lorenzo agrees with single API object and proposes to cancel legacy API 
     229on release of 0.4) 
     230 
     231I think we can agree on having a legacy API in the rewrite until 
     232the next stable major revision 0.4. 
     233 
     234--- libisofs Code cleanup: 
     235 
     236(pygi reports of sneak-in C++ and ugly code) 
    102237 
    103238Two flaws found by Bart Vanherck and gcc 4.0.3 (libburn-hackers 06 Sep 2006): 
     
    139274Either one refuses to use symbol "NULL" or one should prepare for it not being 
    140275"0" under exotic circumstances. A mixture makes no sense. [scdbackup] 
    141  
    142 Genisofs: 
    143  
    144 Genisofs must be written in 0.3.x cycle. 
    145  
    146 [-libisofs-]