New preferences system

classic Classic list List threaded Threaded
31 messages Options
12
Reply | Threaded
Open this post in threaded view
|

New preferences system

Andrew Garrett-4
I've branch-merged the new preferences system that I've spent the last
few weeks developing.

On the outside, you probably won't notice any difference except a few
bugfixes, but the internals have undergone a complete rewrite.

All of the actual preference definitions and utility functions have
been separated out into Preferences.php, which holds all business
logic for the new system. The UI and submission logic for the system
is done in SpecialPreferences.php, which, now only a hundred lines
long, wraps a generic class I've written to encourage separation of
business and UI logic called 'HTMLForm'.

The advantage of this clear separation is that writing an API module
is very simple, and it can be called internally, too!

Extensions must now hook GetPreferences instead of the existing hooks
(which were too low-level to maintain compatibility with), I've
updated all extensions used on Wikimedia. This new hook allows you to
put preferences wherever you want, and a new preference can be added
in less than ten lines of code, rather than the hundred-line nightmare
that was required in the previous iteration.

I'd like to look towards trimming some of the existing preferences
that are no longer relevant, and adding new preferences as common
sense dictates.

Feedback, praise and criticism regarding the changes is certainly welcome!

--
Andrew Garrett
Sent from Sydney, Nsw, Australia

_______________________________________________
Wikitech-l mailing list
[hidden email]
https://lists.wikimedia.org/mailman/listinfo/wikitech-l
Reply | Threaded
Open this post in threaded view
|

Re: New preferences system

Jacopo Corbetta-2
On Fri, Apr 24, 2009 at 05:59, Andrew Garrett <[hidden email]> wrote:
> I'd like to look towards trimming some of the existing preferences
> that are no longer relevant, and adding new preferences as common
> sense dictates.

Can I suggest adding a "preferred editor" preference?
Ideally, it should be a dropdown box (given the variety of existing
visual editors <http://usability.wikimedia.org/wiki/Environment_Survey/MediaWiki_Extensions/Nomination#Editing>,
an admin might wish to install more than one), but a simple "disable
the visual editor" checkbox is probably enough for most setups (and
simpler to maintain).

Thanks, bye
--
Jacopo Corbetta
[hidden email]
[hidden email]

WYMeditor MediaWiki integration:
http://www.mediawiki.org/wiki/Extension:MeanEditor

_______________________________________________
Wikitech-l mailing list
[hidden email]
https://lists.wikimedia.org/mailman/listinfo/wikitech-l
Reply | Threaded
Open this post in threaded view
|

Re: New preferences system

Mohamed Magdy-2
In reply to this post by Andrew Garrett-4
On Fri, Apr 24, 2009 at 5:59 AM, Andrew Garrett <[hidden email]>wrote:

> I've branch-merged the new preferences system that I've spent the last
> few weeks developing.
>
> On the outside, you probably won't notice any difference except a few
> bugfixes, but the internals have undergone a complete rewrite.
>
> All of the actual preference definitions and utility functions have
> been separated out into Preferences.php, which holds all business
> logic for the new system. The UI and submission logic for the system
> is done in SpecialPreferences.php, which, now only a hundred lines
> long, wraps a generic class I've written to encourage separation of
> business and UI logic called 'HTMLForm'.
>
> The advantage of this clear separation is that writing an API module
> is very simple, and it can be called internally, too!
>
> Extensions must now hook GetPreferences instead of the existing hooks
> (which were too low-level to maintain compatibility with), I've
> updated all extensions used on Wikimedia. This new hook allows you to
> put preferences wherever you want, and a new preference can be added
> in less than ten lines of code, rather than the hundred-line nightmare
> that was required in the previous iteration.
>
> I'd like to look towards trimming some of the existing preferences
> that are no longer relevant, and adding new preferences as common
> sense dictates.
>
> Feedback, praise and criticism regarding the changes is certainly welcome!
>
> --
> Andrew Garrett
> Sent from Sydney, Nsw, Australia
>
> _______________________________________________
>

You are so useful.
_______________________________________________
Wikitech-l mailing list
[hidden email]
https://lists.wikimedia.org/mailman/listinfo/wikitech-l
Reply | Threaded
Open this post in threaded view
|

Re: New preferences system

Eugene Zelenko
In reply to this post by Andrew Garrett-4
Hi!

On Thu, Apr 23, 2009 at 8:59 PM, Andrew Garrett <[hidden email]> wrote:
> The advantage of this clear separation is that writing an API module
> is very simple, and it can be called internally, too!

I think will be good idea to use API internally (not only have
possibility to call), as result code will have more testing and
coverage.

Eugene.

_______________________________________________
Wikitech-l mailing list
[hidden email]
https://lists.wikimedia.org/mailman/listinfo/wikitech-l
Reply | Threaded
Open this post in threaded view
|

Re: New preferences system

John Doe-27
thanks, I take this as the first step in creating global preferences?

On Fri, Apr 24, 2009 at 9:36 AM, Eugene Zelenko <[hidden email]>wrote:

> Hi!
>
> On Thu, Apr 23, 2009 at 8:59 PM, Andrew Garrett <[hidden email]>
> wrote:
> > The advantage of this clear separation is that writing an API module
> > is very simple, and it can be called internally, too!
>
> I think will be good idea to use API internally (not only have
> possibility to call), as result code will have more testing and
> coverage.
>
> Eugene.
>
> _______________________________________________
> Wikitech-l mailing list
> [hidden email]
> https://lists.wikimedia.org/mailman/listinfo/wikitech-l
>
_______________________________________________
Wikitech-l mailing list
[hidden email]
https://lists.wikimedia.org/mailman/listinfo/wikitech-l
Reply | Threaded
Open this post in threaded view
|

Re: New preferences system

Brian J Mingus
In reply to this post by Andrew Garrett-4
How many non-WMF extensions will this break?

On Thu, Apr 23, 2009 at 9:59 PM, Andrew Garrett <[hidden email]>wrote:

> I've branch-merged the new preferences system that I've spent the last
> few weeks developing.
>
> On the outside, you probably won't notice any difference except a few
> bugfixes, but the internals have undergone a complete rewrite.
>
> All of the actual preference definitions and utility functions have
> been separated out into Preferences.php, which holds all business
> logic for the new system. The UI and submission logic for the system
> is done in SpecialPreferences.php, which, now only a hundred lines
> long, wraps a generic class I've written to encourage separation of
> business and UI logic called 'HTMLForm'.
>
> The advantage of this clear separation is that writing an API module
> is very simple, and it can be called internally, too!
>
> Extensions must now hook GetPreferences instead of the existing hooks
> (which were too low-level to maintain compatibility with), I've
> updated all extensions used on Wikimedia. This new hook allows you to
> put preferences wherever you want, and a new preference can be added
> in less than ten lines of code, rather than the hundred-line nightmare
> that was required in the previous iteration.
>
> I'd like to look towards trimming some of the existing preferences
> that are no longer relevant, and adding new preferences as common
> sense dictates.
>
> Feedback, praise and criticism regarding the changes is certainly welcome!
>
> --
> Andrew Garrett
> Sent from Sydney, Nsw, Australia
>
> _______________________________________________
> Wikitech-l mailing list
> [hidden email]
> https://lists.wikimedia.org/mailman/listinfo/wikitech-l
>
_______________________________________________
Wikitech-l mailing list
[hidden email]
https://lists.wikimedia.org/mailman/listinfo/wikitech-l
Reply | Threaded
Open this post in threaded view
|

Re: New preferences system

Gerard Meijssen-3
Hoi,
How much work do you think it will be to repair an extension that needs
repair ? For someone who knows the code and for someone who just has to
repair his one extension ??
Thanks,
      GerardM

2009/4/24 Brian <[hidden email]>

> How many non-WMF extensions will this break?
>
> On Thu, Apr 23, 2009 at 9:59 PM, Andrew Garrett <[hidden email]
> >wrote:
>
> > I've branch-merged the new preferences system that I've spent the last
> > few weeks developing.
> >
> > On the outside, you probably won't notice any difference except a few
> > bugfixes, but the internals have undergone a complete rewrite.
> >
> > All of the actual preference definitions and utility functions have
> > been separated out into Preferences.php, which holds all business
> > logic for the new system. The UI and submission logic for the system
> > is done in SpecialPreferences.php, which, now only a hundred lines
> > long, wraps a generic class I've written to encourage separation of
> > business and UI logic called 'HTMLForm'.
> >
> > The advantage of this clear separation is that writing an API module
> > is very simple, and it can be called internally, too!
> >
> > Extensions must now hook GetPreferences instead of the existing hooks
> > (which were too low-level to maintain compatibility with), I've
> > updated all extensions used on Wikimedia. This new hook allows you to
> > put preferences wherever you want, and a new preference can be added
> > in less than ten lines of code, rather than the hundred-line nightmare
> > that was required in the previous iteration.
> >
> > I'd like to look towards trimming some of the existing preferences
> > that are no longer relevant, and adding new preferences as common
> > sense dictates.
> >
> > Feedback, praise and criticism regarding the changes is certainly
> welcome!
> >
> > --
> > Andrew Garrett
> > Sent from Sydney, Nsw, Australia
> >
> > _______________________________________________
> > Wikitech-l mailing list
> > [hidden email]
> > https://lists.wikimedia.org/mailman/listinfo/wikitech-l
> >
> _______________________________________________
> Wikitech-l mailing list
> [hidden email]
> https://lists.wikimedia.org/mailman/listinfo/wikitech-l
>
_______________________________________________
Wikitech-l mailing list
[hidden email]
https://lists.wikimedia.org/mailman/listinfo/wikitech-l
Reply | Threaded
Open this post in threaded view
|

Re: New preferences system

Andrew Garrett-4
On Sat, Apr 25, 2009 at 1:46 AM, Gerard Meijssen
<[hidden email]> wrote:
> Hoi,
> How much work do you think it will be to repair an extension that needs
> repair ? For someone who knows the code and for someone who just has to
> repair his one extension ??

It's a reasonably simple fix. Here's an example: [1]

Essentially, all you need to do is remove your existing preferences
code, hook GetPreferences, and add your preference to the array. I'll
be posting documentation as to the format of preference entries
tomorrow, but for now you can look at the examples in
includes/Preferences.php.

[1] http://www.mediawiki.org/wiki/Special:Code/MediaWiki/49690

--
Andrew Garrett
Sent from Sydney, Nsw, Australia

_______________________________________________
Wikitech-l mailing list
[hidden email]
https://lists.wikimedia.org/mailman/listinfo/wikitech-l
Reply | Threaded
Open this post in threaded view
|

Re: New preferences system

Alexandre Emsenhuber
In reply to this post by John Doe-27

Le 24 avr. 09 à 16:15, John Doe a écrit :

> thanks, I take this as the first step in creating global preferences?

Global preferences were added with this rewrite. There is just a  
checkbox saying "use these preferences on all projects" at the bottom  
of Special:Preferences.

Alexandre Emsenhuber (ialex)
_______________________________________________
Wikitech-l mailing list
[hidden email]
https://lists.wikimedia.org/mailman/listinfo/wikitech-l
Reply | Threaded
Open this post in threaded view
|

Re: New preferences system

Brian J Mingus
In reply to this post by Andrew Garrett-4
Is an autoconverter feasible?
There are many, many extensions guys!

On Fri, Apr 24, 2009 at 9:53 AM, Andrew Garrett <[hidden email]>wrote:

> On Sat, Apr 25, 2009 at 1:46 AM, Gerard Meijssen
> <[hidden email]> wrote:
> > Hoi,
> > How much work do you think it will be to repair an extension that needs
> > repair ? For someone who knows the code and for someone who just has to
> > repair his one extension ??
>
> It's a reasonably simple fix. Here's an example: [1]
>
> Essentially, all you need to do is remove your existing preferences
> code, hook GetPreferences, and add your preference to the array. I'll
> be posting documentation as to the format of preference entries
> tomorrow, but for now you can look at the examples in
> includes/Preferences.php.
>
> [1] http://www.mediawiki.org/wiki/Special:Code/MediaWiki/49690
>
> --
> Andrew Garrett
> Sent from Sydney, Nsw, Australia
>
> _______________________________________________
> Wikitech-l mailing list
> [hidden email]
> https://lists.wikimedia.org/mailman/listinfo/wikitech-l
>
_______________________________________________
Wikitech-l mailing list
[hidden email]
https://lists.wikimedia.org/mailman/listinfo/wikitech-l
Reply | Threaded
Open this post in threaded view
|

Re: New preferences system

Chad
And the vast vast majority don't use preferences. I don't think it'll
be a huge issue. The extensions that are broken and people use
will quickly be found and fixed.

-Chad

On Fri, Apr 24, 2009 at 12:43 PM, Brian <[hidden email]> wrote:

> Is an autoconverter feasible?
> There are many, many extensions guys!
>
> On Fri, Apr 24, 2009 at 9:53 AM, Andrew Garrett <[hidden email]>wrote:
>
>> On Sat, Apr 25, 2009 at 1:46 AM, Gerard Meijssen
>> <[hidden email]> wrote:
>> > Hoi,
>> > How much work do you think it will be to repair an extension that needs
>> > repair ? For someone who knows the code and for someone who just has to
>> > repair his one extension ??
>>
>> It's a reasonably simple fix. Here's an example: [1]
>>
>> Essentially, all you need to do is remove your existing preferences
>> code, hook GetPreferences, and add your preference to the array. I'll
>> be posting documentation as to the format of preference entries
>> tomorrow, but for now you can look at the examples in
>> includes/Preferences.php.
>>
>> [1] http://www.mediawiki.org/wiki/Special:Code/MediaWiki/49690
>>
>> --
>> Andrew Garrett
>> Sent from Sydney, Nsw, Australia
>>
>> _______________________________________________
>> Wikitech-l mailing list
>> [hidden email]
>> https://lists.wikimedia.org/mailman/listinfo/wikitech-l
>>
> _______________________________________________
> Wikitech-l mailing list
> [hidden email]
> https://lists.wikimedia.org/mailman/listinfo/wikitech-l
>

_______________________________________________
Wikitech-l mailing list
[hidden email]
https://lists.wikimedia.org/mailman/listinfo/wikitech-l
Reply | Threaded
Open this post in threaded view
|

Re: New preferences system

Thomas Dalton
2009/4/24 Chad <[hidden email]>:
> And the vast vast majority don't use preferences. I don't think it'll
> be a huge issue. The extensions that are broken and people use
> will quickly be found and fixed.

How gracefully will old extensions fail?

_______________________________________________
Wikitech-l mailing list
[hidden email]
https://lists.wikimedia.org/mailman/listinfo/wikitech-l
Reply | Threaded
Open this post in threaded view
|

Re: New preferences system

Trevor Parscal-2
In reply to this post by Jacopo Corbetta-2
While from a user's perspective the various editors seen on the page you
linked to appear to be drop-in replacements for the current plain text
solution, I can assure you that there are many other reasons for not yet
deploying them on Wikipedia that go far beyond our ability to provide
users with a preference to turn them off. Almost all of those visual
editors require the use of not-yet-stable reverse parsing, and many
cause articles to change in ways the user did not intend, such as adding
white-space places the user did not touch, or stripping out HTML
comments from the code. There are other downsides as well, which are
represented in an article closely related to the one you linked to,
which is the results of the extensions chosen for evaluation from the
list of nominated ones.

http://usability.wikimedia.org/wiki/Environment_Survey/MediaWiki_Extensions/Results

An existing example of us providing users with such an option however
can be seen in the ability to turn various editing-related gadgets such
as wikiEd. I think this shows that should a more visual editing
interface become able to be deployed, we certainly would make it optional.

- Trevor Parscal

On 4/24/09 5:30 AM, Jacopo Corbetta wrote:

> On Fri, Apr 24, 2009 at 05:59, Andrew Garrett<[hidden email]>  wrote:
>    
>> I'd like to look towards trimming some of the existing preferences
>> that are no longer relevant, and adding new preferences as common
>> sense dictates.
>>      
>
> Can I suggest adding a "preferred editor" preference?
> Ideally, it should be a dropdown box (given the variety of existing
> visual editors<http://usability.wikimedia.org/wiki/Environment_Survey/MediaWiki_Extensions/Nomination#Editing>,
> an admin might wish to install more than one), but a simple "disable
> the visual editor" checkbox is probably enough for most setups (and
> simpler to maintain).
>
> Thanks, bye
> --
> Jacopo Corbetta
> [hidden email]
> [hidden email]
>
> WYMeditor MediaWiki integration:
> http://www.mediawiki.org/wiki/Extension:MeanEditor
>
> _______________________________________________
> Wikitech-l mailing list
> [hidden email]
> https://lists.wikimedia.org/mailman/listinfo/wikitech-l
>    
_______________________________________________
Wikitech-l mailing list
[hidden email]
https://lists.wikimedia.org/mailman/listinfo/wikitech-l
Reply | Threaded
Open this post in threaded view
|

Re: New preferences system

Brion Vibber-3
In reply to this post by Eugene Zelenko
On 4/24/09 6:36 AM, Eugene Zelenko wrote:
> Hi!
>
> On Thu, Apr 23, 2009 at 8:59 PM, Andrew Garrett<[hidden email]>  wrote:
>> The advantage of this clear separation is that writing an API module
>> is very simple, and it can be called internally, too!
>
> I think will be good idea to use API internally (not only have
> possibility to call), as result code will have more testing and
> coverage.

My general inclination is to structure code into a couple layers:

Backend/internal interface:
* Wraps over direct database, processing, etc

User interface:
* Web UI
* API module

Client-side JavaScript UI code can use the API to reach the backend, but
I don't see much benefit to trying to use the API on the PHP UI end;
it'll generally just be awkward.

API code should rarely have to do any serious DB or processing work
itself; it should be calling the backend model/controller-level interface.

-- brion

_______________________________________________
Wikitech-l mailing list
[hidden email]
https://lists.wikimedia.org/mailman/listinfo/wikitech-l
Reply | Threaded
Open this post in threaded view
|

Re: New preferences system

Aryeh Gregor
In reply to this post by Thomas Dalton
On Fri, Apr 24, 2009 at 12:59 PM, Thomas Dalton <[hidden email]> wrote:
> 2009/4/24 Chad <[hidden email]>:
>> And the vast vast majority don't use preferences. I don't think it'll
>> be a huge issue. The extensions that are broken and people use
>> will quickly be found and fixed.
>
> How gracefully will old extensions fail?

I'd assume fatally, but extensions sometimes break when core code
updates.  That's a fact of life.  One way to avoid this is to ask to
get it checked into Wikimedia SVN, so a grep can show that there are
users and they can be fixed by whoever makes the breaking change.

_______________________________________________
Wikitech-l mailing list
[hidden email]
https://lists.wikimedia.org/mailman/listinfo/wikitech-l
Reply | Threaded
Open this post in threaded view
|

Re: New preferences system

Brion Vibber-3
On 4/24/09 10:34 AM, Aryeh Gregor wrote:

> On Fri, Apr 24, 2009 at 12:59 PM, Thomas Dalton<[hidden email]>  wrote:
>> 2009/4/24 Chad<[hidden email]>:
>>> And the vast vast majority don't use preferences. I don't think it'll
>>> be a huge issue. The extensions that are broken and people use
>>> will quickly be found and fixed.
>> How gracefully will old extensions fail?
>
> I'd assume fatally, but extensions sometimes break when core code
> updates.  That's a fact of life.  One way to avoid this is to ask to
> get it checked into Wikimedia SVN, so a grep can show that there are
> users and they can be fixed by whoever makes the breaking change.

I believe they'll just not have their extended preferences displayed
until they've updated to work with the non-crappy, actually sanely
extensible, preferences interface.

Nothing else would be affected.

-- brion

_______________________________________________
Wikitech-l mailing list
[hidden email]
https://lists.wikimedia.org/mailman/listinfo/wikitech-l
Reply | Threaded
Open this post in threaded view
|

Re: New preferences system

Jacopo Corbetta-2
In reply to this post by Trevor Parscal-2
On Fri, Apr 24, 2009 at 19:04, Trevor Parscal <[hidden email]> wrote:
> While from a user's perspective the various editors seen on the page you
> linked to appear to be drop-in replacements for the current plain text
> solution, I can assure you that there are many other reasons for not yet
> deploying them on Wikipedia that go far beyond our ability to provide
> users with a preference to turn them off.

Many wikis use MediaWiki beside Wikipedia.

> An existing example of us providing users with such an option however
> can be seen in the ability to turn various editing-related gadgets such
> as wikiEd. I think this shows that should a more visual editing
> interface become able to be deployed, we certainly would make it optional.

Exactly. Each editor has its own incompatible setting which allows it
to be turned on or off. Basically, each extension assumes it is going
to be the one and only one editor for the wiki. If you install more
than one, things will break. A unified preference might have been
useful. Anyway, no big deal.

Bye,
--
Jacopo Corbetta
[hidden email]
[hidden email]

WYMeditor MediaWiki integration:
http://www.mediawiki.org/wiki/Extension:MeanEditor

_______________________________________________
Wikitech-l mailing list
[hidden email]
https://lists.wikimedia.org/mailman/listinfo/wikitech-l
Reply | Threaded
Open this post in threaded view
|

Re: New preferences system

Thomas Dalton
2009/4/24 Jacopo Corbetta <[hidden email]>:

>> An existing example of us providing users with such an option however
>> can be seen in the ability to turn various editing-related gadgets such
>> as wikiEd. I think this shows that should a more visual editing
>> interface become able to be deployed, we certainly would make it optional.
>
> Exactly. Each editor has its own incompatible setting which allows it
> to be turned on or off. Basically, each extension assumes it is going
> to be the one and only one editor for the wiki. If you install more
> than one, things will break. A unified preference might have been
> useful. Anyway, no big deal.

I don't believe any WYSIWYG (or close to) editor that exists for
MediaWiki is good enough that you can completely avoid editing the
wikitext directly (in order to do complicated stuff), that means you
can't use one and only one editor unless that editor is the default
wikitext editor.

_______________________________________________
Wikitech-l mailing list
[hidden email]
https://lists.wikimedia.org/mailman/listinfo/wikitech-l
Reply | Threaded
Open this post in threaded view
|

Re: New preferences system

Alex Zaddach
In reply to this post by Jacopo Corbetta-2
Jacopo Corbetta wrote:

> On Fri, Apr 24, 2009 at 19:04, Trevor Parscal <[hidden email]> wrote:
>> While from a user's perspective the various editors seen on the page you
>> linked to appear to be drop-in replacements for the current plain text
>> solution, I can assure you that there are many other reasons for not yet
>> deploying them on Wikipedia that go far beyond our ability to provide
>> users with a preference to turn them off.
>
> Many wikis use MediaWiki beside Wikipedia.
>
>> An existing example of us providing users with such an option however
>> can be seen in the ability to turn various editing-related gadgets such
>> as wikiEd. I think this shows that should a more visual editing
>> interface become able to be deployed, we certainly would make it optional.
>
> Exactly. Each editor has its own incompatible setting which allows it
> to be turned on or off. Basically, each extension assumes it is going
> to be the one and only one editor for the wiki. If you install more
> than one, things will break. A unified preference might have been
> useful. Anyway, no big deal.

Extensions can add their own preferences more easily now. Adding a
default preference to turn off a feature that doesn't yet exist in
MediaWiki core doesn't make much sense.

--
Alex (wikipedia:en:User:Mr.Z-man)

_______________________________________________
Wikitech-l mailing list
[hidden email]
https://lists.wikimedia.org/mailman/listinfo/wikitech-l
Reply | Threaded
Open this post in threaded view
|

Re: New preferences system

Soxred93@gmail.com
In reply to this post by Jacopo Corbetta-2
Keep in mind that when MediaWiki is developed, the best interests of  
Wikimedia are in mind. Wikimedia takes priority on MW development.

X!

On Apr 24, 2009, at 4:02 PM [Apr 24, 2009 ], Jacopo Corbetta wrote:

> Many wikis use MediaWiki beside Wikipedia.


_______________________________________________
Wikitech-l mailing list
[hidden email]
https://lists.wikimedia.org/mailman/listinfo/wikitech-l

PGP.sig (201 bytes) Download Attachment
12