Hey,<br><br>lots of interesting projects and good points. We already discussed a bit in IRC, but reposting here for everyone.<br><br>The most important choice seems to be be about adopting a full toolkit or stick to plain html/javascript. From your list it seems like we have at least three that should be evaluated.<br>
<br><a href="http://enyojs.com/about/" target="_blank">http://enyojs.com/about/</a><br>
<a href="http://angularjs.org/" target="_blank">http://angularjs.org/</a><br><a href="http://twitter.github.io/bootstrap/components.html" target="_blank">http://twitter.github.io/bootstrap/components.html</a><br><br>If someone has more ideas I think now it's the time to bring them up!<br>
<br>Something we obviously need to check is if they allow enough look & feel customization to be able to match the HIG. Beyond that, I guess it's important to give them a try and see how well they adapt to our use cases. Some of them might be designed for served websites which can be quite a bit different from a web application. <br>
<br>Reusing an existing toolkit would reduce the amount of work we need to do, which would be great given the resource constraints. Though I see few disadvantages with it<br><br>* The ecosystem is moving so fast that it's quite likely today toolkits will be obsolete or abandoned pretty soon.<br>
* People have generally strong feelings about their toolkit of choice. It would be nice to allow them to use whatever they like in their activities.<br>* We probably raise the barrier to entry by adding stuff on top of html5/javascript.<br>
<br>If we decide for a lightweight framework, we have a pretty wide choice too. From your list<br><br><a href="https://github.com/component" target="_blank">https://github.com/component</a><br><a href="https://github.com/mozilla/mortar" target="_blank">https://github.com/mozilla/mortar</a><br>
<a href="http://yeoman.io/" target="_blank">http://yeoman.io/</a><br><a href="https://github.com/volojs">https://github.com/volojs</a><br><br>And I'm sure there are a lot more. I tend to think we should not spend too much time evaluating these. volojs seems to pretty decent and the fact mozilla uses it is reassuring. Most importantly it should be easy to replace this part down the road if we want to.<br>
<br>The hard part is how to write html/javascript/css I think.<br><br><div class="gmail_quote">On 17 April 2013 15:43, Manuel Quińones <span dir="ltr"><<a href="mailto:manuq@laptop.org" target="_blank">manuq@laptop.org</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hi,<br>
<br>
For our web activities, we need to code our widgets or components.<br>
Example of widgets are: the activity toolbar and subtoolbars, a slider<br>
control, a palette.<br>
<br>
There are different approaches to this.  Yesterday I discussed some<br>
with C. Scott by IRC.  Here is the wrap up, IRC log at the bottom.<br>
I'm still researching each option so there are no conclussions in this<br>
email yet.<br>
<br>
In general, a widget is constructed with bits of reusable html, css<br>
and javascript.  A nice project that defines this is Components.  Here<br>
is an article from the author and the github site:<br>
<br>
<a href="http://tjholowaychuk.com/post/27984551477/components" target="_blank">http://tjholowaychuk.com/post/27984551477/components</a><br>
<a href="https://github.com/component" target="_blank">https://github.com/component</a><br>
<br>
Another approach is what Twitter Bootstrap framework does.  Here its components:<br>
<br>
<a href="http://twitter.github.io/bootstrap/components.html" target="_blank">http://twitter.github.io/bootstrap/components.html</a><br>
<br>
Mozilla has its building blocks too, using the mortar tool:<br>
<br>
<a href="https://github.com/mozilla-b2g/Gaia-UI-Building-Blocks" target="_blank">https://github.com/mozilla-b2g/Gaia-UI-Building-Blocks</a><br>
<a href="https://github.com/mozilla/mortar" target="_blank">https://github.com/mozilla/mortar</a><br>
<br>
Then there are more invasive options like Enyo or the recent Google's AngularJS:<br>
<br>
<a href="http://enyojs.com/about/" target="_blank">http://enyojs.com/about/</a><br>
<a href="http://angularjs.org/" target="_blank">http://angularjs.org/</a><br>
<br>
Also:<br>
<br>
<a href="http://yeoman.io/" target="_blank">http://yeoman.io/</a> is a new google/twitter-backed alternative to the<br>
mortar/volo stack.  Looks too new, no users, but may have more<br>
momentum behind or more funding.  Uses bootstrap too.<br>
<br>
I hope to come with pros and cons for the Monday meeting.  I need to<br>
test each option.<br>
<br>
IRC log follows...<br>
<br>
manuq:  cscott: UI specific, what do you think about growing something<br>
like twitter's bootstrap for layout/styling?<br>
manuq:  I see you used sass for neil-colors<br>
<a href="https://github.com/cscott/nell-colors/blob/master/sass/index.scss" target="_blank">https://github.com/cscott/nell-colors/blob/master/sass/index.scss</a><br>
cscott:  i think something like mozilla's UI framework is better (I<br>
don't have link handy at the moment)<br>
manuq:  cscott: will investigate, thanks<br>
cscott:  basically you want something you can drop in to your app in<br>
one piece, then use sass or less to pull in styles<br>
cscott:  practical frameworks have JS chunks as well as HTML and CSS chunks.<br>
manuq:  yeah<br>
cscott:  i've used twitter bootstrap, and it's very cumbersome, hard<br>
to restyle and with lots of bogus classes cluttering your HTML<br>
cscott:  i'd start minimal, rather than trying to do everything, focus<br>
on a simple sugar stylesheet (something like the 'reset' stylesheets)<br>
that defines the proper colors and styles text and form elements<br>
cscott:  then the next thing i'd suggest is doing a minimal "sugar<br>
toolbar" component<br>
cscott:  another useful component would be an "icons" component, which<br>
just made all the standard sugar icons available<br>
manuq:  cscott: yes bootstrap needs many nested divs<br>
cscott:  see <a href="http://dailyjs.com/2012/10/22/components/" target="_blank">http://dailyjs.com/2012/10/22/components/</a> which talks<br>
about component architectures<br>
cscott:  i'm not sure TJ's framework is the best one, but he outlines<br>
the issues pretty well.  you've got a bunch of stuff you want to wrap<br>
together into a reusable library<br>
cscott:  i'm working with <a href="http://volojs.org/" target="_blank">http://volojs.org/</a> for nell-wikipedia, but I<br>
haven't gotten far enough to say whether it's good or not<br>
manuq:  cscott: nice link<br>
cscott:  if you search <a href="http://dailyjs.com" target="_blank">dailyjs.com</a>, i think there's one or two<br>
additional posts on 'components'<br>
cscott:  <a href="https://github.com/mozilla/mortar" target="_blank">https://github.com/mozilla/mortar</a> is a mozilla tool that uses<br>
volo, and <a href="https://github.com/mozilla-b2g/Gaia-UI-Building-Blocks" target="_blank">https://github.com/mozilla-b2g/Gaia-UI-Building-Blocks</a> is<br>
their work on a UI framework<br>
cscott:  <a href="https://hacks.mozilla.org/2013/01/writing-web-apps-quickly-with-mortar/" target="_blank">https://hacks.mozilla.org/2013/01/writing-web-apps-quickly-with-mortar/</a><br>
discusses this more<br>
manuq:  cscott: yes, in the mozilla based sugar experiment we started<br>
using volo <a href="https://github.com/ayopa/agora-thoughts/blob/master/about.md" target="_blank">https://github.com/ayopa/agora-thoughts/blob/master/about.md</a><br>
cscott:  <a href="https://github.com/mozilla/mortar-layouts" target="_blank">https://github.com/mozilla/mortar-layouts</a> is related, it uses<br>
bootstrap.js -- although i wasn't thrilled with bootstrap although i'm<br>
trying to use it for nell-wikipedia; it seems like bootstrap is just<br>
too server-oriented and i'm fighting it all the time<br>
cscott:  cjb might find <a href="http://dailyjs.com/2013/04/16/jquery-roundup/" target="_blank">http://dailyjs.com/2013/04/16/jquery-roundup/</a><br>
interesting<br>
cscott:  <a href="http://yeoman.io/" target="_blank">http://yeoman.io/</a> seems to be a google/twitter-backed<br>
alternative to the mortar/volo stack.  it might have more momentum<br>
behind it?  or at least more funding?  but it was released after I<br>
started hacking on nell-wikipedia, so I haven't really tried to use it<br>
yet.<br>
cscott:  it's probably worth trying to use it for something, but it<br>
seems to be obsessed with "build process", and I've been trying to<br>
write sugar apps that don't need to be minified/processed/"built" in<br>
order to run.<br>
cscott:  it's just that much harder to develop web apps on-device if<br>
there's some external build process involved.  and there's really no<br>
compelling need for it, IMO.<br>
cscott:  anyway, you might want to cut-and-paste from the irc above<br>
and paste it in an email to the list as my contribution to the<br>
discussion.  maybe other folks on-list have tried some of these tools<br>
and have experience to relate.<br>
manuq:  cscott: yes yeoman can be considered now that we are<br>
investigating the chrome path<br>
manuq:  cscott: copy/paste to the ML, exactly, will do<br>
manuq:  I'm reading about Bower, is new to me<br>
cscott:  i recommend reading <a href="http://dailyjs.com" target="_blank">dailyjs.com</a>, it's a good way to keep on<br>
track of the latest libraries & packages<br>
manuq:  cscott: yeah I noticed<br>
manuq:  cscott: do you know google's AngularJS?<br>
cscott:  i looked at it briefly.  it seemed invasive.<br>
cjb:  it's a little Meteor-like<br>
cscott:  well, except meteor has the traditional template/model division.<br>
cjb:  yeah<br>
cscott:  angularjs seemed to mutate the html itself to give it semantics<br>
manuq:  hehe, I'm going through the tutorial now, everything sounds<br>
nice in their about page, but yes I can imagine how invasive can be<br>
cscott:  and it didn't seem like it would play nicely with other libraries<br>
manuq:  yes, I'm curious about the extensibility feature<br>
cscott:  if you like angularjs, you might also like <a href="http://enyojs.com/" target="_blank">http://enyojs.com/</a><br>
manuq:  but maybe is not worth investigating<br>
cscott:  well, everything's worth investigating at this point<br>
cscott:  it's probably worth trying to write a simple sugar app using<br>
the framework, something like a simple calculator<br>
manuq:  cscott: yeah I know enyo already, and yes angular looks something alike<br>
manuq:  cscott: good point<br>
cscott:  i like enyo, i'm just worried it's doomed.  angularjs at<br>
least has google backing it, but google doesn't seem to have built<br>
anything significant with it itself (other than maybe the "youtube app<br>
for ps3", <a href="http://builtwith.angularjs.org/" target="_blank">http://builtwith.angularjs.org/</a> )<br>
cscott:  i guess i trust mainstream JS solutions like volo better<br>
because you could replace volo with bower pretty easily if it came to<br>
it<br>
cscott:  if you build everything around enyo (or angular), you're pretty stuck<br>
cscott:  which isn't to say it might not be a good idea<br>
cscott:  especially if angular lets you write libraries/components in<br>
a nice way, it might be worth it.<br>
cscott:  just remember that every piece of infrastructure increases<br>
the barrier to entry.  instead of "every developer who knows HTML + JS<br>
can write apps for sugar" now they have to go off and learn angularjs<br>
as well<br>
manuq:  exactly, is not good to be too much dependent, the thinner and<br>
less invasive the deps, the better<br>
cscott:  everything's a trade-off.  it might be worth it, it might<br>
not.  that's why I suggest trying to write a small "hello, world" type<br>
sugar app.<br>
cscott:  think about teaching a new developer how to use<br>
sugar/angularjs, and look at how easy the resulting app is to read and<br>
modify<br>
cscott:  compare it to writing the same app in pure HTML/JS, which<br>
isn't always easy either<br>
manuq:  yes<br>
cscott:  i will say that i really like the 'edit me' buttons on the<br>
angularjs page, and then mention using view-source to look around.<br>
that's a good sign.<br>
<br>
<br>
--<br>
.. manuq ..<br>
_______________________________________________<br>
Sugar-devel mailing list<br>
<a href="mailto:Sugar-devel@lists.sugarlabs.org">Sugar-devel@lists.sugarlabs.org</a><br>
<a href="http://lists.sugarlabs.org/listinfo/sugar-devel" target="_blank">http://lists.sugarlabs.org/listinfo/sugar-devel</a><br>
</blockquote></div><br><br clear="all"><br>-- <br>Daniel Narvaez<br>