Author Topic: An idea (and flamewar invite)  (Read 4125 times)

0 Members and 1 Guest are viewing this topic.

An idea (and flamewar invite)
The mod system needs a look in.

I posted in #scp last night about changing the model of the mod system to an 'opt-in' system, as opposed to the current 'opt-out' system.
This has MANY advantages over the current model, some of which are not clear straight away:
  • Testability - does this mod have everything it needs?
  • Install/Update - what do we need to install this mod
  • An avoidance of issues such as non-mod VP files in the root or current mod directory
  • Launcher has an easier time with specifying the mods

It does add about 2 minutes work for mod developers to specify what their mod requires.
STRONGTEA. Why can't the x86 be sane?

 
Re: An idea (and flamewar invite)
As Zacam has pointed out, I probably need to give some examples.

TCs need to live in their own folders because otherwise the FS2 data gets loaded automagically.

Mods need to specify the other mods that they need in the particular order that they're needed. Screw up that ordering and things just get wonky.

Support handle a number of issues/month with new users having non-retail files in the root directory.

The first can be avoided by the TC specifying exactly what assets it needs (and treating it like a regular mod).
The second can be avoided by building a dependency tree and then loading either bottom up or top down (depending on what's needed)
The last would be avoided because only the needed files are loaded.
STRONGTEA. Why can't the x86 be sane?

 

Offline FUBAR-BDHR

  • Self-Propelled Trouble Magnet
  • 212
  • Master Drunk
    • 165th Beer Drinking Hell Raisers
Re: An idea (and flamewar invite)
The big one I can think of is already released mods that are no longer supported or their developers are hard to find.  
No-one ever listens to Zathras. Quite mad, they say. It is good that Zathras does not mind. He's even grown to like it. Oh yes. -Zathras

 
Re: An idea (and flamewar invite)
I'm not talking a massive change. Just add a few lines to a mod description (based on what's currently in mod.ini).
Having a mod description opens the door for future upgrades/changes too (think versioning of assets, but we're still working out the basics on that one, so don't expect too much movement soon)
STRONGTEA. Why can't the x86 be sane?

 

Offline Zacam

  • Magnificent Bastard
  • Administrator
  • 211
  • I go Sledge-O-Matic on Spammers
    • Steam
    • Twitter
    • ModDB Feature
Re: An idea (and flamewar invite)
As Zacam has pointed out, I probably need to give some examples.

TCs need to live in their own folders because otherwise the FS2 data gets loaded automagically.

Mods need to specify the other mods that they need in the particular order that they're needed. Screw up that ordering and things just get wonky.

Support handle a number of issues/month with new users having non-retail files in the root directory.

The first can be avoided by the TC specifying exactly what assets it needs (and treating it like a regular mod).
The second can be avoided by building a dependency tree and then loading either bottom up or top down (depending on what's needed)
The last would be avoided because only the needed files are loaded.

The first: So, now a TC needs to outline in it exactly the files used by it, but where does the behaviour to ignore the Retail FS2 data come in to play here? And how about a scenario like Zathras, which is a mod on a TC? And how much specifying does a non-TC need to have in it's "description"? Which leads us to

The second: Okay, a little confused on that one. You don't want to have two different ways to load a dependency. And what do you do for mixed case scenarios like Silent Threat: Reborn, which really only needs FSPort unless you decided to play it with MediaVPs, then it needs the FSPort-MediaVP and the MediaVPs. Still the same data and "mod" being called to, two different ways in which to handle it.

And by examples, I was thinking more a long the lines of "show me what a TC would need and what something like the MediaVPs or something relying on them would need under a proposed system such as this". It doesn't have to have an already working implimentation, and I realize that the example may no necessarily match the final product, but it would be very helpful.
Report MediaVP issues, now on the MediaVP Mantis! Read all about it Here!
Talk with the community on Discord
"If you can keep a level head in all this confusion, you just don't understand the situation"

¤[D+¬>

[08/01 16:53:11] <sigtau> EveningTea: I have decided that I am a 32-bit registerkin.  Pronouns are eax, ebx, ecx, edx.
[08/01 16:53:31] <EveningTea> dhauidahh
[08/01 16:53:32] <EveningTea> sak
[08/01 16:53:40] * EveningTea froths at the mouth
[08/01 16:53:40] <sigtau> i broke him, boys

 
Re: An idea (and flamewar invite)
Just a partial response to one of your points:
The first: So, now a TC needs to outline in it exactly the files used by it, but where does the behaviour to ignore the Retail FS2 data come in to play here? And how about a scenario like Zathras, which is a mod on a TC? And how much specifying does a non-TC need to have in it's "description"? Which leads us to

It never gets loaded in the first place.


Have a separate description for FSPort-MVPs and FSPort (or one description for both in the mod file)
STRONGTEA. Why can't the x86 be sane?

 

Offline Tomo

  • 28
Re: An idea (and flamewar invite)
Right now, all the multi-mod stuff ends up as a long concatenated command line switch:
-mod fsport-mediavps,fsport,mediavps

Do you mean simply adding "retail" into this switch for all mods where the retail data is required, or something cleverer than that?

I don't think a straight list of VPs to load is a good idea, as it forces people to package their missions into VPs when first learning to use FRED.
« Last Edit: October 24, 2009, 10:28:23 am by Tomo »

 
Re: An idea (and flamewar invite)
Tomo, not quite :P
The idea would be to list ALL dependencies of the mod.
If retail VPs are required, they'd have to be listed.

Automated VP packaging isn't as far fetched as it sounds (or as complex, if what I've read about VPs is right).
or you could just list individual files as dependencies.

Also, remember, this is just an idea to improve support and automated testing/debugging.
STRONGTEA. Why can't the x86 be sane?

 

Offline Tomo

  • 28
Re: An idea (and flamewar invite)
Tomo, not quite :P
The idea would be to list ALL dependencies of the mod.
If retail VPs are required, they'd have to be listed.
So if I understand correctly, instead of letting FS2Open walk the directories to find a list of Roots and Files as it does now in cfilesystem.cpp, the Mod.Ini file gives the full list of Roots to search.

And each of those Roots could give 'dependent' Roots?

- Roots would presumably be VP files or /data folders, as they are now.

So the MediaVPs would specify root_fs2.vp, sparky_hi.vp etc.
Would VPs in the same folder as a modpack be assumed, or would those need to be listed as well?

 
Re: An idea (and flamewar invite)
I'm all for just having a single directory called 'assets' and just referencing around in there :P

But for FSO, probably reference the individual files.
Referencing roots still doesn't solve issue 3.
STRONGTEA. Why can't the x86 be sane?

 

Offline Mongoose

  • Rikki-Tikki-Tavi
  • Global Moderator
  • 212
  • This brain for rent.
    • Steam
    • Something
Re: An idea (and flamewar invite)
But what happens if the time comes when, for instance, the FSU project decides to adjust their VP naming conventions?  Would we then have to go back and edit every single .ini file accordingly?

I know that dependency problems do create their fair share of support requests, but the system as it stands isn't all that hard to wrap one's mind around once you know what you're doing, and even newer users seem to pick it up reasonably quickly once it's explained to them.  Besides, if/when the combined launcher/installer ever gets off the ground, most of those questions would presumably disappear anyway.

 
Re: An idea (and flamewar invite)
Besides, if/when the combined launcher/installer ever gets off the ground, most of those questions would presumably disappear anyway.

Hence thinking about them now :P

The same issue occurs now.
What happens if someone who has developed a mod removes an unused asset from a VP (say one that was there in development but ended up not being used)?
STRONGTEA. Why can't the x86 be sane?

 

Offline Mongoose

  • Rikki-Tikki-Tavi
  • Global Moderator
  • 212
  • This brain for rent.
    • Steam
    • Something
Re: An idea (and flamewar invite)
I don't follow.  Do you mean a situation where a mod had a dependency on an asset from another mod that was later removed?  Because I'm not really sure how your proposal would solve that issue.

 
Re: An idea (and flamewar invite)
Neither am I, but it's something to think about now. I'll post something when/if I figure out a way around that one.
STRONGTEA. Why can't the x86 be sane?

  

Offline The E

  • He's Ebeneezer Goode
  • Moderator
  • 213
  • Nothing personal, just tech support.
    • Steam
    • Twitter
Re: An idea (and flamewar invite)
I'm not sure there is one. My personal opinion is that if your mod is going to include more than the mediavps or fsport + its mediavps, you should take the assets you need for your own mod and pack them together. Yes, that will lead to duplicates, but I think that that is survivable.
If I'm just aching this can't go on
I came from chasing dreams to feel alone
There must be changes, miss to feel strong
I really need lifе to touch me
--Evergrey, Where August Mourns

 

Offline karajorma

  • King Louie - Jungle VIP
  • Administrator
  • 214
    • Karajorma's Freespace FAQ
Re: An idea (and flamewar invite)
Why is it that people post crazy ideas when I'm not around to point out how insane they are? :p

But what happens if the time comes when, for instance, the FSU project decides to adjust their VP naming conventions?  Would we then have to go back and edit every single .ini file accordingly?

This is my major issue with changing how things work. Even with a combined launcher/installer this is a freaking nightmare.

Having opt-in as a debug/troubleshooting option on the other hand is a great idea.
Karajorma's Freespace FAQ. It's almost like asking me yourself.

[ Diaspora ] - [ Seeds Of Rebellion ] - [ Mind Games ]

 
Re: An idea (and flamewar invite)
Why's it crazy?
It's less crazy than the current model (IMO).
STRONGTEA. Why can't the x86 be sane?

 

Offline karajorma

  • King Louie - Jungle VIP
  • Administrator
  • 214
    • Karajorma's Freespace FAQ
Re: An idea (and flamewar invite)
Okay, I finally have the time to reply properly. :)

The reason why we seem to continually butt heads over this sort of stuff is cause I spent over 7 years providing the lion's share of the SCP support before people like jr2, Jeff Vader and The E came along. I've seen just how badly people can **** up their installs and I've seen just how much of an issue people can have trying to move to a new SCP system (for instance it took years before everyone got the hang of the current -mod system and even now people still **** up occasionally).

Moving to this system would be a support nightmare because we'd have to upgrade every single installed version of FS2_Open to start using it. It's all very well to say that a combined installer/launcher would solve those problems but a combined installer/launcher would largely remove the problem causing the issue anyway (people who aren't familiar trying to install something). We could easily add a troubleshooting section to the launcher that flags any files that shouldn't be in the path and asks whether the user installed it himself.

If the -mod system had been designed this way in the first place then maybe things would be better but changing it now is not a good idea. The only way I can explain the monumental problems this issue would cause is to talk you though what would happen if you tried it.

So let's say you coded the changes and added them to an antipodes build.

Firstly you'd get comments from the people who usually hang out on #scp with you. They all know what you're up to and would be prepared for the change. They'd have no issues.

Then having made sure the code works you'd add it to trunk. You'd probably post an announcement saying that you've made this change on the SCP forum. This where problems begin. You're going to start getting posts from people who missed your post but who downloaded a nightly build and found that it doesn't work properly for them. At this stage it's all from developers and early adopters though so simply pointing them at the thread is going to solve about 90% of their problems. We're still going to have to hand-hold a few of them through making a new mod.ini though but that shouldn't be too bad.
 That said we're going to have to deal with a constant trickle of threads like this for months (my guess, one or two a week until a major release).

 Now let's say 3.6.11 is close to ready. We start pushing out release candidates. RCs tend to cause people to come out of the woodwork and test. They never bothered keeping up to date with nightly builds (and I can't fully blame them, it is a pain in the arse!) but they want to make sure everything will work with official build. This is already an annoying issue for the SCP but now we'd added the fact that most of these people will have missed the announcements and will be posting asking why their mod has suddenly stopped working.

And then we release 3.6.11. Now the major support nightmare starts. In a single stroke we've made every single FS2_Open install invalid. We have hundreds of different configurations for FS2_Open installs and none of them will work properly now. We're now expecting every single SCP user to find and replace the mod.ini for their installed campaigns. Not just the ones supported by the new launcher, all of them. Including any they are making themselves.

And that's just if we're talking about doing this manually. If we do this at the same time as the new installer/launcher comes out the problem actually gets worse because users won't know if the issue is due to the launcher or FS2_Open.

Then we get to the issue of the developers. Basically we're forcing a new system on them. Every campaign, new or old is going to be forced to update their installers to fix their old mod.ini files, and to changes their development installs to reflect the new requirements.
We've added yet another chore to the task of preparing a mod for distribution (and one that will often go wrong, for instance devs who can't use MV_Advanced will forget to include it in their released mod.ini files).
We've forced those users who do know what they are doing and have compiled their own favourite effects into a VP to manually change the mod.ini files for mods they download.
We've forced FSUP to never change the names of any of their VP files because it simply isn't worth the hassle of making everyone update their mod.ini files.

And what have we gained in the end?

-A system that is less intuitive that the original one. For all it's faults the current system is simple. Name a -mod folder and everything in that folder is used.
-A system that makes mod.ini files a requirement for the engine itself to work properly with mods (when previously they've only been an optional addition for the launcher)
-A system that doesn't really solve the biggest issue when it comes to people having ****ed up installs anyway, people installing dodgy files in the FS2 root directory.


If you had suggested this once the installer/launcher had been out a couple of years I'd probably still be against it. It's too much work for the support and development teams for too little gain. But suggesting it as something we should do now is crazy for the reasons I mentioned above. 
Karajorma's Freespace FAQ. It's almost like asking me yourself.

[ Diaspora ] - [ Seeds Of Rebellion ] - [ Mind Games ]

 

Offline Zacam

  • Magnificent Bastard
  • Administrator
  • 211
  • I go Sledge-O-Matic on Spammers
    • Steam
    • Twitter
    • ModDB Feature
Re: An idea (and flamewar invite)
I see Kara's very eloquently painted point, however detrimentally it may paint our members, as definitely a cautionary thing to be aware of.

But it does miss perhaps 2 essential points, and while I may be wrong, I'll list what I think they are.

1: Being aware of that fact can make us better prepared. And to assume that we, the fellow irc-ites might not have already (or during the process of testing) think of these things, well, it is somewhat understandable so please don't take as being meant harshly when I say we are not stupid by any means. Granted, that still doesn't disqualify us from not covering for something because we didn't happen to think of it, but that will happen any way and you just do what you can.

2: (god's I seem to making a lot of posts with points and numbers in them lately.) Er, no, that isn't it, sorry, damn tired right now. The Second point is that the biggest key in the INITIAL deployment stage of this idea, should it be worked towards (And I know I would insist on it and probably so to would The E) would be absolutely no change in the current behaviour of how it handles current mods based on the existing mod.ini's. Because likely this launcher control file (or whatever it's going to be or whether or not it'll be XML, INI or whatever), will be called something else completely. So that it can be ignored by older setups that won't have or recognize it anyway and to take priority when it is present so as to coexist with a mod.ini.

Does this still present some issues? Well, more than likely yes, and I'm too tired to think them through right now. But it also has it's benefits that I think go to some degree of being able to address both ideas (and hopefully ideals) at large that have been presented here.

Also, since the debug log doesn't list anything outside of the VPs that it's loading (unless it's a table file, but we don't know from what directory) having it defined by a flag via debug_filter.cfg as default on that can show us the loose files being found and loaded in directories would be a nice bonus. I added that to my idea plate, but I don't know how immediately I'll be getting to it on top of also wanting to write an automation system for building that will use the SVN Revision data into version.h as well as learning more about the code by resolving as many of the currently remaining 68 warnings left for Code (without Speech or Voice Recognition enabled).
« Last Edit: October 25, 2009, 10:18:03 pm by Zacam »
Report MediaVP issues, now on the MediaVP Mantis! Read all about it Here!
Talk with the community on Discord
"If you can keep a level head in all this confusion, you just don't understand the situation"

¤[D+¬>

[08/01 16:53:11] <sigtau> EveningTea: I have decided that I am a 32-bit registerkin.  Pronouns are eax, ebx, ecx, edx.
[08/01 16:53:31] <EveningTea> dhauidahh
[08/01 16:53:32] <EveningTea> sak
[08/01 16:53:40] * EveningTea froths at the mouth
[08/01 16:53:40] <sigtau> i broke him, boys