ID:132872
 
This is a pretty simple one, in terms of the benefit anyway.

If you open an environment in DreamMaker currently that has libraries, it will obviously only compile if you have those libraries installed (and the library's library dependencies installed). The reasons for this are fairly obvious in terms of IDE effort, however it does make the prospect of libraries extending other libraries somewhat unappealing.

For instance with Deadron.XML, I believe you need to install 3 libraries to support it, before you can actually get on with using the library itself. This is pretty tedious, considering the libraries already express their dependencies in the DME in the form of a search path include. So tedious in fact that it was the starting point for Fizz creating his own XML library, as he disliked the dependencies (I suspect he actually dislikes dependency chasing really).

Now let's assume for the sake of future-proofing I want to create an XML interface library, that other people can implement as libraries of their own. The benefits are pretty obvious, you can switch XML lib implementations as they get more stable / better suit your performance needs without having to rewrite half of your game. For the sake of ease of use, I provide a default reference implementation in another library. Now if you download my XML interface lib, you actually need to download (manually) two. Then worse still, I decide for compatiblity to provide a library that maps Deadron.XML's interface to the standard. Now to convert Deadron.XML's library dependency to a more flexible system you change no code, BUT you must download 3 libraries. The Deadron to interface mapping, the interface and the default implementation.

What I would like is for DreamMaker to have a stab at downloading dependent libraries of a DME for you. The current format of the search path include lines people use to refer to libraries happens to be pretty well mapped to BYOND's hub structure, making a download request itself fairly easy. If the download fails, obviously you do nothing aside from maybe report it in the compiler output window, pretty much like you do currently.

The obvious downsides of this are "What if people are using the search path include for other stuff". It seems a little unlikely, but I guess you could do a local disk check before a download (which you'd do anyway, why download if you already have it?) meaning the include is resolved locally before all that.

Naturally this process becomes recursive, downloading dependencies found in library DMEs. As such it might be worth putting status notification in the compiler output window, so people know what the IDE is doing.
I second this notion.
My only thought is that this could be less a job of Dream Maker and more of one for the pager. When you download library A, it makes sense that that would be an ideal time to download libraries B and C that A requires.
In response to Jeff8500
Thirded
Libraries with dependencies generate an include.txt, which I think resolves the search path problem.
In response to Kuraudo
Kuraudo wrote:
My only thought is that this could be less a job of Dream Maker and more of one for the pager. When you download library A, it makes sense that that would be an ideal time to download libraries B and C that A requires.

Doesn't it do this already?
In response to Tom
I'm not sure; I thought it did, but then the feature request Stephen posted doesn't make sense to me. Assuming it didn't because of the feature request, it just seemed more reasonable to have these libraries installed when the parent library was installed, rather than at compile time.
In response to Tom
Yes, it does and has always done for a long while, so I don't particularly understand this request (especially as the compiler/IDE shouldn't do any downloading on compile in the first place, like Kuraudo touched on).
In response to Kaioken
I think the idea is more if you're opening a dme from a backup copy or something like that -- you may not HAVE any libraries installed in the first place.

Right now it just goes 'Can't find that' then removes the include from the dme, making finding the libraries you used somewhat annoying.