Vue.js is becoming quite popular, and is more unrestrictive than other
frameworks of its kind. Laravel is backing it, and overall, though young
for V2, seems quite capable of solving UI problems elegantly.
On Mon, Jan 30, 2017 at 11:25 AM, Bryan Davis <bd808(a)wikimedia.org> wrote:
On Mon, Jan 30, 2017 at 10:17 AM, Isarra Yos
<zhorishna(a)gmail.com> wrote:
Er, what does this mean? What is MVVM?
A bit of software pattern jargon:
https://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93viewmodel
On 30/01/17 13:57, Jan Dittrich wrote:
>
> Hello Wikitext-l,
>
> -----------------------------------
> TL;DR: The Wikidata team is considering to use a MVVM/Single-State
> solution
> for Wikidata’s UI. What are requirements and concerns would be important
> to
> consider?
> -----------------------------------
>
> Wikidata’s current UI is built on jQuery UI. Since jQueryUI shall be
faded
> out, we are looking at possible future
frameworks or paradigms to build
> our
> UI on. Our needs are:
>
> - Having a sustainable foundation
> - Being able to handle complex state dependencies (simplest are like:
"if
> element x is in edit mode, set element y to
saving mode")
> - A solution that is easy to learn for beginners and easy to read and
> reason about for our engineers.
>
>
> State management and data/event propagation goes beyond of what OOUI can
> provide, as far as I (Jan) know. So an obvious candidate was looking
into
> MVVM solutions of which the most well known
is the React library.
>
> We had a deeper look at Vue.js which is known for having a large
> community,
> too, but being easier to understand and not using an additional patent
> clause in its licensing.
>
>
> We see the following possible advantages:
>
> - Better modularization
> - understandability of our code, in particular reasoning about event-
and
> data-flow
> - better separation of concerns and testability for:
> -- HTML templates
> -- Component interactivity
> -- Data manipulation
> -- connection to backend-API
>
>
> - If we use a well documented framework, learning to contribute is much
> easier compared to software for which there is only auto-generated
> code-level-docs
>
>
> Here are some answers to obvious questions:
>
> 1) Does using a MVVM mean we need to write mixed JS/CSS/HTML in a new
> syntax? (aka JSX)? -> No, it is possible, but for most frameworks (Vue,
> too) normal HTML templates are used
>
> 2) Does that mean that people coming from Object oriented languages will
> need to learn a whole new paradigm – reactive, pure-functional
> programming?
> -> While there are some elements of functional programming used in
> react-like-frameworks, I would (subjectively) say that few additional,
> totally new knowledge is needed and most can be covered by "take
> parameters, work with them, return values; don't manipulate non-local
> values"
>
> 3) How does DOM access work? Does this mean no jQuery?
>
>
> -> DOM can be still be directly accessed. Libraries like jQuery can
still
> be reused (even if they might not be
necessary in many points any more).
> However, to change data or dom persistently, you need to tell the
library
> (which is not unusual, afaic)
>
>
> There are also some other concerns:
>
> - Should we introduce a new dependency like a framework as Vue?
> - What would be the process of introducing such a dependency (if we
agree
> on one)?
> - Can we agree on this (or another?) paradigm for managing complex UIs,
so
> that it is not a Wikidata-only solution, but
could be used by other
> Wikimedia projects in the future, too?
> - How will this work with OOUIjs? OOUI seems to be mainly responsible
for
> creating DOM elements and this actions are
usually owned by the MVVM
> framework. One can use hooks to use libraries like OOUI and such, but it
> feels like having the same functionality twice. A possible solution
would
> be using OOUI styles and markup but leaving
DOM creation to the
framework.
>
>
> Do you think using Vue (or a similar framework) is an option for us?
What
> are requirements and concerns which would be
important?
I don't know if it would meet all of your requirements, but I would
suggest at least sitting down with some of the folks who develop and
maintain OOjs UI (<https://www.mediawiki.org/wiki/OOjs_UI>) and having
them help you evaluate the pros and cons of using the same view
abstraction layer that is used for Visual Editor and Flow, and which
is already available as a core component in MediaWiki.
Bryan
--
Bryan Davis Wikimedia Foundation <bd808(a)wikimedia.org>
[[m:User:BDavis_(WMF)]] Sr Software Engineer Boise, ID USA
irc: bd808 v:415.839.6885 x6855
_______________________________________________
Wikitech-l mailing list
Wikitech-l(a)lists.wikimedia.org
https://lists.wikimedia.org/mailman/listinfo/wikitech-l