PDA

View Full Version : [REQUEST] Object Oriented Mod/Theme Addons support for skins by XBMC skinning-engine?


djh_
2008-07-28, 18:55
I've always liked the idea of mod support, though the problem has always been importing new code on top of old code and removing it without causing irreperable harm. That and it isn't really "mod support" so much as editing text.

What would be great would be some kind of object-orientated approach to modding skins, much like the way Unreal Engine makes it easy for mutators to override basic classes in Unreal Tournament. So you'd have a mods folder, say, in your skin directory, and XBMC would pick up its contents like it picks up custom.xml files. Then it would override, or maybe extend, any includes specified in the mod files (view types, for example) with those contained in the mod files.

Maybe you could also have a tag in the mod files, or an equivalent of skin.xml (call it mod.xml, perhaps), for mod name and author details. That way, a skin could use this information to tell users which mods were active.

Sound even remotely possible?

jmarshall
2008-07-29, 00:14
Anything is possible. The problem is that the amount you'd have to change is entirely up to how the skinner implemented their skin.

Overwriting a whole file or a whole include is simple. But usually you need far more than that, or you need to be able to insert stuff and change navigation and so on and so forth.

Essentially not feasible most of the time. If you have concrete ideas, let's here them.

Cheers,
Jonathan

djh_
2008-07-29, 01:06
I'll have a think.

Livin
2009-05-03, 20:14
I made this request about 2-3 years ago also but I think with the popularity of AEON and some other highly adopted skins it is very relevant to again bring it up.

There are a lot of MODs to skins and no easy way to try/test/reverse them.

The goal would be to leave the base skin unaltered and have a separate folder in the UserData for MODs or custom themes.

Here's how it would work....

1) user sets skin & theme/mod to be used in Settings
2) engine reads in users Settings
3) engine checks UserData\Skins\<skin name>\<theme/mod name>, and creates index (pointers) to all files needed, including new or 'substitute' XMLs
4) engine loads skin based on new 'index' of both original skin folder and mod folder.

note:
MODed XMLs would need to be complete replacements for originals


This would create an easy way to test and switch between mods/themes


thoughts?

Jeroen
2009-05-03, 21:02
imo it's bound to cause problems as the skins themselves are updated and conflicts arise when a mod is referencing something that is not in the original skin anymore, or has been changed or the other way around.
When a skin gets a big update it is often advised to remove the older version first because of the same sort of scenarios like this.

Livin
2009-05-03, 22:34
imo it's bound to cause problems as the skins themselves are updated and conflicts arise when a mod is referencing something that is not in the original skin anymore, or has been changed or the other way around.
When a skin gets a big update it is often advised to remove the older version first because of the same sort of scenarios like this.

Actually it will cause less problems and be easier to add/remove MODs.

... it will be 100x easier to test the MOD with the 'updated' skin since, if there is an issue with the MOD, all you need to do is turn the MOD off in Settings.

Jeroen
2009-05-03, 22:59
I don't see how it would cause less problems. I understand it will be easier to use/install mods. What I am talking about is conflicts because of cross referencing includes, conditionals and such. I'ts easy saying it will cause less problems, it's another thing to actually understand. no offense

Livin
2009-05-03, 23:07
I don't see how it would cause less problems. I understand it will be easier to use/install mods. What I am talking about is conflicts because of cross referencing includes, conditionals and such. I'ts easy saying it will cause less problems, it's another thing to actually understand. no offense

My request is not to address the issue you are talking about - XML code conflicts.

It would not make it any different than it is today... no better, not worse.

It WILL make enabling and disabling easier... so if there is a problem undoing is simply changing a setting, not copy/replace files... so IMO is is WAY easier. :nod:

Livin
2009-05-09, 00:42
I guess no one sees the usefulness of this... like all my other suggestions, it will show up in XBMC 1 to 2 years later. :(

harryzimm
2009-05-09, 02:10
I made this request about 2-3 years ago
I guess no one sees the usefulness of this... like all my other suggestions, it will show up in XBMC 1 to 2 years later. :(

Hilarious :laugh:

Livin
2009-05-09, 02:17
it usually takes a few times asking before it happens... last time they implemented 'themes' as the "answer" definitely inferior to the solution I've been asking for.

maybe one day.

jmarshall
2009-05-09, 03:04
Most skin modifications are used while a skin is still in production.

There's very few available for finished skins - these usually end up as separate skins (eg Horizons and Aeon).

There's lots of mods for Stark at the moment as it's not finished, and thus in a state of flux. Once it's finished, these mods will become either less important (or unneeded) as the skin includes them, or more important as they move to become a separate skin altogether.

There's very little cases where this hasn't happened, thus there's reason for reluctance.

Cheers,
Jonathan

Evanrich
2009-06-10, 07:43
I don't know anything about mods, skins, or any of this, so if this sounds dumb forgive me, but I just had an idea.

Is there anyway possible to make it so that mods and changes are kept in a seperate file....say Viewtype_Multiplex_MOD.xml instead of editing the originals, so that if you update, say using the GIT program, your changes will still take effect? I don't know if this would be skin based, or if it would have to be coded into XBMC, but I think that would solve the problem of updating and then loosing your mods. Make it so the skin would look for a file with a _MOD extension or something, and then use that in preference to the default file.

althekiller
2009-06-10, 08:13
You need to read up on how to use git correctly. One of its key features is the ability to keep a local branch. In this branch you can apply all of your mods (which should be released as patches not these dumbass full file replacements), then update djh's remote and merge it with your local. Occasionally, you'll run into some merge conflicts, but this is too be expected and you should learn how to resolve them.

motyR
2009-06-10, 11:57
but this is exactly what the guy is saying, the all skining capabilities of xbmc is crap, don't believe me? well look at aeon skin and how it has abused the power that xbmc gave him, abuse? raped, molested.

the all design should have been entirely different, is there any reason why xbmc skining not using inheritance??? FFS why do we need to recreate each and every widget(and please i'm not talking about includes), xbmc should have given more formality and unified specs to the widgets and an explicit directive way when ever u want to use your own custom widget that way u could maintain your modes with no big fuss.

at the time being, for one to create a skin u'll need to have MIT diploma or a father that works as a NASA engineer, that for me is a DESIGN BUG, and lets face it, when it comes to functionality the only skin that can deliver the needs of a true media centre is pm.hd3 and guess what the skin had been written by xbmc developer.

EMK0
2009-06-10, 12:14
The reason we can make all these nice skins is because xbmc skin engine is very flexible look at aeon. There is no way to make the skinning for idiots and have all this. And what are you talking about abusing power? if you don't like aeon just don't use it no one is forcing you.

hikaricore
2009-06-10, 13:24
but this is exactly what the guy is saying, the all skining capabilities of xbmc is crap, don't believe me? well look at aeon skin and how it has abused the power that xbmc gave him, abuse? raped, molested.

the all design should have been entirely different, is there any reason why xbmc skining not using inheritance??? FFS why do we need to recreate each and every widget(and please i'm not talking about includes), xbmc should have given more formality and unified specs to the widgets and an explicit directive way when ever u want to use your own custom widget that way u could maintain your modes with no big fuss.

at the time being, for one to create a skin u'll need to have MIT diploma or a father that works as a NASA engineer, that for me is a DESIGN BUG, and lets face it, when it comes to functionality the only skin that can deliver the needs of a true media centre is pm.hd3 and guess what the skin had been written by xbmc developer.

uhhhh could you be any more of a troll?

EMK0
2009-06-10, 13:44
i was pissed about his post. these guys here spent many years developing this awesome software and he comes in here acting like he could do a better job and calling there hard work crap.:angry:

AnalogKid
2009-06-10, 13:47
but this is exactly what the guy is saying, the all skining capabilities of xbmc is crap, don't believe me? well look at aeon skin and how it has abused the power that xbmc gave him, abuse? raped, molested.

the all design should have been entirely different, is there any reason why xbmc skining not using inheritance??? FFS why do we need to recreate each and every widget(and please i'm not talking about includes), xbmc should have given more formality and unified specs to the widgets and an explicit directive way when ever u want to use your own custom widget that way u could maintain your modes with no big fuss.

at the time being, for one to create a skin u'll need to have MIT diploma or a father that works as a NASA engineer, that for me is a DESIGN BUG, and lets face it, when it comes to functionality the only skin that can deliver the needs of a true media centre is pm.hd3 and guess what the skin had been written by xbmc developer.

SOME of what you say has some validity... the skinning of XBMC is VERY flexible, but not the easiest in the world to develop for... I'm about to start doing some skinning myself, and it's very hard to find resources and guidance starting from scratch.... however:

- It clearly is good enough to get some very impressive results
- You could always help by offering your design expertise and code to the community
- You could consider ways to express criticism in a manner that is seen as constructive and not destructive

I can point to 100 things in XBMC that suck. I can do the same with a Ferrari car. It doesn't mean it's a bad product... it means it's a realistic one. Compromises are made... people develop this for free, across multiple platforms, and whilst there ARE some grumpy developers, the vast majority will give you the time of day, IF you take a little time to be polite, have some sound reasoning in your arguments and make an effort in contributing 'something' to the community... even if it's just helping others overcome issues.

Inheritance (implied Object Orientation) is no guarantee of better code you know. It can in many cases lead to bloated and inefficient code. I support Object Orientation, but it's just a programming paradigm... an artificial construct designed to help stupid humans (all of us) think more easily.

I reiterate, some of what you say is entirely true, and most of the XBMC Team (I think) would agree in principle... they aren't stupid. What they are however, is pressed for time, more focused on other matters and finally masters of their own destiny!...

Come back with a better version of the criticisms and some possible ways to improve it.... you'll be welcomed with open arms!

Cranial
2009-06-10, 14:21
^ Vote for post of month. Sound reply, people can learn from your approach. Thank you.

motyR
2009-06-10, 14:54
i've read and reread my post and then decided to reread it once again and sorry have'nt found any thing that might be ofending.

@EMK0: "if you don't like aeon just don't use it no one is forcing you. "
i've never claimed no one is forcing me, i've just spoke my mind, am i still entitled to so so ??

@hikaricore: "uhhhh could you be any more of a troll? ".
"uhhhh could you be any more of a FANBOY? "
beauty is in the eye of the beholder.

@AnalogKid:
"- It clearly is good enough to get some very impressive results"
OK, but in terms of functionality, how manny of them are fully usable? how many variants of skins are u using, i guess no more then one or two, how come?? xbmc have been here for ages and only 2 usable skins to choose from?
"- You could always help by offering your design expertise and code to the community"
yea i could, but u know what i dont have enough free time to do that, but instead i've decided to contribute money to the projects, both xbmc and aeon. have all those beauty souls that describe me as a troll done that??

any how it's getting too long and i'll stop here but i'm goanna leave u with few qustion? maybe u can en-light me, any reason not to have a default fall-back multi language font for xbmc? why is that in aeon when i press "show debug info" my xbmc goes banana, if djh_ haven't got the time to implement it why cant he inherit it from pm.hd3 for example? why is it that widgets arent separated from their geometry(u want flexibility? this will give u way more then u can imagine)?

good day

Gamester17
2009-06-10, 17:57
That's it, motyR have now been banned for flaming and trolling (http://xbmc.org/wiki/?title=Forum_Usage_Guidelines). Move along, nothing to see here...

Now please get back to the real and serious discussion, or we will be forced to lock this thread! :stare:

Everyone, for future reference, think about How To Ask Questions The Smart Way before posting:
http://catb.org/esr/faqs/smart-questions.html

There is a HUGE difference between critique and constructive criticism :nod:
http://www.wisegeek.com/what-is-constructive-criticism.htm
http://en.wikipedia.org/wiki/Critic
...best is normally just to skip the critique and only give constructive suggestions!

zag2me
2009-06-10, 20:50
Can't a mod directory simply override anything in the skin directory? I'm guessing some kind of versioning would be needed to see if a mod was compatible with a theme release.

It becomes a lot easier once a theme is stable and not changed so much.

jmarshall
2009-06-11, 02:52
See my post earlier in this thread. A separate folder doesn't solve the issue. The issue is that as the skin changes, the mods either stop working permanently (as things they patch are no longer applicable) or need modification, or might work.

Once the skin stops changing, then the mods tend to merge into a new skin anyway.

If modders simply use the tools (github in particular) that they have available, it would make things much easier for users - just grab whatever patch set you want and git takes care of it for you.

Cheers,
Jonathan

AnalogKid
2009-06-11, 04:30
The truth is...

most of the modders are trying to decorate a house whilst it's still being built.
they do some great work, but as soon as a nice skin is released, 20 modders 'tweak' it... all in parallel, and no coordination.

Rearrange this well known phrase:

"Themselves Only Blame Have They To"


Some very very smart thinking in terms of 'includes' could help... but this presupposes the skinner can second guess the likely mods...and offers a very crude 'Insert your version here' type framework. Fine for a few animation transitions, thumbnail sizes etc, but past that... it's messy, as I am learning myself in my first skinning venture!

AnalogKid
2009-06-13, 00:42
Hummm... I don't know quite enough (yet) about this... but I think it's feasible...


What if DJH kept his traditional 'Showcase, List and Multiplex' views... but then had a 4th option which was "Extra Views" When selecting extra views, the user could be given a list of additional (modded views) ?

This would probably mean that each modder 'add' to the skin file for the list (to add their own custom view).

Then instead of 'modding' DJH's original source... they copied it. I admit this is duplication, but it would at least allow users to keep all the different sexy mods.

Is it feasible?


(Yes I know that the user could just replicated the entire AEON folder and keep multiple versions, but this would result in different global settings for each copy of Aeon, which isn't ideal).

Am I barking mad, or could it work?

paul
2009-06-13, 01:06
Hummm... I don't know quite enough (yet) about this... but I think it's feasible...


What if DJH kept his traditional 'Showcase, List and Multiplex' views... but then had a 4th option which was "Extra Views" When selecting extra views, the user could be given a list of additional (modded views) ?

This would probably mean that each modder 'add' to the skin file for the list (to add their own custom view).

Then instead of 'modding' DJH's original source... they copied it. I admit this is duplication, but it would at least allow users to keep all the different sexy mods.

Is it feasible?


(Yes I know that the user could just replicated the entire AEON folder and keep multiple versions, but this would result in different global settings for each copy of Aeon, which isn't ideal).

Am I barking mad, or could it work?
No your not barking mad at least if you are then i must be as i think the same.
It must be possible to do this but it's all down to either djh to make it possible or some other talented coder takeing up the challenge it would be great if this was possible as then you should not be able to screw up the rest of your skin when a new mod does not work the way it should. or maybe i am barking mad :laugh:

AnalogKid
2009-06-13, 02:21
No your not barking mad at least if you are then i must be as i think the same.
It must be possible to do this but it's all down to either djh to make it possible or some other talented coder takeing up the challenge it would be great if this was possible as then you should not be able to screw up the rest of your skin when a new mod does not work the way it should. or maybe i am barking mad :laugh:

So DJH would just have to make a 'plug your extra views here' type list. Then he can walk away and continue doing his own thing!

As long as every 'mod' stuck to it's own namespace (for the filenames) thenit should work I think. However, a lot of the mods aren't done by skilled skinners, they are just a view values hacked around with and objects moved around etc. They'd have to do a little bit more work to conform to this idea... but still, I think it has legs.... maybe!

z][ggy
2009-06-13, 02:27
I think it would or should i say sounds like a great idea (i'll watch this space with baited breathe) :laugh:

Hitcher
2009-06-13, 08:31
I actually had a go at the same thing a week or so ago. I had the view change button cycle through the various layouts instead of bringing up the Aeon's 'Up, Down, Left, Right' so I could add my own but I gave up on it.
Now I just make my mods optional extras for the standard views.

hikaricore
2009-06-13, 08:34
Or people could just get used to using diffs for a more rational modding process.

arosequi
2009-06-14, 07:08
Or people could just get used to using diffs for a more rational modding process.

I don't think that's the issue (although I agree that diffs need to be used).

For example, I use List view for TV seasons and TV episodes -- I use some mods that Hitcher included (watched overlays, full/slim, etc) and love it.

Then, there's that other List mod that Leeuw has created. I would love to use that for music, but don't like it for TV seasons and episodes (he said he only really created it for movies/music).

This isn't possible now (unless I destroy another view, I suppose). It's not a matter of conflicting mods, but of multiple coexisting mods.

Hitcher
2009-06-14, 11:39
Or people could just get used to using diffs for a more rational modding process.

I don't even know what you mean by 'using diffs' so it's either I stop sharing my mods or carry on as I have been.

AnalogKid
2009-06-14, 16:21
Hitcher....please carry on the great work! We all appreciate.

Just sounding out possible ways to make life easier for end users in applying mods, or better still, being able to keep Aeon, and to be able to switch different mods from the actual UI.

Whatever you do, don't stop doing what you're doing... every time a new mod is created, it takes a skin a little step forward, inspires others, and generates even more new ideas.

I think the 'diff' comment was that people should learn how to use diff tools (difference tools) to be able to work out the changes that modders have made etc.
The is presupposes that the end users are technically savvy and could understand a word of skin code / config. Unrealistic in my view. In my view, a great skin is not only how wonder it looks and operates, but how easy it is to apply by end users... which means a little more work for skinners (in some cases).

Sometimes, I wish I'd never mentioned the idea! lol... that's all it was!

needtotest
2009-06-26, 19:31
Skins are cool - and mod's often makes them even cooler.
But - there need to be a way to streamline the mods/plugins for the skins.

So like the way we have plugins/skins for xbmc it would be nice to have plugin/mods for skins. So that you do not tamper with the original skin but just add to it.

Sorry I do not have any idea how to but just thought I would thow a ball up and hope someone would catch it.

/needtotest

needtotest
2009-06-26, 23:36
sorry did not see this thread - so my request got moved.

But as mentioned above I like mod's but mixing them is a hazzle. So if we could come up with a way to have support for mods in the skins where you could turn them on/off. Mods of course needs to be split into tiny parts so that you can mix and match. Mods that mod the same part of the original skin will ofcourse rull out each other so only one can be selected/turned on.

Can this be handled in a sup folder structure where you just list "colors" / "views" ...
and under colors and views you would then again have more options - the skin should then list these in the skin mod setting section.

Could something like this be done?

/needtotest

edit #1
OK - read some of the thread and folders is not an option I guess. Can we have github support withing xbmc?
Or maybe an system skin that works as a base for all skins - so if a skin is outdated or missing some part ... then the base skin steps in?!?