== The problem == MediaWiki has a huge UI standardisation problem. We use different libraries, different css styles and class names, some of which do the same thing.
Recently the teams working on Flow and MobileFrontend noticed they were doing various things in a similar fashion. We were both using client side templates, we had various bits of JavaScript that were similar, and many styles that we could potentially be sharing.
== The motivation == The Flow team has recently decided to use Handlebars [1] templating language and the mobile team has been heavily using Hogan [2] templating language for over a year now. Both of us are actively involved in the templating RFC [3] however neither of us want to be blocked by that RFC. Despite these different templating language choices and the knowledge that we will one day need to standardise on just one templating language, we both had a need to pass templates from the server to the client via ResourceLoader. Mobile has been doing this for a year, and rather than another big project like Flow reinventing the wheel, we decided it was time to share code.
We attempted to put the code straight into core, but Krinkle quite rightly pointed out that a templating RL language solution without a templating language packaged with it would be confusing and not useful to the majority of developers outside the Flow/mobile bubble. So instead, Mantle [4] was born.
== Mantle == The purpose of Mantle is to wrap additional infrastructure code that core is missing, and iterate on that code quickly to get it to a state where it is as generic as possible.
As a result of Flow and mobile's collaboration the template code from mobile supports multiple languages which is great for 3rd party users who might want to write code using a different template language) and it now has eyes from both the mobile and Flow teams on it, so it should become stronger now it has 2 use cases. We're hoping to add support for Knockoff which Gabriel has been working on in the near future to experiment with that.
We are waiting on a standard template language before upstreaming this code to core and going through another round of review amongst our developer peers.
Currently Flow depends on Mantle, and there is a patch in gerrit to move MobileFrontend to using it [5]
== The future == Mantle is only a short term measure. The hope is that all the code that goes here will eventually go into core. We hold the code here to exactly the same high standards that we hold core to, we are just able to more freely experiment and iterate. I hope Mantle doesn't exist in a year and instead we have a healthy frontend architecture that Mantle has helped grow.
In the meantime however mobile and Flow will use it to at least standardise on a few things between our codebases with the goal to make Flow as mobile friendly as possible. We don't want to ship two bits of code, one from MobileFrontend and one from Flow, to a mobile Flow page that do exactly the same thing.
I also hope overtime it could be used to share other aspects of missing frontend code architecture across extensions. For example, it could potentially be used to rapidly develop new components for MediaWiki UI [6] that are not quite stable enough to be placed in core and made available to all.
If you're interested in sharing and collaborating on frontend code with Flow and mobile feel, or client side templates in general free to grab me off list and on irc (@jdlrobson). We don't do enough of this :-)
Jon
[1] http://handlebarsjs.com/ [2] http://twitter.github.io/hogan.js/ [3] https://www.mediawiki.org/wiki/Requests_for_comment/HTML_templating_library [4] https://www.mediawiki.org/wiki/Extension:Mantle [5] https://gerrit.wikimedia.org/r/129335 [6] https://git.wikimedia.org/tree/mediawiki%2Fcore.git/49f86a90520e6618c1e3044e...
Jon, I know you mean well, and that you are passionate about solving this problem, but I do not believe this is the right approach. I've communicated that in another thread with a smaller group, and you did not respond to me. Now you are changing key details in the proposal, but the extension code is the same, which makes me feel a bit confused.
In a post to a smaller internal group yesterday, you said:
We hold core to higher standards. We question everything
that goes in there thus it will take you 2 days-1 month to do something compared to 1 day in your own extension, so naturally people will do it in their own extension. When we put stuff into core we ask things such as:
- Is it a complete solution?
- Is it stable?
- Is it clear how to use it (for example if core doesn't use a bit of
mediawiki ui it begs the question to an outside observer why it is there) 4) Does it break anything? 5) Does it meet mediawiki's coding conventions?
I challenged this approach, suggesting that all code we, as paid software engineering professionals, write should live up to these standards.
Today you say:
We hold the code [in Mantle] to exactly the same high standards that we
hold core to, we are just able to more freely experiment and iterate.
So what is going on? You want to base two burgeoning projects on code that is free to change frequently so that you can experiment and iterate, but may or may not be doing so in a way that lives up to the standards of MediaWiki core.
You also say:
I also hope overtime it could be used to share other aspects of
missing frontend code architecture across extensions.
But also say:
Mantle is only a short term measure. The hope is that all the code
that goes here will eventually go into core.
So, again, what is going on? Is this meant to be a short term measure for sharing a few specific features while they not yet appropriate for core, or is this a long term measure that code should be moved through as needed?
*The point I made in the other thread bears repeating.*
<snip>
If the motivation of having Mantle is to move more quickly, I am firmly
against it.
We are paid, as professional software engineers, to write code that provides complete solutions, is stable, is clear how to use, doesn't break anything and meets MediaWiki's coding conventions. We all fall short of this frequently, but should consider that a failure and learn from our mistakes.
What is being suggested is that such irresponsible programming practices be permitted within a special code "purgatory" which has no standards and which everything depends on which means it will inevitably be deployed everywhere.
We shouldn't be coming up with ways to bypass, even if only temporarily, the standards that have been fought so hard to establish within MediaWiki. We should instead be looking for ways to make it easier to code to these standards; like increasing the use of continuous integration, facilitating mentorship and improving review tools.
We should be looking to raise our standards, both in code quality and code reusability. The standards we establish shouldn't be treated as a limiting factor, but rather a call to action. More of our code should be general purpose libraries that can be shared outside of MediaWiki. Good practices are discovered when half-measure solutions fall apart under the strain of a sufficiently complex problem. We have no short of sufficiently complex problems, and an abundance of wisdom that's been poured into our coding conventions and standards for acceptance. I'm hoping we can not loose sight of that every time we run low on patience. </snip>
- Trevor
On Thu, Jul 3, 2014 at 9:09 AM, Jon Robson jrobson@wikimedia.org wrote:
== The problem == MediaWiki has a huge UI standardisation problem. We use different libraries, different css styles and class names, some of which do the same thing.
Recently the teams working on Flow and MobileFrontend noticed they were doing various things in a similar fashion. We were both using client side templates, we had various bits of JavaScript that were similar, and many styles that we could potentially be sharing.
== The motivation == The Flow team has recently decided to use Handlebars [1] templating language and the mobile team has been heavily using Hogan [2] templating language for over a year now. Both of us are actively involved in the templating RFC [3] however neither of us want to be blocked by that RFC. Despite these different templating language choices and the knowledge that we will one day need to standardise on just one templating language, we both had a need to pass templates from the server to the client via ResourceLoader. Mobile has been doing this for a year, and rather than another big project like Flow reinventing the wheel, we decided it was time to share code.
We attempted to put the code straight into core, but Krinkle quite rightly pointed out that a templating RL language solution without a templating language packaged with it would be confusing and not useful to the majority of developers outside the Flow/mobile bubble. So instead, Mantle [4] was born.
== Mantle == The purpose of Mantle is to wrap additional infrastructure code that core is missing, and iterate on that code quickly to get it to a state where it is as generic as possible.
As a result of Flow and mobile's collaboration the template code from mobile supports multiple languages which is great for 3rd party users who might want to write code using a different template language) and it now has eyes from both the mobile and Flow teams on it, so it should become stronger now it has 2 use cases. We're hoping to add support for Knockoff which Gabriel has been working on in the near future to experiment with that.
We are waiting on a standard template language before upstreaming this code to core and going through another round of review amongst our developer peers.
Currently Flow depends on Mantle, and there is a patch in gerrit to move MobileFrontend to using it [5]
== The future == Mantle is only a short term measure. The hope is that all the code that goes here will eventually go into core. We hold the code here to exactly the same high standards that we hold core to, we are just able to more freely experiment and iterate. I hope Mantle doesn't exist in a year and instead we have a healthy frontend architecture that Mantle has helped grow.
In the meantime however mobile and Flow will use it to at least standardise on a few things between our codebases with the goal to make Flow as mobile friendly as possible. We don't want to ship two bits of code, one from MobileFrontend and one from Flow, to a mobile Flow page that do exactly the same thing.
I also hope overtime it could be used to share other aspects of missing frontend code architecture across extensions. For example, it could potentially be used to rapidly develop new components for MediaWiki UI [6] that are not quite stable enough to be placed in core and made available to all.
If you're interested in sharing and collaborating on frontend code with Flow and mobile feel, or client side templates in general free to grab me off list and on irc (@jdlrobson). We don't do enough of this :-)
Jon
[1] http://handlebarsjs.com/ [2] http://twitter.github.io/hogan.js/ [3] https://www.mediawiki.org/wiki/Requests_for_comment/HTML_templating_library [4] https://www.mediawiki.org/wiki/Extension:Mantle [5] https://gerrit.wikimedia.org/r/129335 [6] https://git.wikimedia.org/tree/mediawiki%2Fcore.git/49f86a90520e6618c1e3044e...
Wikitech-l mailing list Wikitech-l@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/wikitech-l
Trevor, That email you quote was about totally different code and a proposal to put it into Mantle and is off topic for this discussion.\T Trevor, please grab me in real life, so we can quell this misunderstanding asap, I feel for whatever reason I am not effectively communicating to you and possibly others and I would like to work out why and avoid future misunderstandings. I had hoped to grab you yesterday but I didn't get time because of the Flow release, hence my lack of reply to that thread.
The main problem Mantle currently solves is: "... we both had a need to pass templates from the server to the client via ResourceLoader. Mobile has been doing this for a year, and rather than another big project like Flow reinventing the wheel, we decided it was time to share code."
To put it this way: * it would be irresponsible to put code for 2 templating languages (Hogan, Handlebars) into core * it would be irresponsible to put code to serve templates with no templating library whilst the RFC about templating is still unresolved. * it would be irresponsible for two teams to write exactly the same code to serve templates to the client in 2 different extensions.
Your own team member Timo was strongly against me putting this code in core in current form and I agreed with him.
"We are paid, as professional software engineers, to write code that provides complete solutions, is stable, is clear how to use, doesn't break anything and meets MediaWiki's coding conventions"
This particularly offends me by the way. This is a no brainer and of course any code Flow or the mobile team is writing will meet coding standards and be stable. I'm not going to post bad code to Wikimedia servers just as I'm not going to post non-generic non-standardised code to core.
This whole thread seems a bit silly to me. We put stuff that should be in core into extensions all the time (for lots of different reasons). For example: WikiEditor, VisualEditor, Echo, MobileFrontend, JsonConfig, etc. So why is Mantle such a bad idea? There's no consensus on implementing templating in core yet, so it seems like a pretty cool idea to have an extension that other extensions can utilize for that technology in the meantime (instead of writing separate code for the same purpose). The JsonConfig and EventLogging extensions are basically the same idea, right? I think if Jon had named the extension "TemplateDooDad" (and hadn't emphasized the fact that he was avoiding putting the code into core), it wouldn't have raised anyone's hackles.
Ryan Kaldari
On Thu, Jul 3, 2014 at 10:57 AM, Jon Robson jdlrobson@gmail.com wrote:
Trevor, That email you quote was about totally different code and a proposal to put it into Mantle and is off topic for this discussion.\T Trevor, please grab me in real life, so we can quell this misunderstanding asap, I feel for whatever reason I am not effectively communicating to you and possibly others and I would like to work out why and avoid future misunderstandings. I had hoped to grab you yesterday but I didn't get time because of the Flow release, hence my lack of reply to that thread.
The main problem Mantle currently solves is: "... we both had a need to pass templates from the server to the client via ResourceLoader. Mobile has been doing this for a year, and rather than another big project like Flow reinventing the wheel, we decided it was time to share code."
To put it this way:
- it would be irresponsible to put code for 2 templating languages
(Hogan, Handlebars) into core
- it would be irresponsible to put code to serve templates with no
templating library whilst the RFC about templating is still unresolved.
- it would be irresponsible for two teams to write exactly the same
code to serve templates to the client in 2 different extensions.
Your own team member Timo was strongly against me putting this code in core in current form and I agreed with him.
"We are paid, as professional software engineers, to write code that provides complete solutions, is stable, is clear how to use, doesn't break anything and meets MediaWiki's coding conventions"
This particularly offends me by the way. This is a no brainer and of course any code Flow or the mobile team is writing will meet coding standards and be stable. I'm not going to post bad code to Wikimedia servers just as I'm not going to post non-generic non-standardised code to core.
Wikitech-l mailing list Wikitech-l@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/wikitech-l
Indeed, this thread is a bit silly.
If someone wants to make an extension that provides a feature, and someone else wants to use it, there's nothing wrong with that. But why would such a thing need proposing?
If the point of Mantle is only to provide a way to bring templates to the client, then sell it that way. Look at the code in Mantle, and the way it's been pitched online and in person. It includes other things too, and has been repeatedly advertised as a general place where any code that is experimental can be put, while also simultaneously pushing for others to depend on it.
I have no problem with adding useful functionality to ResourceLoader, even doing so in an extension. I have a problem with trying to develop, what Jon himself call, a code "purgatory".
I'm happy to talk in person as well.
- Trevor
On Thu, Jul 3, 2014 at 11:23 AM, Ryan Kaldari rkaldari@wikimedia.org wrote:
This whole thread seems a bit silly to me. We put stuff that should be in core into extensions all the time (for lots of different reasons). For example: WikiEditor, VisualEditor, Echo, MobileFrontend, JsonConfig, etc. So why is Mantle such a bad idea? There's no consensus on implementing templating in core yet, so it seems like a pretty cool idea to have an extension that other extensions can utilize for that technology in the meantime (instead of writing separate code for the same purpose). The JsonConfig and EventLogging extensions are basically the same idea, right? I think if Jon had named the extension "TemplateDooDad" (and hadn't emphasized the fact that he was avoiding putting the code into core), it wouldn't have raised anyone's hackles.
Ryan Kaldari
On Thu, Jul 3, 2014 at 10:57 AM, Jon Robson jdlrobson@gmail.com wrote:
Trevor, That email you quote was about totally different code and a proposal to put it into Mantle and is off topic for this discussion.\T Trevor, please grab me in real life, so we can quell this misunderstanding asap, I feel for whatever reason I am not effectively communicating to you and possibly others and I would like to work out why and avoid future misunderstandings. I had hoped to grab you yesterday but I didn't get time because of the Flow release, hence my lack of reply to that thread.
The main problem Mantle currently solves is: "... we both had a need to pass templates from the server to the client via ResourceLoader. Mobile has been doing this for a year, and rather than another big project like Flow reinventing the wheel, we decided it was time to share code."
To put it this way:
- it would be irresponsible to put code for 2 templating languages
(Hogan, Handlebars) into core
- it would be irresponsible to put code to serve templates with no
templating library whilst the RFC about templating is still unresolved.
- it would be irresponsible for two teams to write exactly the same
code to serve templates to the client in 2 different extensions.
Your own team member Timo was strongly against me putting this code in core in current form and I agreed with him.
"We are paid, as professional software engineers, to write code that provides complete solutions, is stable, is clear how to use, doesn't break anything and meets MediaWiki's coding conventions"
This particularly offends me by the way. This is a no brainer and of course any code Flow or the mobile team is writing will meet coding standards and be stable. I'm not going to post bad code to Wikimedia servers just as I'm not going to post non-generic non-standardised code to core.
Wikitech-l mailing list Wikitech-l@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/wikitech-l
Wikitech-l mailing list Wikitech-l@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/wikitech-l
What you're saying, Trevor, makes sense, and I agree that we shouldn't have a "code purgatory". I won't presume to speak for Jon, but I imagine his somewhat provocative presentation of Mantle is due, at least in part, to frustration. About a year ago, the mobile web team was gung-ho to start moving parts of MobileFrontend into core. The first step in this process was to convert MobileFrontend into a skin, which we did. The second part was to move our template system into core, since most of the other parts depend on it and there's no MVC framework in core, especially not for client-side use. We put together an RfC on this,[1] and pushed it at the architecture summit. No consensus was reached on moving forward, and instead we reluctantly agreed to hold off on doing anything until Gabriel had a chance to implement an alternate solution for comparison. We recently tested Gabriel's implementation,[2] but are not totally satisfied with it or convinced that it is the best way forward (although Gabriel is still in the process of improving it).
After having lost most of our momentum, we recently pushed to prioritize core infrastructure work during mobile web's planning for the upcoming fiscal year, and even talked about breaking off part of the mobile web team into a "skin and infrastructure team". This too was basically shut down in favor of continuing work on mobile features. Then after suffering both of these setbacks we learn that there is yet another nascent proposal for a new core UI skinning infrastructure and even though it doesn't have a single line of code yet, you have been granted 80% of your time to work on it (rather than working on either of other two systems that have already been started). While it's great that you have invited the mobile web team to participate in this effort, I hope you can understand how this entire experience has been extremely demoralizing and frustrating for the mobile web team. Personally, I can't blame Jon for losing patience in the process and (purposefully or not) causing a stink about it.
That said, I hope we (the mobile web team) can put aside some of our feelings of being snubbed and outmaneuvered and work (yet again) towards reaching some sort of consensus on moving forward.
1. https://www.mediawiki.org/wiki/Requests_for_comment/HTML_templating_library 2. https://www.mediawiki.org/wiki/Requests_for_comment/HTML_templating_library/...
Ryan Kaldari
On Thu, Jul 3, 2014 at 12:05 PM, Trevor Parscal tparscal@wikimedia.org wrote:
Indeed, this thread is a bit silly.
If someone wants to make an extension that provides a feature, and someone else wants to use it, there's nothing wrong with that. But why would such a thing need proposing?
If the point of Mantle is only to provide a way to bring templates to the client, then sell it that way. Look at the code in Mantle, and the way it's been pitched online and in person. It includes other things too, and has been repeatedly advertised as a general place where any code that is experimental can be put, while also simultaneously pushing for others to depend on it.
I have no problem with adding useful functionality to ResourceLoader, even doing so in an extension. I have a problem with trying to develop, what Jon himself call, a code "purgatory".
I'm happy to talk in person as well.
- Trevor
On Thu, Jul 3, 2014 at 11:23 AM, Ryan Kaldari rkaldari@wikimedia.org wrote:
This whole thread seems a bit silly to me. We put stuff that should be in core into extensions all the time (for lots of different reasons). For example: WikiEditor, VisualEditor, Echo, MobileFrontend, JsonConfig, etc. So why is Mantle such a bad idea? There's no consensus on implementing templating in core yet, so it seems like a pretty cool idea to have an extension that other extensions can utilize for that technology in the meantime (instead of writing separate code for the same purpose). The JsonConfig and EventLogging extensions are basically the same idea,
right?
I think if Jon had named the extension "TemplateDooDad" (and hadn't emphasized the fact that he was avoiding putting the code into core), it wouldn't have raised anyone's hackles.
Ryan Kaldari
On Thu, Jul 3, 2014 at 10:57 AM, Jon Robson jdlrobson@gmail.com wrote:
Trevor, That email you quote was about totally different code and a proposal to put it into Mantle and is off topic for this discussion.\T Trevor, please grab me in real life, so we can quell this misunderstanding asap, I feel for whatever reason I am not effectively communicating to you and possibly others and I would like to work out why and avoid future misunderstandings. I had hoped to grab you yesterday but I didn't get time because of the Flow release, hence my lack of reply to that thread.
The main problem Mantle currently solves is: "... we both had a need to pass templates from the server to the client via ResourceLoader. Mobile has been doing this for a year, and rather than another big project like Flow reinventing the wheel, we decided it was time to share code."
To put it this way:
- it would be irresponsible to put code for 2 templating languages
(Hogan, Handlebars) into core
- it would be irresponsible to put code to serve templates with no
templating library whilst the RFC about templating is still unresolved.
- it would be irresponsible for two teams to write exactly the same
code to serve templates to the client in 2 different extensions.
Your own team member Timo was strongly against me putting this code in core in current form and I agreed with him.
"We are paid, as professional software engineers, to write code that provides complete solutions, is stable, is clear how to use, doesn't break anything and meets MediaWiki's coding conventions"
This particularly offends me by the way. This is a no brainer and of course any code Flow or the mobile team is writing will meet coding standards and be stable. I'm not going to post bad code to Wikimedia servers just as I'm not going to post non-generic non-standardised code to core.
Wikitech-l mailing list Wikitech-l@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/wikitech-l
Wikitech-l mailing list Wikitech-l@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/wikitech-l
Wikitech-l mailing list Wikitech-l@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/wikitech-l
Sounds like there are some issues here that may need untangling. I'm pinging Erik. He's probably aware of this but I would like to hear his POV. Mobile is high on WMF's priority stack and it's high on my list of personal interests.
Pine
On Thu, Jul 3, 2014 at 1:46 PM, Ryan Kaldari rkaldari@wikimedia.org wrote:
What you're saying, Trevor, makes sense, and I agree that we shouldn't have a "code purgatory". I won't presume to speak for Jon, but I imagine his somewhat provocative presentation of Mantle is due, at least in part, to frustration. About a year ago, the mobile web team was gung-ho to start moving parts of MobileFrontend into core. The first step in this process was to convert MobileFrontend into a skin, which we did. The second part was to move our template system into core, since most of the other parts depend on it and there's no MVC framework in core, especially not for client-side use. We put together an RfC on this,[1] and pushed it at the architecture summit. No consensus was reached on moving forward, and instead we reluctantly agreed to hold off on doing anything until Gabriel had a chance to implement an alternate solution for comparison. We recently tested Gabriel's implementation,[2] but are not totally satisfied with it or convinced that it is the best way forward (although Gabriel is still in the process of improving it).
After having lost most of our momentum, we recently pushed to prioritize core infrastructure work during mobile web's planning for the upcoming fiscal year, and even talked about breaking off part of the mobile web team into a "skin and infrastructure team". This too was basically shut down in favor of continuing work on mobile features. Then after suffering both of these setbacks we learn that there is yet another nascent proposal for a new core UI skinning infrastructure and even though it doesn't have a single line of code yet, you have been granted 80% of your time to work on it (rather than working on either of other two systems that have already been started). While it's great that you have invited the mobile web team to participate in this effort, I hope you can understand how this entire experience has been extremely demoralizing and frustrating for the mobile web team. Personally, I can't blame Jon for losing patience in the process and (purposefully or not) causing a stink about it.
That said, I hope we (the mobile web team) can put aside some of our feelings of being snubbed and outmaneuvered and work (yet again) towards reaching some sort of consensus on moving forward.
https://www.mediawiki.org/wiki/Requests_for_comment/HTML_templating_library 2.
https://www.mediawiki.org/wiki/Requests_for_comment/HTML_templating_library/...
Ryan Kaldari
On Thu, Jul 3, 2014 at 12:05 PM, Trevor Parscal tparscal@wikimedia.org wrote:
Indeed, this thread is a bit silly.
If someone wants to make an extension that provides a feature, and
someone
else wants to use it, there's nothing wrong with that. But why would
such a
thing need proposing?
If the point of Mantle is only to provide a way to bring templates to the client, then sell it that way. Look at the code in Mantle, and the way
it's
been pitched online and in person. It includes other things too, and has been repeatedly advertised as a general place where any code that is experimental can be put, while also simultaneously pushing for others to depend on it.
I have no problem with adding useful functionality to ResourceLoader,
even
doing so in an extension. I have a problem with trying to develop, what
Jon
himself call, a code "purgatory".
I'm happy to talk in person as well.
- Trevor
On Thu, Jul 3, 2014 at 11:23 AM, Ryan Kaldari rkaldari@wikimedia.org wrote:
This whole thread seems a bit silly to me. We put stuff that should be
in
core into extensions all the time (for lots of different reasons). For example: WikiEditor, VisualEditor, Echo, MobileFrontend, JsonConfig,
etc.
So why is Mantle such a bad idea? There's no consensus on implementing templating in core yet, so it seems like a pretty cool idea to have an extension that other extensions can utilize for that technology in the meantime (instead of writing separate code for the same purpose). The JsonConfig and EventLogging extensions are basically the same idea,
right?
I think if Jon had named the extension "TemplateDooDad" (and hadn't emphasized the fact that he was avoiding putting the code into core),
it
wouldn't have raised anyone's hackles.
Ryan Kaldari
On Thu, Jul 3, 2014 at 10:57 AM, Jon Robson jdlrobson@gmail.com
wrote:
Trevor, That email you quote was about totally different code and a proposal to put it into Mantle and is off topic for this discussion.\T Trevor, please grab me in real life, so we can quell this misunderstanding asap, I feel for whatever reason I am not
effectively
communicating to you and possibly others and I would like to work out why and avoid future misunderstandings. I had hoped to grab you yesterday but I didn't get time because of the Flow release, hence my lack of reply to that thread.
The main problem Mantle currently solves is: "... we both had a need to pass templates from the server to the client via ResourceLoader. Mobile has been doing this for a year, and rather than another big project like Flow reinventing the wheel, we decided it was time to share code."
To put it this way:
- it would be irresponsible to put code for 2 templating languages
(Hogan, Handlebars) into core
- it would be irresponsible to put code to serve templates with no
templating library whilst the RFC about templating is still unresolved.
- it would be irresponsible for two teams to write exactly the same
code to serve templates to the client in 2 different extensions.
Your own team member Timo was strongly against me putting this code
in
core in current form and I agreed with him.
"We are paid, as professional software engineers, to write code that provides complete solutions, is stable, is clear how to use, doesn't break anything and meets MediaWiki's coding conventions"
This particularly offends me by the way. This is a no brainer and of course any code Flow or the mobile team is writing will meet coding standards and be stable. I'm not going to post bad code to Wikimedia servers just as I'm not going to post non-generic non-standardised code to core.
Wikitech-l mailing list Wikitech-l@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/wikitech-l
Wikitech-l mailing list Wikitech-l@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/wikitech-l
Wikitech-l mailing list Wikitech-l@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/wikitech-l
Wikitech-l mailing list Wikitech-l@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/wikitech-l
Sorry Erik, I missed your post in the discussion above and just saw it as I was working my way back through the stack of emails. Anyway, I hope this is on your radar.
Pine
On Thu, Jul 3, 2014 at 9:55 PM, Pine W wiki.pine@gmail.com wrote:
Sounds like there are some issues here that may need untangling. I'm pinging Erik. He's probably aware of this but I would like to hear his POV. Mobile is high on WMF's priority stack and it's high on my list of personal interests.
Pine
On Thu, Jul 3, 2014 at 1:46 PM, Ryan Kaldari rkaldari@wikimedia.org wrote:
What you're saying, Trevor, makes sense, and I agree that we shouldn't have a "code purgatory". I won't presume to speak for Jon, but I imagine his somewhat provocative presentation of Mantle is due, at least in part, to frustration. About a year ago, the mobile web team was gung-ho to start moving parts of MobileFrontend into core. The first step in this process was to convert MobileFrontend into a skin, which we did. The second part was to move our template system into core, since most of the other parts depend on it and there's no MVC framework in core, especially not for client-side use. We put together an RfC on this,[1] and pushed it at the architecture summit. No consensus was reached on moving forward, and instead we reluctantly agreed to hold off on doing anything until Gabriel had a chance to implement an alternate solution for comparison. We recently tested Gabriel's implementation,[2] but are not totally satisfied with it or convinced that it is the best way forward (although Gabriel is still in the process of improving it).
After having lost most of our momentum, we recently pushed to prioritize core infrastructure work during mobile web's planning for the upcoming fiscal year, and even talked about breaking off part of the mobile web team into a "skin and infrastructure team". This too was basically shut down in favor of continuing work on mobile features. Then after suffering both of these setbacks we learn that there is yet another nascent proposal for a new core UI skinning infrastructure and even though it doesn't have a single line of code yet, you have been granted 80% of your time to work on it (rather than working on either of other two systems that have already been started). While it's great that you have invited the mobile web team to participate in this effort, I hope you can understand how this entire experience has been extremely demoralizing and frustrating for the mobile web team. Personally, I can't blame Jon for losing patience in the process and (purposefully or not) causing a stink about it.
That said, I hope we (the mobile web team) can put aside some of our feelings of being snubbed and outmaneuvered and work (yet again) towards reaching some sort of consensus on moving forward.
https://www.mediawiki.org/wiki/Requests_for_comment/HTML_templating_library 2.
https://www.mediawiki.org/wiki/Requests_for_comment/HTML_templating_library/...
Ryan Kaldari
On Thu, Jul 3, 2014 at 12:05 PM, Trevor Parscal tparscal@wikimedia.org wrote:
Indeed, this thread is a bit silly.
If someone wants to make an extension that provides a feature, and
someone
else wants to use it, there's nothing wrong with that. But why would
such a
thing need proposing?
If the point of Mantle is only to provide a way to bring templates to
the
client, then sell it that way. Look at the code in Mantle, and the way
it's
been pitched online and in person. It includes other things too, and has been repeatedly advertised as a general place where any code that is experimental can be put, while also simultaneously pushing for others to depend on it.
I have no problem with adding useful functionality to ResourceLoader,
even
doing so in an extension. I have a problem with trying to develop, what
Jon
himself call, a code "purgatory".
I'm happy to talk in person as well.
- Trevor
On Thu, Jul 3, 2014 at 11:23 AM, Ryan Kaldari rkaldari@wikimedia.org wrote:
This whole thread seems a bit silly to me. We put stuff that should
be in
core into extensions all the time (for lots of different reasons). For example: WikiEditor, VisualEditor, Echo, MobileFrontend, JsonConfig,
etc.
So why is Mantle such a bad idea? There's no consensus on implementing templating in core yet, so it seems like a pretty cool idea to have an extension that other extensions can utilize for that technology in the meantime (instead of writing separate code for the same purpose). The JsonConfig and EventLogging extensions are basically the same idea,
right?
I think if Jon had named the extension "TemplateDooDad" (and hadn't emphasized the fact that he was avoiding putting the code into core),
it
wouldn't have raised anyone's hackles.
Ryan Kaldari
On Thu, Jul 3, 2014 at 10:57 AM, Jon Robson jdlrobson@gmail.com
wrote:
Trevor, That email you quote was about totally different code and a proposal to put it into Mantle and is off topic for this discussion.\T Trevor, please grab me in real life, so we can quell this misunderstanding asap, I feel for whatever reason I am not
effectively
communicating to you and possibly others and I would like to work
out
why and avoid future misunderstandings. I had hoped to grab you yesterday but I didn't get time because of the Flow release, hence
my
lack of reply to that thread.
The main problem Mantle currently solves is: "... we both had a need to pass templates from the server to the client via ResourceLoader. Mobile has been doing this for a year,
and
rather than another big project like Flow reinventing the wheel, we decided it was time to share code."
To put it this way:
- it would be irresponsible to put code for 2 templating languages
(Hogan, Handlebars) into core
- it would be irresponsible to put code to serve templates with no
templating library whilst the RFC about templating is still unresolved.
- it would be irresponsible for two teams to write exactly the same
code to serve templates to the client in 2 different extensions.
Your own team member Timo was strongly against me putting this code
in
core in current form and I agreed with him.
"We are paid, as professional software engineers, to write code that provides complete solutions, is stable, is clear how to use, doesn't break anything and meets MediaWiki's coding conventions"
This particularly offends me by the way. This is a no brainer and of course any code Flow or the mobile team is writing will meet coding standards and be stable. I'm not going to post bad code to Wikimedia servers just as I'm not going to post non-generic non-standardised code to core.
Wikitech-l mailing list Wikitech-l@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/wikitech-l
Wikitech-l mailing list Wikitech-l@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/wikitech-l
Wikitech-l mailing list Wikitech-l@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/wikitech-l
Wikitech-l mailing list Wikitech-l@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/wikitech-l
I spoke with Jon in person and I think we have reached some sort of understanding.
The main point I think should be made public - something I communicated to Jon in person - is that me stepping away from VisualEditor for a couple of months to work on UI standardization and a new skinning system has been proposed without lines of code written or detailed implementations specified because I know that a lot of the work that needs to be done has already been done, and the people who can help me tie it all together already work at the same place that I do and are generally available to me upon request.
My goal is to make things work for everyone to the greatest degree possible. I believe fundamentally in voluntary association, and if we are going to get people to sign on voluntarily to join forces - while it may requires some sacrifices - it will only happen if we aren't snubbing people and then turning around and dictating how they work.
It's unfortunate that there has been so much hostility around this issue. Let's see that it ends now.
- Trevor
On Thu, Jul 3, 2014 at 9:58 PM, Pine W wiki.pine@gmail.com wrote:
Sorry Erik, I missed your post in the discussion above and just saw it as I was working my way back through the stack of emails. Anyway, I hope this is on your radar.
Pine
On Thu, Jul 3, 2014 at 9:55 PM, Pine W wiki.pine@gmail.com wrote:
Sounds like there are some issues here that may need untangling. I'm pinging Erik. He's probably aware of this but I would like to hear his
POV.
Mobile is high on WMF's priority stack and it's high on my list of
personal
interests.
Pine
On Thu, Jul 3, 2014 at 1:46 PM, Ryan Kaldari rkaldari@wikimedia.org wrote:
What you're saying, Trevor, makes sense, and I agree that we shouldn't have a "code purgatory". I won't presume to speak for Jon, but I imagine his somewhat provocative presentation of Mantle is due, at least in part, to frustration. About a year ago, the mobile web team was gung-ho to start moving parts of MobileFrontend into core. The first step in this process was to convert MobileFrontend into a skin, which we did. The second part was to move our template system into core, since most of the other parts depend on it and there's no MVC framework in core, especially not for client-side use. We put together an RfC on this,[1] and pushed it at the architecture summit. No consensus was reached on moving forward, and instead we reluctantly agreed to hold off on doing anything until
Gabriel
had a chance to implement an alternate solution for comparison. We recently tested Gabriel's implementation,[2] but are not totally satisfied with
it
or convinced that it is the best way forward (although Gabriel is still
in
the process of improving it).
After having lost most of our momentum, we recently pushed to prioritize core infrastructure work during mobile web's planning for the upcoming fiscal year, and even talked about breaking off part of the mobile web team into a "skin and infrastructure team". This too was basically shut down
in
favor of continuing work on mobile features. Then after suffering both
of
these setbacks we learn that there is yet another nascent proposal for a new core UI skinning infrastructure and even though it doesn't have a single line of code yet, you have been granted 80% of your time to work
on
it (rather than working on either of other two systems that have already been started). While it's great that you have invited the mobile web
team
to participate in this effort, I hope you can understand how this entire experience has been extremely demoralizing and frustrating for the
mobile
web team. Personally, I can't blame Jon for losing patience in the
process
and (purposefully or not) causing a stink about it.
That said, I hope we (the mobile web team) can put aside some of our feelings of being snubbed and outmaneuvered and work (yet again) towards reaching some sort of consensus on moving forward.
https://www.mediawiki.org/wiki/Requests_for_comment/HTML_templating_library
https://www.mediawiki.org/wiki/Requests_for_comment/HTML_templating_library/...
Ryan Kaldari
On Thu, Jul 3, 2014 at 12:05 PM, Trevor Parscal <tparscal@wikimedia.org
wrote:
Indeed, this thread is a bit silly.
If someone wants to make an extension that provides a feature, and
someone
else wants to use it, there's nothing wrong with that. But why would
such a
thing need proposing?
If the point of Mantle is only to provide a way to bring templates to
the
client, then sell it that way. Look at the code in Mantle, and the way
it's
been pitched online and in person. It includes other things too, and
has
been repeatedly advertised as a general place where any code that is experimental can be put, while also simultaneously pushing for others
to
depend on it.
I have no problem with adding useful functionality to ResourceLoader,
even
doing so in an extension. I have a problem with trying to develop,
what
Jon
himself call, a code "purgatory".
I'm happy to talk in person as well.
- Trevor
On Thu, Jul 3, 2014 at 11:23 AM, Ryan Kaldari <rkaldari@wikimedia.org
wrote:
This whole thread seems a bit silly to me. We put stuff that should
be in
core into extensions all the time (for lots of different reasons).
For
example: WikiEditor, VisualEditor, Echo, MobileFrontend, JsonConfig,
etc.
So why is Mantle such a bad idea? There's no consensus on
implementing
templating in core yet, so it seems like a pretty cool idea to have
an
extension that other extensions can utilize for that technology in
the
meantime (instead of writing separate code for the same purpose).
The
JsonConfig and EventLogging extensions are basically the same idea,
right?
I think if Jon had named the extension "TemplateDooDad" (and hadn't emphasized the fact that he was avoiding putting the code into
core),
it
wouldn't have raised anyone's hackles.
Ryan Kaldari
On Thu, Jul 3, 2014 at 10:57 AM, Jon Robson jdlrobson@gmail.com
wrote:
Trevor, That email you quote was about totally different code and a
proposal
to put it into Mantle and is off topic for this discussion.\T Trevor, please grab me in real life, so we can quell this misunderstanding asap, I feel for whatever reason I am not
effectively
communicating to you and possibly others and I would like to work
out
why and avoid future misunderstandings. I had hoped to grab you yesterday but I didn't get time because of the Flow release, hence
my
lack of reply to that thread.
The main problem Mantle currently solves is: "... we both had a need to pass templates from the server to the client via ResourceLoader. Mobile has been doing this for a year,
and
rather than another big project like Flow reinventing the wheel,
we
decided it was time to share code."
To put it this way:
- it would be irresponsible to put code for 2 templating languages
(Hogan, Handlebars) into core
- it would be irresponsible to put code to serve templates with no
templating library whilst the RFC about templating is still unresolved.
- it would be irresponsible for two teams to write exactly the
same
code to serve templates to the client in 2 different extensions.
Your own team member Timo was strongly against me putting this
code
in
core in current form and I agreed with him.
"We are paid, as professional software engineers, to write code
that
provides complete solutions, is stable, is clear how to use,
doesn't
break anything and meets MediaWiki's coding conventions"
This particularly offends me by the way. This is a no brainer and
of
course any code Flow or the mobile team is writing will meet
coding
standards and be stable. I'm not going to post bad code to
Wikimedia
servers just as I'm not going to post non-generic non-standardised code to core.
Wikitech-l mailing list Wikitech-l@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/wikitech-l
Wikitech-l mailing list Wikitech-l@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/wikitech-l
Wikitech-l mailing list Wikitech-l@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/wikitech-l
Wikitech-l mailing list Wikitech-l@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/wikitech-l
Wikitech-l mailing list Wikitech-l@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/wikitech-l
On 7/3/14, 11:23 AM, Ryan Kaldari wrote:
This whole thread seems a bit silly to me. We put stuff that should be in core into extensions all the time (for lots of different reasons). For example: WikiEditor, VisualEditor, Echo, MobileFrontend, JsonConfig, etc.
I'd say that most of those are mistakes, and should have been in core to begin with. WikiEditor should be in core, Echo (once cleaned up and lots of bugs fixed) should be in core, MobileFrontend should definitely be in core (though, now we're separating skins from core, so maybe not). I haven't looked at JsonConfig, but I think at the architecture summit people were fine with having it in core?
VisualEditor is a different beast, and can't be in core due to its dependency upon Parsoid. Once Parsoid replaces the PHP parser, I see no reason it can't be in core too.
-- Legoktm
On Thu, Jul 3, 2014 at 9:09 AM, Jon Robson jrobson@wikimedia.org wrote:
== The future == Mantle is only a short term measure. The hope is that all the code that goes here will eventually go into core. We hold the code here to exactly the same high standards that we hold core to, we are just able to more freely experiment and iterate. I hope Mantle doesn't exist in a year and instead we have a healthy frontend architecture that Mantle has helped grow.
Like Kaldari, I think it's perfectly fine to have this experimental approach served by a separate extension until an implementation strategy for core has been agreed upon. However, I would recommend pursuing a shorter term resolution so we actually ensure that we work together on a single codebase, rather than diverging further. Can we shoot, _aspirationally_, for settling on a standard template/widget approach in core within the next quarter, and definitely within the next two quarters? I.e. dis-Mantle sooner rather than later?
Thanks, Jon, for posting the details of this approach publicly. I've asked Tomasz to facilitate ongoing conversation about this internally, as well.
Erik
wikitech-l@lists.wikimedia.org