Idea Advanced Addon Manager

francisdrake

Addon Developer
Addon Developer
Joined
Mar 23, 2008
Messages
1,073
Reaction score
885
Points
128
Website
francisdrakex.deviantart.com
How to manage addons depending on other addons?

They are difficult to handle. If an addon-package is installed, some dll's or textures may be overwritten with older ones, or you may be required to download several packages to get one addon running. And sometimes addon developers add sceneries (like launchpads) to rocket addons, which may lead to trouble if an different launchpad is already installed.

Here is a pic to fight off the boredom of this lengthy post :)
picture.php


This is a proposed outline of an advanced addon-manger for Orbiter:
Each addon gets an additional info file (could be a .txt or .xml file) with a structured list of other files required to run this specific addon. This info file has always the same name, to make it easy for the addon-manager to find it (e.g. "requirements.xml").

Example: If an addon requires Orbitersound to be present, the contents of the "requirements.xml" file contains this path and filename.
<Orbiter>
<Modules>
<Plugin>
OrbiterSound.dll
</Plugin>
</Modules>
</Orbiter>

A precondition is to point the addon-manager to the 'Orbiter' root directory, but this is required only once.

If the file is found, no action is required.
If the file is missing, the addon-manager acesses a database, which is preferrably online at Orbithangar (but could be offline local as well). This database contains information, which files belong to what addons and where they can be downloaded.

If it finds the required file, it automatically downloads it to a local folder (like \Downloads\Orbiter) and automatically extracts (or installs) this addon to the Orbiter main directory.

This requires some discipline from the addon-makers:
If you upgrade a dll, but keep the same functionality, you can keep the dll name.
But if the new version behaves differently, it must have a different file name. This can be done by adding a trailing version number to the filename.

And it requires establishing an addon database, which could mainly be generated by automatically scanning all the addons at Orbithangar, plus manually adding addons not available there.
_____
I put this here as my programming skills are far from being capable to do this myself. Maybe one skilled programmer can pick up this idea? :tiphat:
 

MeDiCS

Donator
Donator
Joined
Sep 22, 2008
Messages
602
Reaction score
2
Points
0
These addons may do what you want, but I haven't used any of them myself: [ame="http://www.orbithangar.com/searchid.php?ID=3973"]OAI Addons *131 ADDONS* *Installer*[/ame], [ame="http://www.orbithangar.com/searchid.php?ID=1452"]http://www.orbithangar.com/searchid.php?ID=1452, [/ame][ame="http://www.orbithangar.com/searchid.php?ID=1465"]http://www.orbithangar.com/searchid.php?ID=1465, [/ame]http://www.orbithangar.com/searchid.php?ID=1411.
 

eveningsky339

Resident Orbiter Slave
Addon Developer
Donator
Joined
May 3, 2008
Messages
1,062
Reaction score
1
Points
0
Location
Western Maine
I certainly agree that an advanced addon management system is necessary, but for now, the aforementioned utilities will have to suffice.
 

Face

Well-known member
Orbiter Contributor
Addon Developer
Beta Tester
Joined
Mar 18, 2008
Messages
4,398
Reaction score
578
Points
153
Location
Vienna
Also, check out the work face started here, might be of interest to you:
http://orbiter-forum.com/showthread.php?t=8768

I didn't update that in a long while, but it should still be compatible with the current TortoiseHg 1.0.1 ...

On a side note, I was playing with the idea of having the whole COIClient integrated in Mercurial/TortoiseHg as an extension instead of having a separate .NET application for it. Now that my Python-skills are waking up again, it should be quite feasable...

regards,
Face
 

MeDiCS

Donator
Donator
Joined
Sep 22, 2008
Messages
602
Reaction score
2
Points
0
I didn't update that in a long while, but it should still be compatible with the current TortoiseHg 1.0.1 ...

On a side note, I was playing with the idea of having the whole COIClient integrated in Mercurial/TortoiseHg as an extension instead of having a separate .NET application for it. Now that my Python-skills are waking up again, it should be quite feasable...

regards,
Face
I quite liked your idea. In fact, I'm in the process of 'inserting' my addons in a Git repo right now (by using branches instead of tags) and I can already see advantages regarding config conflicts over JSGME.

:tiphat:
 

Face

Well-known member
Orbiter Contributor
Addon Developer
Beta Tester
Joined
Mar 18, 2008
Messages
4,398
Reaction score
578
Points
153
Location
Vienna
I quite liked your idea. In fact, I'm in the process of 'inserting' my addons in a Git repo right now (by using branches instead of tags) and I can already see advantages regarding config conflicts over JSGME.

:tiphat:

Well, COI is using branches, too.

The nice thing with orbiter addons is the mostly textual, mergable nature of most files (meshes, configs, scenarios). Granted, DLLs and textures are hardly mergable, but I have yet to see a DLL or texture collision not based on pure name coincidence.

How do you use Git on Windows? TortoiseGit, pure MSysGit or die-hard Cygwin?

regards,
Face
 

MeDiCS

Donator
Donator
Joined
Sep 22, 2008
Messages
602
Reaction score
2
Points
0
Well, COI is using branches, too.

The nice thing with orbiter addons is the mostly textual, mergable nature of most files (meshes, configs, scenarios). Granted, DLLs and textures are hardly mergable, but I have yet to see a DLL or texture collision not based on pure name coincidence.

How do you use Git on Windows? TortoiseGit, pure MSysGit or die-hard Cygwin?

regards,
Face
Well, I didn't read all the thread, but I assumed you were using tags due to 'hg tag -l "Base"' and similars. I don't know Mercurial, so I can't really tell what's exactly happening :embarrassed:.

The only possible DLL collision I can imagine, apart from pure naming coincidence, is the distribution of Spacecraft3/Multistage2 DLLs with the addon.

I'm currently using MSYSGit because I've been using it for quite some time now, but changing to Cygwin is a possibility.

(Addon hosting through SCM, :hmm:)
 

Topper

Addon Developer
Addon Developer
Donator
Joined
Mar 28, 2008
Messages
666
Reaction score
20
Points
33
cfg confiurator

i wish me a tool that can automaticly check/edit the configfiles and install required addon tools too. I know that it is good for the community if people who are installing orbiter improve there skills so they can make own addons.

But i think it is verry hard to intall (for example) NASSP (include sound, grafical improvements of earth atmosphere, hirgh resulotion moon textures etc...). It is nearly impossible to get all this stuff on the first day if the guy is not experienced in thinks like that.

What i will say is that i think that it is a little bit hard for a newbe to install and configurate all this stuff.

On the other side, i know that orbiter is not an arcarde game, where you click "install" and have all the great features. But to have it a bit more easy to install and configure addons will be great i think, but i have no idea how to do this by the best way...
 

MeDiCS

Donator
Donator
Joined
Sep 22, 2008
Messages
602
Reaction score
2
Points
0
A modern SCM (Git/Mercurial, probably Bazaar and others) resolve most conflicts automatically, but there will always be some files that need to be merged manually.
 

Face

Well-known member
Orbiter Contributor
Addon Developer
Beta Tester
Joined
Mar 18, 2008
Messages
4,398
Reaction score
578
Points
153
Location
Vienna
Well, I didn't read all the thread, but I assumed you were using tags due to 'hg tag -l "Base"' and similars. I don't know Mercurial, so I can't really tell what's exactly happening :embarrassed:.

The first outlines were just for demonstration. The actual implementation is using anonymous heads on the repo-side and a flat database file on the COI-side.
An anonymous head is like a branch without a name (aka detached head in Git terms). Just a minor technical difference, in the end Git and Mercurial are almost the same thing.

The only possible DLL collision I can imagine, apart from pure naming coincidence, is the distribution of Spacecraft3/Multistage2 DLLs with the addon.

And here is the beauty of DVCS like Git and Mercurial... if the SC3/MS2 DLLs are really the same thing (i.e. the same binary), a merge will detect that due to the same SHA1. No collision at all.

I'm currently using MSYSGit because I've been using it for quite some time now, but changing to Cygwin is a possibility.

(Addon hosting through SCM, :hmm:)

I'd suggest you stick with MSysGit... it is the defacto "official" Windows release of Git. With Cygwin you get yourself all kinds of freaky Win/Posix interaction troubles.
If you are comfortable with the CLI, TortoiseGit is not your thing either, especially since gitk and git-gui fulfill the GUI needs of the standard workflow quite well.

And for the hosting idea - yes, yes, I've seen that light, too, somewhere in the thread above. Think about something like Github for Orbiter...

regards,
Face
 

MeDiCS

Donator
Donator
Joined
Sep 22, 2008
Messages
602
Reaction score
2
Points
0
And here is the beauty of DVCS like Git and Mercurial... if the SC3/MS2 DLLs are really the same thing (i.e. the same binary), a merge will detect that due to the same SHA1. No collision at all.
Sadly, there are addons being distributed with outdated SC3 versions.

And for the hosting idea - yes, yes, I've seen that light, too, somewhere in the thread above. Think about something like Github for Orbiter...
*Daydreaming*

If I had the bandwidth, I'd do that from my home, and if I had the money, I'd pay GitHub for the hosting. But I have neither, unfortunately :(.
 
Top