Minutes from our Zero Application Review Meeting
Don Boulia - Reserve Application
Application that does an internal room scheduling application. PHP and Groovy with REST and a Mashup. Hosted on bluehost.
- http://zero.webahead.ibm.com:8090/reserveapp/Login.html
- A built in Login panel would be useful
- Need utilities for doing auth against backend resource when you do not control the backend. Needed to implement subset of curl in php to do this. Very manual today
- Had painful screen scraping code to extract information from the reserve app... screen scraping utilities would be useful
- Dojo layout of the page was painful
- Hardest part was the Web UI front end.. scared to make changes...
- Built the UI as a set of composite widgets and then built the page from a small collection of custom composite widgets
- Building the custom widgets involved lots of files and tests per widget
- Testing the widgets required unit tests per widget because getting things to work together was really messy
- Firebug was essential and development would be impossible without it
- CSS/HTML/JS combination was difficult... need a tool
- Deploying and redeploying to bluehost was difficult
- Resolve does not seem to work in an obvious way... always seems to get the wrong stuff
- Need to support running on a JRE not JDK, at least for deployment but maybe for development too
- Potentially an issue with Shared classes in the JDK
- Proxy config and port assignment in shared environments makes things difficult.
- Error messages suck... stack traces are not useful... need to go to a person to figure out how to move forward
- Dual language support not enabled by default.. adding PHP resets default extension mapping to not work for Groovy any more
Brett - Catalog
- Really slow load time... Dojo.. and loading the data...
- No paging right now.. need to page on the server.. that is not easy.. no built in support for paging interaction patterns
- Need paging linked to the Dojo/Client layer
- Interaction between services (comments and ratings) and the list for sort is complex
- Dojo learning curve..
- 9 custom Dojo widgets
- Client side MVC model
- Documentation lacking
- Some syntax differences between Java and Groovy to learn... mostly differences in Zero APIs (such as zero.data)
- Documentation has examples in one language or the other, but not consistently in all languages
- Migration is not fun.. need to have a strong focus on keeping things working...
- Event model worked well (log event) for download counting
- Security configuration had pros/cons
- configuring dependencies' security rules difficult because the dependencies do not configure security and user needs to understand URI structure to define the rules
- Logging setup is too complex.... no ability to turn on global trace simply and no ability to do tracing by module name
- Poor error messages (too obscure)
- Needed dev vs test vs deployment configurations
- Which user registry?, which db?, logging settings?
- A trace/log file viewer would be useful...
- Breakpoints not working properly in Groovy
- Should we eliminate stack traces from the "experience with Zero"?
- Should we have a more formal testing methodology backed into Zero?
- Complexity managing multiple repositories from the tools (multiple local repositories)
- Need a web page design tool for the UI
- Trash.Versioning does not take milestones into account
- Groovy code completion
- Most of the time is spent on the UI code
Binh - Zero Zone
- Implemented in Groovy and Dojo
- Backend development is very easy at this point
- UI development is very hard
- 90% of time on UI
- JSLint would be useful
- Built a set of custom widgets for the app
- Need to automate Dojo compression step
- CSS inheritence with Dojo widgets not easy because of page level CSS
- Not helping with the tooling experience around logical entities (aka widgets) to make things easier to navigate and maintain
- Hard to debug SQL statements (invalid arguments).. need to see raw SQL sent to the DB.. sometimes related to Groovy issues (GString)
- Better error messages around invalid arguments
- GString vs String is non-intuitive
- Using JSON, Dojo, Data, Security, Atom, Core, Some begin events, creating some custom events
- Doing dynamic includes where content has to go in the HEAD section is problematic.... need a model for this...
- No support for selective display of UI elements based on user rights
- Designer role complicated by Dojo (skill mismatch)
Todd - User Service
- Dojo IO XHR code is repetitive
- Used Java for most of the logic instead of groovy
- How do we enable Dojo distribution via CDN?