GraphViz versions 2.x used to be configurable via $wgGraphVizSettings. Ever since the version bump to 3, configuration was removed and things like the DOT execPath were hard-coded. This task is to add the configurability back. I propose we use the composer extension.json's field config for default setting values (read more here).
|mediawiki/extensions/GraphViz : master||Makes GraphViz configurable again|
@osorio-juan-microsoft I was going to merge your patch (it looks great) but then re-read the wiki...
The existing documentation says that something like the following should be possible:
wfLoadExtension( 'GraphViz' ); $wgGraphVizSettings->execPath = "/other/path/to/dot";
because that used to be possible when the GraphViz initialization process included:
$GLOBALS['wgGraphVizSettings'] = new GraphVizSettings();
but now results in:
Creating default object from empty value
And the above patch also doesn't support this because it treats the settings as an array, not an object.
It seems to me that using a single config var to hold an extension's whole configuration is not a common thing, and instead each variable should be named separately (and prefixed with the extension name). This wouldn't make sense, if we were maintaining backwards-compatibility, but if we can't maintain BC then perhaps we should think about moving to the more common way of doing it?
Sorry I didn't think of this earlier.
Of course, it's probably fine to just go with the array-style config var, as the patch is currently, and people can just update their LocalSettings.php when upgrading. What do you think?
@Samwilson You're right! Sorry I missed this.
I think it will be difficult to both adopt the new configuration paradigm and support backward compatibility. In this case, I think it would be best to go with single, separate setting items instead of the way it is in the patch. This will avoid confusion for users migrating from version 2.x. From what I can tell, there is no way to provide objects instead of arrays in the new settings style.