we have deprecated the use of custom managed code within the sandboxed solution – Brian Jones, Principal Program Manager, Apps for SharePoint
It’s been a long time coming and widely anticipated that this announcement would come at some point. It’s great to see the announcement and the clarity many have been asking for.
I feel like I’m in a good position to comment on this and give some background about why I think deprecating code based sandbox solutions is good idea. I was on the SharePoint engineering team when the sandbox was being built and for a period of time I was the Program Manager for the feature.
Background: Sandbox solutions in SharePoint were introduced in SharePoint 2010. They allowed a packaged set of assets and code to the uploaded to a SharePoint site. That can consist of declarative components like XML for adding things like List Templates, as well as compiled code for things like Web Parts or Event Receivers.
When the Sandbox was being designed and built it was about 2 – 3 years prior to SharePoint 2010 being released. Azure, and cloud computing in general, either didn’t exist or was in its infancy. SharePoint needed a way to upload customizations/components to SharePoint sites where the administrators were not comfortable with installing Farm Solutions aka. Full trust solutions. Microsoft itself was a perfect example of this. If I built a web part I, as a Microsoft employee at the time, couldn’t load that onto our SharePoint sites that MS IT ran. No 3rd party web parts or products. This was a common problem in many large organizations and we heard about this time and time again with customers.
Sandbox Solutions were the answer. They allowed users to upload a solution and have SharePoint run it while it being controlled, secured and run in a sandboxed process. The main thing this gave SharePoint was the ability to isolate the code in that solution and ensuring that if it crashed or was badly behaved that it didn’t break the rest of the SharePoint environment.
The problem was that Sandbox Solutions was a feature added in Windows SharePoint Services (WSS) and that was a different product from SharePoint Portal Server (SPS) that built on top of WSS. The API set in the Sandbox that was available was limited to WSS APIs and even then only a subset of them. There were good reasons for this, but at the end of the day it was very limiting for people. Ideally it would have been great to have lots of SPS APIs available too. But that didn’t happen (different story).
So that is the background about how/why Sandbox came about.
… now fast forward to today …
In a nutshell the Sandbox was a good solution to the problem faced when it was designed. However, it’s not a great solution to the problem given the technology we have today.
Why is it no good today you ask?
A lot happened after the Sandbox was designed and built. Cloud computing took off, new advances in code in all sorts of places got easier e.g. isolated apps on a phone. A lot was learnt.
In short its my belief that SharePoint shouldn’t have been trying to replicate an isolated code hosting environment. That is reinventing the wheel and there are other teams at MS who build products to do this extremely well already. Namely IIS and Azure.
Think about that for a second. Imagine being given some arbitrary code and told to run it, but doing it in a way that was safe, secure, manageable and fault tolerant. It’s actually quite a tough challenge. If you say it’s easy then you should try doing it instead of talking about it (tip with wider life applicability too)
So today MS clarified that SharePoint was getting out of the code hosting game. Why? Because it was limited and there are better solutions to this problem today.
The new SharePoint app model is designed to solve this by moving “sandbox” code to an alternative host e.g. IIS or Azure or <insert thing that runs code here>.
Sandbox code might be “dead”, but the new app model IS the new Sandbox!
I see the reasons why the sandbox came about the same as I do for the new app model. They are solving the same problem. How do you allow someone to customize, extend and build new things on SharePoint without compromising the integrity of SharePoint itself? That is the goal.
Today in SharePoint 2013 and Office 365 we have the ability to build solutions that use this new app model. Sure, it’s not perfect in the APIs it provides and there is plenty of scope for adding things. I am certain it will evolve to cater for more of these things over time. That said, it is MUCH better suited for the long term. I for one am loving the ability to use all the latest dev tools and technologies in Azure that were not possible in SharePoint previously.
The app model may not be applicable or possible to be used for everyone today and that is fine. It’s going to develop and that will change over time would be what I bet on. But it is the right path moving forward. This might cause some pain for people in the short term and I understand the frustration people have with changes like this. But I would MUCH rather have to deal with this change than be limited to a inferior set of capabilities in the longer term. This is the right move long term (in my humble opinion). Short term pain, long term gain.
Getting SharePoint out of the code hosting solution was the right things to do and I applaud the team for clarifying there position on this.
I look forward to the SharePoint Conference in March where hopefully (fingers crossed) we will hear more about the future of the new app model and how it will address its shortfalls today.