I just wrapped up a presentation (admittedly clearly not my best) for the Milwaukee Sitecore User Group where I gave an very brief overview of SPEAK and I did a little Betty Crocker baking of an existing Sitecore Marketplace module from Sheer UI to SPEAK.
A small Sitecore! Experienced video is here - our first Tangible Knowledge series piece. These are open forum so if you got something uniquely Sitecore to share see us on the Sitecore! Experienced site.
SPEAK has some portions that give it some heat. Let's review some of these nuggets:
Sitecore.Speak.config -> Contains a series of SPEAK settings around requireJS files, caching, script minificaton, etc. Play with this file at your own risk. Big takeaway in this file is the addition for pre compilation of SPEAK views and the custom SPEAK handler which is critical for component rendering.
001.Sitecore.Speak.Important.config - Important enough to be at the head of the list. All the client piplelines are defined here for the client processing -clicks, layout rendering, scripts and stylesheets, and bindings.
Sitecore.Speak.ItemWebApi.config -> Pipelines. The word you're going to here for a bit more. So this ties in the pipelines related to item search for SPEAK. Item requests, searchs, and property retrieval are defined here.
Sitecore.Speak.Applications.config -> Some settings and pipelines that deal with dialog presentation overrides , the media browser dialog (XML control override), and logout functionality around SPEAK.
Sitecore.Speak.Components.config -> Some of those things, you know - pipelines. Rules, controls, styling are defined here.
Sitecore.Speak.Mvc.config -> MVC routing prefix is established here with command route and content rendering pipelines.
Sitecore.Speak.LaunchPad.config -> No pipelines! Instead a processor to work with SPEAK log in functions and a setting to enable personalized frames with Analytics.
Sitecore.Speak.AntiCsrf,SheerUI.config - Looks to be a rules filtering limitation - but don't quote me on that one.
Sitecore.ExperienceEditor.Speak.Requests.config & Sitecore.ExperienceExplorer.Speak.Requests.config - processes related to content author activities to verify that actions on the client can take place, retrieve specific information and perform specific processing actions. Looks like a lot of tool setup.
So knowing where things are defined for life in Sitecore will come in handy when having issues with very customized and complex controls.
In keeping with the theme of pipelines, we just don't have them for the code-behind. In your Sitecore instance file structure, go to website/sitecore/shell/client/Speak/Assets/lib/core/<pick your version here, we are looking at 2.0>. The sitecore.js file begins the journey of functions that are the girders and bolts for the SPEAK framework. You can read this at your leisure.
Ok you really don't need to spend leisure time reading this, read Moby Dick, White Fang, Grapes of Wrath, or a great piece of literature.
Do however take a little bit of non-leisure time to review this script as it will give you some insights on the client side composition of SPEAK and where frameworks like jQuery, Knockout.js, and Backbone.js come into play and also where their wings may have been clipped/enhanced for SPEAK.
You likely will never want to make changes here, but always good to know what is going on where.
This URL -> https://doc.sitecore.net/speak = your friend when working with SPEAK. You are going to make a lot of other friends too. Several Sitecore employees, Sitecore MVPs, and dedicated developers have written blogs on some trials and successes with their speak efforts.
The most difficult part about working with SPEAK has been knowing what each of the components can and can't do. Even with the improvements in documentation, you are going to have needs and wants to push the provided components further than they were designed to go. You may even find the need to have to create something brand new (I encourage you to do so frequently).
There are a few good tutorials on how to get started with SPEAK and I will not reiterate that information here. I will though share with you some honest advice around my using SPEAK for XCentium's Vault product and other little tidbits I have worked on.
1. Don't screw with the main layouts. Yes that is a technical term that I made tamer than the original word. Sitecore has put these in place for a consistent feel for all customers. I haven't seen too many hard and fast UI best practices for consistency from the controls provided, but the dashboard pages and dialogs have a definitive sandbox to do you thing in. Play in the sandbox as much as possible.
2. The learning curve is certainly inclined. Even if you have a solid understanding of the stack behinds SPEAK (I consider myself mediocre here), there are things that you can, can't, should, and shouldn't do. Trial and error around building stuff is the best teacher here.
3. The premise of SPEAK is built on concepts you should know as a Sitecore developer. Placeholders, templates, renderings, etc. It's just a different composition toolbox and space.
4. Sitecore Rocks is another friend of yours. In fact you really can't do SPEAK without it. I did though have to go into the Content Editor within the Core database to verify some checkboxes. They didn't set very clean for me in Rocks.
5. Estimation is futile at first. That incline I mentioned before, it humbles you. Starting out, especially if building custom SPEAK components, you are going to mis-judge the time it will take you to accomplish tasks. If you are a consultant, and promising custom SPEAK based functionality, you may want to decide on some what-if overage scenarios. At minimum, give yourself plenty of runway to complete what needs to be done. If possible start with smaller tasks to begin to get a structural feel around the environment.
6. Understand the concepts behind backbone and knockout. While you will not want to rely on them entirely in case the stack changes later, you most likely will want to leverage the architecture the best you are able to keep your components and overall flow clean.
7. Listeners are king.
8. Rules help with component to component interaction. If that fails, utilize your page code capabilities to facilitate that communication.
9. Keep your code generalizations in nuggets for re-use but expect that each "page" entity in SPEAK will require its own unique capabilities.
10. Provide as much feedback as possible. Sitecore has invested time and energy into this as a future piece of the puzzle. The more voices they here about issues, improvement ideas, etc., the better it is for the entire community. The real good part - they are listening.
11. Your browser development tools are another really close friend you will make. Learn them well.
I hope you found some wisdom in my words. Good luck with your adventures and share what you are doing.
Here are some of the best places for SPEAK information as of now:
Sitecore Support, the Sitecore community (community.sitecore.net, the Sitecore slack channel (#sitecore-speak), Twitter, etc.), your local Sitecore User Groups - talk to other Sitecore folks to see what they are doing.
Sitecore 8.1 - /sitecore/client/Business Component Library/version 2/Content/Guidance/Dashboard
Sitecore.Net Documentation - http://bit.ly/1JnuXrQ
Julia Gavrilova - http://bit.ly/1OCTWTY
Martina Welander - http://bit.ly/1P9E7Vk
Anders Laub - http://bit.ly/22FHspb
Göran Halvarsson - http://bit.ly/1MOmPLE
Vikram Rathore - http://bit.ly/1JnvqtQ
Martin English - http://bit.ly/1WgKD1e
Mike Robbins - http://bit.ly/1Tfas3I
My stuff - https://vimeo.com/sitecoreexperienced/sitecoreexperienced9 http://www.markservais.com/post/2015/08/24/xcentium-speaking-aloud-changing-css https://prezi.com/firrr2kjvpcu/speak-converting-a-module/
You can always practice your Google Foo -> "Sitecore SPEAK".