This repository has been archived by the owner on Nov 9, 2022. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 14
Meeting 2014 03 03
Eric Bollens edited this page Mar 4, 2014
·
16 revisions
- Location: Math Sciences 5907
- Date/Time: Monday March 3 from 1:00 to 2:00 PM Pacific Time
- Conference Line: 888-921-8686 #3102061670
- Eric Bollens
- Logan Franken
- Chris Patterson
- Quyen Vaillant
- Lloyd Nicks
- Alfonso Roman
- Praveen Dugar
- Donny Morada
- Sanjay Sutar
- Babak Goshtasbi
- Eddy Mishiger
- Emily Kim
- Christina Fries
- Nathan Lai
- Haoni Li
- Yami Reddy Yannam
- How's the 1.1 release working out for people?
- Other thoughts and items?
- Attended by UCLA, UCSB, UCSD and UCSF
- Discussion of where the next generation of MWF is headed
- Some key perspectives:
- UCLA: Mixed strategy of responsive and mobile-specific
- UCSD: "Responsive isn't the magic bullet"
- UCSD: Want mobile optimization strategy
- UCSF: Not too many situations seem to justify a separate mobile site
- Eric presented how WebBlocks 2 will distance itself from being a framework
- Configurable package, dependency and configuration manager
- Focus on integrating other frameworks and tools
- Efx and ariaMapper were both developed for WebBlocks, but as separate standalong packages
- WebBlocks 1 modules will become their own mini-frameworks (such as row, cluster, form, etc.)
- WebBlocks itself will essentially just be a linker based on relationships defined in package metadata
- This new strategy, coupled with making MWF assets static, makes WebBlocks an obvious assembler choice
- Question about where it fit in the stack against yeoman, grunt, bower, etc.
- Uses bower and npm for package-level dependency management
- Could be used to feed scaffolding in yeoman
- Similar level to grunt except offloading logic responsibilities to packages rather than Gruntfile
- Next generation of MWF will be a distribution of WebBlocks with particular packages and configuration
- Other discussion items included:
- Native app development where first couple tiers are native and then hop to mobile web
- Agreement that performance is the key goal - where web and native should be almost comparable
- A new name is needed for MWF
- Next steps:
- Vision document (Eric, Alex, Brett, Rose) to be created on GitHub wiki page
- "MWF 2" shall not be the name -- wiki page to be created for this as well
DEVELOPMENT DISCLAIMER
While the WebBlocks 2 repository contains working code, and while some specifics are discussed herein, the implementation may change significantly before release. As such, no guarantees are made about the consistency of the API at this time. Anything discussed herein may change in the future, up until the point of a beta release.
- Because WebBlocks will no longer be a single repo, new GitHub organization
- Core repository (under development):
- https://github.com/WebBlocks/WebBlocks
- Initial commit on December 29, 2013
- This is a completely fresh start to the architecture -- new version will:
- Be a command-line tool
blocks
- Provide package, dependency and configuration management
- Distributable as a gem, rpm, deb, pkg, etc.
- No longer include modules in the main repo
- Modules from WebBlocks 1 become their own microframeworks
- Only
bower.json
andBlocksfile.rb
files to define a WebBlocks build
- Be a command-line tool
- During January:
- Proposed and implemented DSL
- Created CLI for inspecting blocks and dependencies
- Some examples of commands include:
blocks help
blocks inspect help
blocks inspect blocks
blocks inspect blocks --attributes
blocks inspect bower_registry
blocks inspect dependency_list
blocks inspect dependency_order
blocks inspect dependency_order --type=scss
blocks inspect dependency_order --type=js
- No ability to actually run a build
- Been quiet for about a month due to other priorities (CASA)
- Over the past week, added the following commands:
- Operations:
blocks build
blocks watch
- Partial commands (which produce into
.blocks/workspace
):blocks link scss
blocks link js
blocks compile scss
- Operations:
- First runnable dev pre-release snapshot available on RubyGems:
- Code climate:
- Hooked up to Travis but tests are still intermittent
- Goal of next sprint to get test coverage above 80%
- Internal architecture:
-
bin/blocks
is simply a call-forward to a Thor classWebBlocks::Thor::Runner
to improve testability -
WebBlocks::Thor
defines all the Thor commands registered throughWebBlocks::Thor::Runner
-
WebBlocks::Manager::Bower
interacts with Bower- This allows
bower.json
to be the canonical mapping of repositories within WebBlocks - Actual bower system calls are expensive, so caching is built in
-
bower_components
will not be reloaded unless--reload-bower
is called - WebBlocks will not resolve added/remoted
Blockfile.rb
files unless--reload-registry
is called
- This allows
-
WebBlocks::Manager::Builder
encapsulate a full run of a type of file for a task- Make it easy to extend and leverage as a library programmatically
-
WebBlocks::Manager::ParallelBuilder
wrapsWebBlocks::Manager::Builder
for parallel processing- Abstracts out split/join logic from the rest of the application
- Easy as saying
wait_for_complete!
to block main process until all worker processes finish - Currently fork-based model but eventually configurable (pool size and threads versus forks)
-
WebBlocks::Strategy
defines strategies withexecute!
method to invoke- So far
Link::Scss
,Link::Js
andCompile::Scss
- So far
-
WebBlocks::Structure
defines a set of classes that represent the tree defined by Block/Blocksfiles -
WebBlocks::Framework
is module withframework
method to bootstrap into the DSL for structures -
WebBlocks::Product
defines a set of classes that represent build products (at various stages) -
WebBlocks::Support::ScopedLogger
extends Ruby logger with progname scoping
-
Start by reviewing the Getting Started guide here:
https://github.com/WebBlocks/WebBlocks/blob/master/README.md
First functional module implementing WebBlocks 2:
A wrapper implementing WebBlocks for a framework that doesn't support it internally:
- Near-term:
- Add tests and inline documentation
- Add optimize stage that can minifies CSS and JS (currently sitting in pull request)
- Further out:
- Add multiple asset builds rather than just building one CSS and one JS file apiece
- Consider the question of how to add images and fonts to this stack
- Start creating blocks (and providing Blockfiles for existing frameworks)
- Investigate programmatic features:
- How can a block add its own routines to run?
- How can a developer hook into the execution stack?
- Anyone interested in helping work on WebBlock 2 dev?
- Concerns raised by Alfonso about Java requirement
- Eric explained that this comes from YUI compressor - even the Node.js one wraps a jar
- Eric to investigate options that are not Java-based - although performance is a concern
- One possibility is use Java version if available or else fall back to pure Ruby
- Alfonso asked about if there are any plans to support Less?
- Eric suggests two ways that we might look at tackling this problem:
- Convert less files to sass files and then compile in one sheet
- Treat less files separately and compile a separate sheet
- Not a critical concern
- Alfonso asked about timeline
- Suggested it would be useful to have this by start of summer