|
|
| New Allegro Funtions / Layout |
|
guilt
Member #2,553
July 2002
|
Quote: Even if the packages was seperated, the developers would still maintain it and release it with the "full" package. That's fine.. the point in separation is not to make things inaccessible. It it to make the framework more compact and extensible. Karthik Kumar Viswanathan |
|
Kitty Cat
Member #2,815
October 2002
|
Which can be done just fine and just as easilly (moreso, actually) if things are in the same lib. -- |
|
guilt
Member #2,553
July 2002
|
Agreed that all the functionality are going to be distributed [:)] 1. it would reduce file sizes for so many people who don't use all the routines.. Karthik Kumar Viswanathan |
|
Kitty Cat
Member #2,815
October 2002
|
Quote: 1. it would reduce file sizes for so many people who don't use all the routines.. The size difference will be negligible. TMF said: As George Foot so succinctly put it, anyone who is concerned about
Quote: 2. it would be easy to update/enhance certain parts of the library without affecting the rest, more easily. Debateable. You can modularize the library without having to split it up. Quote: 3. it gives more choice It would still offer the same exact functionality... Quote: 4. it's primarily for helping the developers. (no, they won't face lots of problems. trust me!) You haven't shown how, nor have you countered my and tobing's arguments that it will. All you've basically said is "No, it won't." -- |
|
guilt
Member #2,553
July 2002
|
Well, Karthik Kumar Viswanathan |
|
Kitty Cat
Member #2,815
October 2002
|
tobing said: More DLLs = more problems. Either you keep it simple and release all DLLs together, then there no advantage over having one DLL. Or you release the parts separately, then you'll get into versioning-hell.
I, as an example, said: So, if we release imgldrs-4.4.0 (first stable), then release core-4.5.5 (5th WIP), we'd have to imediately upgrade to imgldrs-4.5.0. However, something breaks in imgldrs, causing us to bump to 4.5.1. The core is stablized and we release core-4.6.0 (first stable). But, we just found out how to fix imgldrs right! We'll have to change the core vtable a bit, though.. so we release imgldrs-4.5.2 and core-4.7.0 (first WIP; can't reuse 4.6 since it wouldn't be ABI compatibile). Now, imgldrs is stable so we release imgldrs-4.6 and core-4.8. But crap, now something in sndldrs isn't working, so we upgrade to core-4.9... Watch as those version numbers fly from constantly fighting over inter-compatiblity, all the while breaking ABI compatibility left and right. Fun...
-- |
|
guilt
Member #2,553
July 2002
|
Yeah.. I replied to both of them... these WIP arguments don't really work out. Karthik Kumar Viswanathan |
|
Kitty Cat
Member #2,815
October 2002
|
You replied by saying that we'd just have to keep better track of these things.. which is exactly the argument that it'd just make more work for the developers. -- |
|
guilt
Member #2,553
July 2002
|
It's not like an expense of time.. The maintenance will be fairly easy after the split-up.. It's more like the investment kind Karthik Kumar Viswanathan |
|
Kitty Cat
Member #2,815
October 2002
|
I disagree that it'll be easy.Instead of maintaining 1 package, you'd be maintaining and coordinating multiple package. It implicitly increases work load. -- |
|
guilt
Member #2,553
July 2002
|
The developers will have to decide about the maintenance issues.. Probably more maintainers, more committers.. Or just into different packages. That's it.. Change was never easy anyway.. The point is, if making it, why not do it up the first time? (WRT upcoming stable releases) Karthik Kumar Viswanathan |
|
Carrus85
Member #2,633
August 2002
|
Perhaps something more along the lines of the following could be done: Make the allegro core (as I described earlier) either static linkable or dynamically linkable. Your allegro dll would come from this. Default the extensions (plugins) to being statically linkable. The user can create a dynamically linkable dll if they so wish, but the resultant dll is 100% custom to the user, not allegro specific (aka, the dll can contain any number of functions that the user desires). This way, the developer has a couple options: there is only one, core, allegro DLL. The timer routines, bitmap routines, and all of the standard goodies go into this. Anything else that is considered a "plugin" (and thus automatically available by some magic allegro\plugins\fill_in_the_blank.h header) is therefore optionally linkable. There could even be a compatability dll that has these "potentially unnecessary" functions compiled into it. (True, users would not be required to generate or use such a dll unless the developers use it, and a depriciation warning could be thrown on that). This helps prevent versioning-hell (from our end, anyway), and allows the user to create versioning hell if he so desires (make his own dlls though some magical makefile system). It also has the added advantage that the plugin would be required to play nice with the library core. No more dirty hacks, no more unpredictable side effects from a plugin altering something it shouldn't. This could be a potential comprimise. The problem is that currently a) there needs to be a way to NOT (keyword, NOT) compile certain features into an allegro application if you have absolutely no need for them. b) the current library code has too many cross-refrences to other pieces of code to be easily "hacked" to the point that this can be achieved. I think this would be a reasonable comprimise: 1) Use the allegro dll that contains only the core code (anything else is staticly linked or done with a custom dll) 2) Create a custom allegro dll that contains anything and everything you want (this dll would have to be managed and maintained by the developer in question, however). 3) Create a compatability dll that contains the current interfaces for backwards compatability reasons.
|
|
Kitty Cat
Member #2,815
October 2002
|
Carrus, that's an interesting idea. However, given what may or may not be part of the core, you could end up making most of the library staticlinked. Though it may be nice for "Allegro Developer-sanctioned" addons that could get packaged in some Allegro Uber-package (not maintained by the developers), that Allegro's build process could detect and build for you. Allegro itself, however, would remain one single package. -- |
|
guilt
Member #2,553
July 2002
|
As long as everything isn't rigidly statically linked, it's fine.. Ideally it's up to the user if he/she chooses to have the font routines in a DLL or statically linked .. Karthik Kumar Viswanathan |
|
Evert
Member #794
November 2000
|
Quote: I noticed there were lots of dependancies in the symbols and compilation when I tried to remove the 3D out of the library So post a patch on the mailinglist to remove unnescesary dependencies and make the library more modular. Quote: If i'm not using the LBM or VOC routines, why should it be part of load_sample()? Just remove the loaders and the call to register_bitmap_file_type() and register_sample_file_type() that registers them. The loaders are no more than addons that are registered when Allegro starts as opposed to PNG files which first need to be registered explicitly. |
|
Carrus85
Member #2,633
August 2002
|
KC: Yeah, that was kindof the generic Idea. The idea behind the whole theory I posted in the last post is that A) most devs end up shipping an allegro dll anyway, so it might as well be static linked, and B) it provides an interesting method for "compilable" custom dlls. Of course, it would be possible to have an "uber" dll that has everything officially supported by allegro in one single DLL, assuming that all of the proper "offical" allegro pacakges are in the addons directory. You could even have one unofficial "uber" dll if you want (assuming you have someone else who dictates what exactly is and isn't part of that uber dll). I think I like the way this discussion is heading. Any other comments?
|
|
Kitty Cat
Member #2,815
October 2002
|
Quote: KC: Yeah, that was kindof the generic Idea. The idea behind the whole theory I posted in the last post is that A) most devs end up shipping an allegro dll anyway, so it might as well be static linked, and B) it provides an interesting method for "compilable" custom dlls. The way I understood it was, Allegro would still be a DLL, but the add-on packages would be static-linked. Only it would be shipped, built, and installed with Allegro in an "unofficial" package. I don't like the idea of multiple type of Allegro DLLs, even if they are unofficial. Something like that should be done on a per-project basis, and would only lead to having conflicting Allegro DLLs around. -- |
|
|
|