iPhone 7, Win8, & Modern SharePoint : Client Side Rendering as the “headphone jack”

iPhone 7 – No more headphone jack

I’ve been an fan of the iPhone since it was first released in 2007.  I’m still using an iPhone 5s and have been holding off for a while to see what Apple had to announce today about the iPhone 7.  There had been a number of rumors about the removal of the headphone jack leading up to today’s event.  Buzzfeed wrote a solid article after interviewing a few members of the product team about the motivations behind the move, primarily saving space to make way for new innovations removing something they regarded as antiquated.  For me, the math doesn’t add it and it has convinced me to hold off on a new phone and to seriously examine other eco-systems.  Firstly, I’m on my phone more than 8 hours a day.  I have it plugged in our use a battery to charge it so the lightning connector is already in use.  I’m not really a fan of wireless headphones as I have enough devices to keep charged on a daily basis.  Second, I have a nice investment in that old jack, some incredible headphones including the Dunu DN2000J and Logitech Ultimate Ears TripleFi as well as the Bose SoundSports which i use for phone calls pretty much all day Monday-Friday.  Before the announcement today, Apple had plenty of feedback including online petitions with a few hundred thousands signature encouraging them to rethink the decision, but the general messaging was that we’re killing a dinosaur to make way for progress.  They could be correct, but for years wireless headphones have been around and have never caught on, a very different scenario than the floppy disk and cd-rom drive.


Windows 8:  change management is critical and evolution can work better than revolution

I finished reading the article and i was thinking about the lead up to the release of Windows 8.  Microsoft had a ton of feedback from users that the new start menu wasn’t intuitive, the touch focus wasn’t aligned with most people PCs, and the development eco-system just wasn’t ready as it was heavily fragmented across the WinRT, real windows and of course the mobile platform.  The community provided a ton of feedback up front and early but sometimes it’s hard to know if the feedback from your most passionate advocates is representative of the broader market.  In the case of Windows 8, it was of course and the past few years Microsoft has turned it around in Windows 10 and the updates that have happened since that point.  One of my favorite changes is not in the operating system, but the openness, transparency, and willingness to listen that has emerged within Microsoft and the product teams.


SharePoint – What was new is old and what’s new is almost ready

This brings me to SharePoint.. There’s a whole lot of exciting change happening right now most of which was announced at the Future Of SharePoint event on May 4th.  Basically every user interface in SharePoint is being reimagined and rebuild with a cloud first mobile first spin.    With the level of change happening across the platform I’ve spent a lot of time describing to people the state of the SharePoint ecosystem; both during the day at work and in broader SharePoint community.


I’m working on a new website that i hope to have ready in the next month or so to enable folks to interact and have the conversation about best practices and real world usage guidance on a feature by feature basis.  The general format is a matrix with one axis grouping features by the level of complexity (Out of the Box, Configuration Only, Extending SharePoint, or Totally Custom.  Those classifications were taken from a presentation by Dan Kogan from the SharePoint product team at the Ignite conference last year when he was talking about how the team thinks about customizing SharePoint.  I’m a big fan of this classification scheme as it’s easy to group things like lists, libraries, content types under OOB, forms and workflow under Configure, JSLink, Display Templates, and JavaScript Embedding under Extend, and all the APIs and app patterns under the Custom header.


The second axis is designed to provide transparency and guidance to users.  Things in the stop column either have been deprecated or there’s been guidance that these are not the right way to build solutions.  Examples for me are InfoPath forms and Farm Solutions, you can do them, but really not something I’d recommend to a customer.  Sunset focuses on things that we know are going away, but in many cases there just isn’t another options that’s viable today, some easy examples are SharePoint designer workflows, JSLink, and Display Templates.  Finally the items on the Horizon are the up and coming new investments that have promise but either are not generally available or just haven’t yet had the time to mature to their full potential where you’re ready to roll them out to the whole company yet.    A great example of this is the SharePoint Framework, PowerApp, and Flow.  I grabbed a quick capture of the general concept and would truely appreciate any feedback you have as I work to build out the backend of this project.

Over the past 3 years I’ve spent a huge amount of time working with partners and clients to build solutions that work in SharePoint online or on-premise and helped them move away from farm solutions and master pages to more modern approaches focused on client side rendering with JSLink, DisplayTemplates, and JavaScript Embedding or User Custom Actions.  These are 3 newer development techniques that were introduced in SharePoint 2013 to give developers the ability to customize the user interface of SharePoint in a lightweight client side framework.


JSLink enables a user to customize the html and css that SharePoint uses to render list items.  It’s pretty incredible as it doesn’t take a really deep developer to create unique and wonderful experiences such as this news list from a simple list.


Display templates provides a similar concept for for search results enabling the rapid development of compelling search driven experiances with flexible user interfaces developed entirely client side on top of the wonderful SharePoint search system via the search results webpart and content search web parts.



A bridge to the future…

As Microsoft is focused on developing the next generation of the development at a furious pace, those of us building solutions today are keenly aware that the technologies available today as on their way out and won’t work in modern pages while the next generation of technologies are still being evolved and just aren’t ready.   The roadmap for the SharePoint framework talks about webparts, full page apps, and list apps each of which provide an ability to engineer custom solutions for SharePoint.  As modern pages and modern webparts begin to replace today’s publishing pages there will be new webparts (real soon) focused on viewing lists and content search but nothing has been shared about a future for these client side rendering technologies.

Think of this as a nice compatible SharePoint “headphone jack”.  Today it feels like there’s a chasm between old and new where investments customers have made in office 365 based portals or customized user experiences made following patterns and practices don’t have a clear transition to the future of modern team sites and modern pages.  The ability to bring forward some of the client side rendering technologies into the next generation of the list view and search results web part could ease the transition and provide customers with a way to take their recent investments forward in the cloud or on-prem.   Over time as the SharePoint Framework matures and evolves they may not be needed.  Today, the ability to build something today that works onprem, in office 365 today, and in the modern experiences of the future is critical.   Just like the headphone jack that may not be as new and shiny as wireless audio, having a  mature, tested approach to bring forward customers investments (just like my awesome headphones i love) would really help us make the transition.

Normally my posts are more focused on a technical snipit rather than commentary.  Let me know what you think and if you want more opinion or if you’d prefer i stick to the code.