[Talk] Plugins Quarantine

[Talk] Plugins Quarantine

Postby Jim » Sun Aug 26, 2012 2:38 pm

For disussions related to the Plugins Quarantine area.

Questions, comments, suggestions, and insults accepted.
0
Hi

Jim 
Global Moderator
 

Re: [Talk] Plugins Quarantine

Postby pilou » Sun Aug 26, 2012 5:43 pm

For my part Sketchyphysics make some troubles with some of other plugins
So use it only when you need it else rename Sketchyphysics.rb in rbo for example :):)
0
Frenchy Pilou
Is beautiful that please without concept!
Speedy Galerie
User avatar
pilou 
Top SketchUcator
 

Re: [Talk] Plugins Quarantine

Postby thomthom » Sun Aug 26, 2012 10:28 pm

Pilou wrote:For my part Sketchyphysics make some troubles with some of other plugins
So use it only when you need it else rename Sketchyphysics.rb in rbo for example :):)

I don't think I want this banned though - but a clear warning should be issued about it in the way it invades the SketchUp environment - and do make changes to base classes.
0
Thomas Thomassen — SketchUp Monkey & Coding addict
List of my plugins and link to the CookieWare fund
User avatar
thomthom 
PluginStore Author
PluginStore Author
 

Re: [Talk] Plugins Quarantine

Postby chrisglasier » Sun Aug 26, 2012 11:02 pm

Jim wrote:For disussions related to the Plugins Quarantine area.

Questions, comments, suggestions, and insults accepted.


You have helped me a great deal in the past not only to appreciate a rational approach to software but also to speak out if something seems wrong. I am grateful for that. This quarantine idea is terrible.

You really want to introduce a new human system with lists and banning when surely the goal is self-organising non-human systems that neither censure nor inhibit human endeavour (here, in developing plugins) rather support it. Like WWW.

If there is a conflict of names the last to be loaded will prevail. So isn't the trick to load the code every time a plug in is selected. This would be the job of the system loader. It is for the developer to ensure there is no conflict within his own coding and its included files; in this respect the multi-level namespaces/modules are most useful. (But these can never be the ultimate global defense because they rely on human choice.)

I just saw TT's note about altering base classes. That is a problem when these have not been uniquely pre-fixed/identified and reserved. I don't have a solution ... perhaps some kind of filtering/renaming in the loader ... but I know banning is not a workable/acceptable solution for this era.
0
With JSON machines we can analyse what is to be achieved so that IT can help with automation to achieve it.
User avatar
chrisglasier 
PluginStore Author
PluginStore Author
 

Re: [Talk] Plugins Quarantine

Postby Dave R » Sun Aug 26, 2012 11:29 pm

Unfortunately there are a few plugins out there that wreak havoc with other plugins because these scripts change base classes. They cause no end of trouble for users as evidenced by the repeated requests for assistance in getting other plugins to run and the solution being to disable these troublesome plugins. the authors have been asked multiple times to fix their scripts but so far have not done so. It seems to me that if authors won't take the needed steps to make their scripts play nicely, they should not be hosted here on SCF.
0
%

(THERE'S NO PLACE LIKE)

G28 X0.0 Y0.0 Z0.0

M30

%
User avatar
Dave R 
Global Moderator
 

Re: [Talk] Plugins Quarantine

Postby thomthom » Sun Aug 26, 2012 11:50 pm

chrisglasier wrote:If there is a conflict of names the last to be loaded will prevail. So isn't the trick to load the code every time a plug in is selected. This would be the job of the system loader. It is for the developer to ensure there is no conflict within his own coding and its included files; in this respect the multi-level namespaces/modules are most useful. (But these can never be the ultimate global defense because they rely on human choice.)

That sounds complicated and open to any kind of bugs and unforeseen issues.

SketchUp has a shared environment where all plugins reside in. Because of that it is each developer's responsibility to ensure they encapsulate everything to avoid clashes. What base classes and modules that ships with SketchUp should also not be altered as it would be exactly the same as messing about in the global namespace.
Now, it would be great if plugins automatically was unable to interfere with each other, though it would also bring on limitations in terms of extensibility. But the reality is what it is - we need to deal with it as is and not in some utopic theoretic manner.

We're spending a great amount of time on some very few plugins that cause problems. And personally, and many other of the mods here, we try to inspect plugins from new plugin writers and spot for potential issues. We then present this to the author with explanations and suggestions for alternatives. But some times the author never responds - and we just end up wasting a great amount of time.

I therefore support this list and the removal of plugins where the author does not amend the offending plugin. It's not for shame, but a mean for us (developers, moderators and users) to be able to log and track known issues and conflict. The amount of wasted time trying to repeatedly resolve these conflicts is ridiculous and I'm fed up with it!

If you got alternative ideas, then by all means, do share it. But please let it be practical and pragmatic dealing with the reality of the current situation.
0
Thomas Thomassen — SketchUp Monkey & Coding addict
List of my plugins and link to the CookieWare fund
User avatar
thomthom 
PluginStore Author
PluginStore Author
 

Re: [Talk] Plugins Quarantine

Postby chrisglasier » Mon Aug 27, 2012 12:25 am

thomthom wrote:... we need to deal with it as is and not in some utopic theoretic manner.



I thought this kind of Luddite attitude had faded ever since we learned Englebart, Gates, Berners-Lee had faced the same charge.

thomthom wrote:
That sounds complicated and open to any kind of bugs and unforeseen issues.
SketchUp has a shared environment where all plugins reside in.



Well it isn't at least in JavaScript. After all I am only suggesting rearranging the same environment on selection of a plugin.


Because of that it is each developer's responsibility to ensure they encapsulate everything to avoid clashes.



Now that does not work because you are involving human policing. Anyone can create a website. If they don't follow the language rules it won't work. It will never compromise any other website as far as I know. The existing Sketchup plugin system should be modified for the same ends.


If you got alternative ideas, then by all means, do share it. But please let it be practical and pragmatic dealing with the reality of the current situation.



Be careful with remarks like that!
(Toffler:"Idea-assassins rush forward to kill any new suggestion on the grounds of its impracticality, while defending whatever now exists as practical, no matter how absurd.")
0
Last edited by chrisglasier on Mon Aug 27, 2012 2:06 am, edited 1 time in total.
With JSON machines we can analyse what is to be achieved so that IT can help with automation to achieve it.
User avatar
chrisglasier 
PluginStore Author
PluginStore Author
 

Re: [Talk] Plugins Quarantine

Postby TIG » Mon Aug 27, 2012 12:41 am

Let's be pragmatic!

Here's my partial list - mainly for ill-advised base-class 'fiddling' etc... which mess up other legit tools using the proper API...
    SketchyPhysics :o [PM'd author several times]
    DrivingDimensions :shock: [PM'd author several times]
    SunStudy/SunTools/SolarStudy/SolarPosition :shock: :shock: :roll: or whatever it's called [seems to be defunct]
    Matchbox :shock: :shock: :shock: [seems to be defunct]
    VirtualWind :o [overwrites default progressbar! fixes published by others, but not ideal that the base tool is pants!]
    Podium [some versions : :o ] [but this seems to be superseded :? ]
And several toolbar compilations that include out-of-date scripts [from 3rd parties that might have not always been included with any kind of 'permission' from their authors], and more worryingly out of date 'system' files - like sketchup.rb and extensions.rb - which the main Sketchup installer will have already put afresh into the Tools folder - but this compilations might have placed old versions into the Plugins folder... where of course they'll get found by the startup auto-loader before the legit versions in Tools ! This is subtle in its effects and often difficult to trace...

Also there have been some recent half-baked 'BIM/BAM/BOM' toolsets that although they are changing almost daily per update... they currently do seem to reset [to suit their own devices as they load] things like 'current-view', 'camera-type', 'on-layers', etc - applied to every SKP that a hapless user opens, this is rather than as the user chooses to initialize/use them... [its IS solvable by tagging any such BIM SKP as such with an attribute, so that they only open in a 'BIM' way] :roll:

I think the onus needs to pass back to all of these authors, who have to date left us to clean up the crap left in the trail of their illegitimate offspring... :twisted:

If authors publish 'dangerous' stuff we must warn others about it, and if necessary remove it from SCF threads and links... because we spend a lot of time sorting out new users who stumble into traps these ill-advised tools create - albeit done unthinkingly...
0
TIG
User avatar
TIG 
Global Moderator
 

Re: [Talk] Plugins Quarantine

Postby Humpmetwice » Mon Aug 27, 2012 1:56 am

I've had problems with the ModelFunction plugin.
0
User avatar
Humpmetwice 
 

Re: [Talk] Plugins Quarantine

Postby Krisidious » Mon Aug 27, 2012 7:09 am

I just like having a warning. And truth be told if the creator knew there was a problem then he/she probably wouldn't have released it. others see things from a different perspective and see the mistake you miss. and let's face it we have some of the foremost sketchup developers on the planet. when they look at a noob's plugin they see every hair that's out of place.

I like the idea better of a review board and or SCF approval or review board approval. then people would add their work to some submission area where everyone would look at it in their respective test installations, then if it passes muster it is added to then SCF plugin index of approved plugins. and they could advertise with some icon as such. then I could just look for the approved icon and know I'm safe.

of course who would reward this panel? this review board? as it is now Thom and Tig and some others pour over newly released plugins and warn us and the developer of errors or conflicts. while a great service to the community, these few individuals get nothing but knowledge and thanks in return.

But you know... I don't make these things and I'm very grateful to everyone who does... The last thing I want to do is de-incentivize the creators.

as you were.
0
By: Kristoff Rand
Home Designer
Unique House Plans
User avatar
Krisidious 
 

Re: [Talk] Plugins Quarantine

Postby thomthom » Mon Aug 27, 2012 9:03 am

chrisglasier wrote:
thomthom wrote:That sounds complicated and open to any kind of bugs and unforeseen issues.
SketchUp has a shared environment where all plugins reside in.

Well it isn't at least in JavaScript. After all I am only suggesting rearranging the same environment on selection of a plugin.

Javascript, WebDialogs, yes. They are isolated. In SketchUp Ruby API, no - is is shared. How do we deal with that? I cannot rewrite Ruby and SketchUp to make it work completely different from how it is designed. Do you have concrete samples of actions that could be done based in the status quo?

chrisglasier wrote:
Because of that it is each developer's responsibility to ensure they encapsulate everything to avoid clashes.

Now that does not work because you are involving human policing. Anyone can create a website. If they don't follow the language rules it won't work. It will never compromise any other website as far as I know. The existing Sketchup plugin system should be modified for the same ends.

Again - the same as above. Websites are isolated entities. SketchUp plugins are not! Oranges and apples.
The reality is that the environment is shared. We must deal with that - it's what we've been doing here for a long time and it's wasting a lot of time. Since it is shared there must be some human policing. Developers must take responsibility.

Krisidious wrote:I like the idea better of a review board and or SCF approval or review board approval. then people would add their work to some submission area where everyone would look at it in their respective test installations, then if it passes muster it is added to then SCF plugin index of approved plugins. and they could advertise with some icon as such. then I could just look for the approved icon and know I'm safe.

of course who would reward this panel? this review board? as it is now Thom and Tig and some others pour over newly released plugins and warn us and the developer of errors or conflicts. while a great service to the community, these few individuals get nothing but knowledge and thanks in return.

That wouldn't make any less work for us - having to moderate every plugins there is. I want to educate, not police. I will not be on such a board.

The bottom line is:
Most plugins do work nicely with each other. It's just a very few sets that's causing trouble. But these few is causing a lot of extra work for other developers who get support request, and a lot of work for us moderators. We do realise that new developers might not know how the SketchUp plugin ecosystem works and we do provide feedback. But when this feedback is ignored, what are we to do?
0
Thomas Thomassen — SketchUp Monkey & Coding addict
List of my plugins and link to the CookieWare fund
User avatar
thomthom 
PluginStore Author
PluginStore Author
 

Re: [Talk] Plugins Quarantine

Postby chrisglasier » Mon Aug 27, 2012 9:42 am

@TT

As usual I failed to expose essential details behind my proposal. Simply though the applications I have made using JavaScript have a core section which provides the basic mechanism to manipulate raw data and individual devices which make different types of multimedia displays from it. The devices could be loaded all at once to create a situation similar to an environment of Sketchup plugins.

Many of my devices have a start() function so the last one loaded is always current. To ensure the right start function matches the selected device I have its file reloaded after the device has been selected. I don't know if that can be done in Ruby. If so I think the comparison is valid.

Any devices with any function prefixed core will not work. Couldn't this be applied to core Sketchup as part of Trimble's application?

Just ideas ...
0
With JSON machines we can analyse what is to be achieved so that IT can help with automation to achieve it.
User avatar
chrisglasier 
PluginStore Author
PluginStore Author
 

Re: [Talk] Plugins Quarantine

Postby thomthom » Mon Aug 27, 2012 9:51 am

chrisglasier wrote:Any devices with any function prefixed core will not work. Couldn't this be applied to core Sketchup as part of Trimble's application?

That would be something the SketchUp devs would have to do. We cannot modify the SketchUp core. A more robust plugin environment, even a sandbox feature authors can opt in for would be nice. But it's a SketchUp feature request, which is another topic all together. What can we do right now, as is? Today, or this week?
0
Thomas Thomassen — SketchUp Monkey & Coding addict
List of my plugins and link to the CookieWare fund
User avatar
thomthom 
PluginStore Author
PluginStore Author
 

Re: [Talk] Plugins Quarantine

Postby chrisglasier » Mon Aug 27, 2012 10:53 am

thomthom wrote:
chrisglasier wrote:Any devices with any function prefixed core will not work. Couldn't this be applied to core Sketchup as part of Trimble's application?

That would be something the SketchUp devs would have to do. We cannot modify the SketchUp core. A more robust plugin environment, even a sandbox feature authors can opt in for would be nice. But it's a SketchUp feature request, which is another topic all together. What can we do right now, as is? Today, or this week?


Well I could draft the request if you and the others agree to check it and endorse it ... in a new topic of course.
0
With JSON machines we can analyse what is to be achieved so that IT can help with automation to achieve it.
User avatar
chrisglasier 
PluginStore Author
PluginStore Author
 

Re: [Talk] Plugins Quarantine

Postby thomthom » Mon Aug 27, 2012 11:06 am

Sure. Got my thumbs up for that.
I just wanted to keep this topic in the lines of what we can act on now. Not something we'll have to wait for any potential future release a few years ahead into the future. Because right now we spend hours every week on these issues.
0
Thomas Thomassen — SketchUp Monkey & Coding addict
List of my plugins and link to the CookieWare fund
User avatar
thomthom 
PluginStore Author
PluginStore Author
 

Re: [Talk] Plugins Quarantine

Postby Aerilius » Mon Aug 27, 2012 12:07 pm

If there's no decision taken about total removal of such scripts, one could add a tag to the plugin post's title that is considered by the plugin index script.
0
Last edited by Aerilius on Mon Aug 27, 2012 2:06 pm, edited 1 time in total.

Aerilius 
PluginStore Author
PluginStore Author
 

Re: [Talk] Plugins Quarantine

Postby micione » Mon Aug 27, 2012 1:46 pm

I'm sorry,
I am not an expert on the subject.
But I would like to ask a question: TIG, Thomthom, it would be possible to create a plugin (also not free) that "reads" the other plugins? To find out if you try to change the class-base, etc..
I realize that they must not be easy, but You are true professionals.
0
User avatar
micione 
 

Re: [Talk] Plugins Quarantine

Postby thomthom » Mon Aug 27, 2012 1:58 pm

There are so many ways base classes can be expanded - but one could perhaps catch the most common ones...
0
Thomas Thomassen — SketchUp Monkey & Coding addict
List of my plugins and link to the CookieWare fund
User avatar
thomthom 
PluginStore Author
PluginStore Author
 

Re: [Talk] Plugins Quarantine

Postby TIG » Mon Aug 27, 2012 3:09 pm

thomthom wrote:There are so many ways base classes can be expanded - but one could perhaps catch the most common ones...
and... since no one pays us to do this, then it's a balance between us fixing the problems as they arise in users' posts, versus us writing a tool to fix problems, that were created by others and which they ought to fix themselves...

Fellow members... please don't get us wrong here... this kind of problem is NOT widespread...

There were some scripts a while ago that overwrote base-classes etc and messed up others' legit tools - these are now rarer. - but several of them are 'popular' and still carry the tainted code - but as they are 'old' the authors show no urgency in resolving these problems... :(

There are some toolbar compilations that bundle 'old system files' and install them in the wrong folders etc - again these are somewhat old tools and could readily be fixed, had the authors got the will, but because these are 'old' they show little urgency... :x

Some recent 'BIM/BAM/BOM' tools are 'in beta' and so they are somewhat half-baked. These can currently change the setting of any model the user opens, without the user's knowledge or prior consent... Again this can be fixed so that the changes only apply to SKPs where the user chooses to make them into 'BIM' SKPs... This needs fixing before the tools are 'safe'... :o

Moderators spend disproportionate time fixing these issue, so we are looking at ways of stopping them happening...
The other disproportionate 'time-waster' is the [usually-new] users who can't read/understand simple instructions and download/install/activate relatively simple sets of files+helpers without getting error messages... We are also discussing how we might reduce the 'failure-rate' :shock:

:roll:
0
TIG
User avatar
TIG 
Global Moderator
 

Re: [Talk] Plugins Quarantine

Postby Aerilius » Mon Aug 27, 2012 3:44 pm

but several of them are 'popular' and still carry the tainted code - but as they are 'old' the authors show no urgency in resolving these problems...

Forking&fixing (if license allows) and taking the original offline then. I know it's not our job. Or just taking them offline. Or we just add a warning but then the status quo doesn't change because there are users who don't remember from where they downloaded software or don't remember having seen such a warning.
Also a problem is that they are still distributed over other ways/websites where plugins are never updated.

users who can't read/understand simple instructions and download/install/activate relatively simple sets of files

That is something Trimble/SketchUp should fix. A plugin installer plugin works only for users who are able to install that.
0

Aerilius 
PluginStore Author
PluginStore Author
 

Re: [Talk] Plugins Quarantine

Postby thomthom » Mon Aug 27, 2012 4:58 pm

Aerilius wrote:A plugin installer plugin works only for users who are able to install that.

There is the Install Extension features of SU8M1... but it doesn't seem to be much used.
0
Thomas Thomassen — SketchUp Monkey & Coding addict
List of my plugins and link to the CookieWare fund
User avatar
thomthom 
PluginStore Author
PluginStore Author
 

Re: [Talk] Plugins Quarantine

Postby TIG » Mon Aug 27, 2012 6:03 pm

If your Simple-Plugin-Installer came as a RBZ file then if they have >=v8M2 it will put the file into 'Plugins' - it's pointless them doing it manually as it needs that version to work anyway... The instructions can be relatively clear and simple...
Although, if they can't install a single .rb file into the right Plugins folder etc then they ought to be barred from using a computer anyway :roll:
After your tool is installed then they can use that tool to install all future tools in RBZ/ZIP/RB/RBS formats... :)
0
TIG
User avatar
TIG 
Global Moderator
 

Re: [Talk] Plugins Quarantine

Postby Aerilius » Mon Aug 27, 2012 6:53 pm

Offtopic: I'm thinking whether one could include code to validate an installation and to fail gracefully in any case no matter how wrong a user messed up the files.

But that doesn't help for other plugins.
0

Aerilius 
PluginStore Author
PluginStore Author
 

Re: [Talk] Plugins Quarantine

Postby thomthom » Mon Aug 27, 2012 10:03 pm

TIG wrote:If your Simple-Plugin-Installer came as a RBZ file then if they have >=v8M2 it will put the file into 'Plugins' - it's pointless them doing it manually as it needs that version to work anyway...

True, it would work better as a repackaged RBZ, with step by step screenshots of installing via Extensions.
0
Thomas Thomassen — SketchUp Monkey & Coding addict
List of my plugins and link to the CookieWare fund
User avatar
thomthom 
PluginStore Author
PluginStore Author
 

Re: [Talk] Plugins Quarantine

Postby Jim » Tue Aug 28, 2012 10:00 pm

Hi everyone. Interesting discussion; thanks for the feedback.

First I will say that I know the title "Plugins Quarantine" is a bit of hyperbole. The purpose of the quarantine is simply a resource to keep track of plugins that are behaving badly to help in trouble-shooting plugin problems. With the list in place, we can point user to the topic and say "remove these plugins if you have them installed." And with a warning message close to the download in the original plugin thread, hopefully fewer people will be tempted to install.

I am not planning on removing any but the most offensive plugins. The Matchbox plugin redefines the behavior of Array concatenation in SketchUp-Ruby. Arrays are probably the single most used data structure in Ruby and nearly every single plugin uses them. This is the problem - a single plugin can redefine the behavior of a built-in function that every other plugin relies on.

Note that with Matchbox, I only moved the download from the Plugins forum to the Quarantine post. The download is still available, and it has been downloaded 4 times since being moved in spite of the warnings!

Pilou wrote:For my part Sketchyphysics make some troubles with some of other plugins
So use it only when you need it else rename Sketchyphysics.rb in rbo for example :):)


This is a problem. SketchyPhysics is a great plugin, but the implementation needs improvement. I have attempted to message the author of SP, but have not had any reply. It will be quarantined until the code is cleaned up.

Aerilius wrote:If there's no decision taken about total removal of such scripts, one could add a tag to the plugin post's title that is considered by the plugin index script.


I've considered this, and like the idea of an extra warning tag in the plugins index. It might happen.

Thomthom proposed there should be 2 quarantine levels - warnings and bannings. I agree. Bannings will be reserved for the worst of the worst. Most plugins will just get a warning. After all if we erase the download, we also erase the possibility for anyone to download the code in order to fix it.
0
Hi

Jim 
Global Moderator
 

Re: [Talk] Plugins Quarantine

Postby thomthom » Tue Aug 28, 2012 10:03 pm

I think the Matchbox plugin is so bad it should be wiped of the face of the digital earth. Really - as you say it's been downloaded several times already within a thread strongly warning about it. I say we remove this dead horse so people don't poke it.
0
Thomas Thomassen — SketchUp Monkey & Coding addict
List of my plugins and link to the CookieWare fund
User avatar
thomthom 
PluginStore Author
PluginStore Author
 

Re: [Talk] Plugins Quarantine

Postby Jim » Tue Aug 28, 2012 10:12 pm

Also, I may set a date of "SketchUp 9" for banning any remaining troublesome plugins. That will be a good opportunity for users to cleanup their plugins folder.
0
Hi

Jim 
Global Moderator
 

Re: [Talk] Plugins Quarantine

Postby TIG » Tue Aug 28, 2012 10:18 pm

I agree that Matchbox and SunPosition [?] should "disappear" - they have no merit that counteracts their problems.
SketchyPhysics has it's fan-base, but is a problem with base-class fiddling... so "warn!" and no 'support' to anyone who uses it.
DrivingDimensions is similar... BUT its author is arrogant and does nothing to fix the mess his tool makes, despite advisements... I say "strong warning!" and no 'support' [ever] to anyone who uses it.
0
TIG
User avatar
TIG 
Global Moderator
 

Re: [Talk] Plugins Quarantine

Postby chrisglasier » Tue Aug 28, 2012 10:32 pm

TIG wrote:I agree that Matchbox and SunPosition [?] should "disappear" - they have no merit that counteracts their problems.
SketchyPhysics has it's fan-base, but is a problem with base-class fiddling... so "warn!" and no 'support' to anyone who uses it.
DrivingDimensions is similar... BUT its author is arrogant and does nothing to fix the mess his tool makes, despite advisements... I say "strong warning!" and no 'support' [ever] to anyone who uses it.


Simply if the problem is base-class fiddling then the base-classes should be protected by design not dictum. Technical prowess not personal intervention.
0
With JSON machines we can analyse what is to be achieved so that IT can help with automation to achieve it.
User avatar
chrisglasier 
PluginStore Author
PluginStore Author
 

Re: [Talk] Plugins Quarantine

Postby TIG » Tue Aug 28, 2012 10:43 pm

Well... how are you going to 'protect' these Ruby base-classes from rogue authors' 'fiddling' ?
Even the very core base-classes like Array can be added to... or much much worse overwritten by 3rd party... Let alone the 'additional' Sketchup ones.

'Looking' inside .rb scripts to find potential issues is limited because there are so many subtle ways of messing up base class/methods, and of course it's impossible with complied .rbs versions like DrivingDimensions !

I'd prefer 'personal' intervention [aka simply 'shunning' or 'forewarning-about' problem-scripts] to some draconian behemoth that polices the streets of Ruby like Judge Dread in the shadows... doling out 'justice'... for who watches the watchers ? ...

How exactly would you do this ? :geek:
0
TIG
User avatar
TIG 
Global Moderator
 

SketchUcation One-Liner Adverts

by Ad Machine » 5 minutes ago



Ad Machine 
Robot
 

Next


 

Return to Plugins

Who is online

Users browsing this forum: Daniele Costa, flaep, grossimarcos, Humamoz and 12 guests

Visit our sponsors: