Wednesday, October 31, 2007

SharePoint As a Development Platform Debate

There's a very heartfelt debate raging at CodeBetter.com over whether SharePoint is a good development platform. The breakdown seems to be between "developers" and "SPs" or "SharePoint People".

Jeffrey Palermo kicked the discussion off by discussing what he feels makes a good development platform and then contrasting those points with the current state of SharePoint 2007 development.

I can understand the concerns of those who don't feel it is an ideal development environment. One of their biggest issues is how to manage the artefacts that SharePoint generates, especially the settings that can be made via the browser but not easily replicated to a source repository for sharing and versioning.

Many of these changes only live in one of SharePoint databases and so are hard to track. It goes against a programmer's mindset when these things are intangible and hard to track and synchronize.

Microsoft and the community are releasing more tools that can help manage this and perhaps in Office 14 there will be some easy facility to export and import configuration settings as an XML file. This would make it simpler to do proper change management with SharePoint.

There is also the fact that SharePoint is good at glossing over a lot of very complex interactions. Running underneath the hood is a SQL Server database, web services, a complex object model, Windows Server interactions, office integration, ASP.NET and Windows Workflow Foundation, a series of providers...it's very complicated but SharePoint makes it look easy. So when anything goes wrong somewhere in the stack it can be hard to figure out. In this sense it's a victim of its own success at abstracting the lower level plumbing.

The best SharePoint solution results occur when the customization points are kept in line with the core things SharePoint does well, such as workflow, collaboration, search, content management and publishing, and document management.

Whenever possible I recommend limiting SharePoint customization to things that can be done via the browser or through modifying XML or XSL properties (for instance for Search Results web parts). This also helps to protect the solution from service packs and future versions of SharePoint as any customizations are likely to be minor and easily tracked (and upgraded).

When new requirements come in, it's helpful to have the entire team of SharePoint developers compare notes on what the platform allows and how it can be customized. It's noteworthy how many times a 30-minute requirements-gathering discussion can end up with a shared agreement on how the out-of-the-box SharePoint components can be combined to deliver something that at first blush seemed to require half a dozen custom web parts.

The fact that so much can be done with so little effort actually makes SharePoint a killer development platform - the trick is to use a bit of imagination to align as much as possible to what SharePoint provides and go with the SharePoint flow. If SharePoint development is difficult and painful it's probably time to reassess the proposed solution to see if there's a more elegant, SharePoint-centric approach.

Anyway, there's a lot of fascinating insight being posted on Jeffrey's blog and anyone who hopes to develop on the SharePoint platform should at least give it a look. The full discussion thread is here

Monday, October 29, 2007

Don't Panic! The MOSS Market Opportunity

Microsoft Office SharePoint Server 2007 was released nearly a year ago now, and over the last few months I've started to hear people in the industry say things like "there is a 6-month window of opportunity for us to become leaders in SharePoint adoption!" or "the SharePoint wave is starting to crest and we need to ride it!". I find this attitude a bit puzzling.

It might arise because MOSS 2007 looks like any other packaged software product: you can double-click the .exe file and point and click your way to a portal that seems powerful and flexible enough to keep your end users happy. If someone thinks of it as just a product, it's easy for them to imagine that their competitors are scouring all the finite nooks and crannies of its feature-set and will corner the market "mindshare" on SharePoint work if they don't get there first. Hence the perceived urgency of early innovation.

However the real power of SharePoint is not as a packaged product, but as a platform. SharePoint-as-a-platform is the reason there won't be a cresting wave of adoption, but rather a rising tide that will lift all boats.

What makes the SharePoint platform most interesting, apart from its infinite scaling potential, is that the problems it addresses are enterprise problems. By this I mean the solution focus is on "30,000-ft level" concerns such as knowledge sharing, federated search, document and records management, team collaboration, and Line-of-Business application integration.

If you need a website, blog, or application built, then a thousand different software products or technologies could fit the bill. If you want any or all of those things plus a technology stack that abstracts away most low-level "plumbing issues" and allows you to address your enterprise problems, then the list of software you can standardize on becomes very small indeed.

The SharePoint platform is huge, and is only becoming more so, as Microsoft and third parties build upon it as quickly as they can. As one example, take a look at any of Microsoft's product line roadmaps, and see how many will be rerouted from standalone applications into SharePoint integration points and modules within the next few years. Over the short- to medium-term the platform will only become bigger and more complex, and the value-add potential will grow correspondingly.

There are an infinite number of ways a contractor or company can add value to a SharePoint deployment. Just to name a few:

  • Document and Records management solutions
  • Capacity, Performance planning and Disaster Recovery planning
  • Portal branding and Look-and-Feel work
  • Custom web part or feature development
  • Custom workflows and electronic forms
  • High-end consulting around building and maintaining a portal
  • Portal migration and maintenance processes and tools
  • Training for end users, administrators and developers
  • LOB application integration
  • Business reporting tools

Any one of these solution areas presents vast market opportunities in its own right. Each is also challenging and complicated because delving into it requires an equal-parts blend of domain expertise and an understanding of complex technologies. The enterprise issues that are raised require deep thought and effort to grapple with. Of course there is no requirement to concentrate on just one area, and therefore by working across these areas there is an unlimited number of potential combinations of SharePoint services and products.

Because no individual or organization can provide all of the pieces for a successful deployment, everyone is forced to share opportunities to some extent and can even choose to integrate some of their competitor's offerings without risking their profits or market mindshare.

I therefore believe that one of the consequences of competing on a platform rather than on a product is the creation of a surprisingly cooperative ecosystem. An economist would call this a virtuous cycle.

This is why I'm not worried about artificial "first mover" timelines in the SharePoint arena. Instead I foresee a long, upward trend of community growth as more and more SharePoint adoptions occur and the tools and knowledge to manage them increase.

So if you're worried about missing the SharePoint ride, just follow the Hitchhiker's advice, and "Don't Panic!"

Thursday, October 25, 2007

OneNote and SharePoint: Better Together!

OneNote 2007 is great for note-taking. My colleagues and I have been using it for the last little while and we love it. There's always something new to learn about it.

After many months of using it individually, we decided to start sharing our OneNote notebooks with each other. Here's the cool bit: the notebooks can back onto a WSS 3 or MOSS library.

If you create a new document library somewhere on your SharePoint portal, you can choose a OneNote Section as the document template rather than the default Word template (although any library document template will apparently work just fine).

Now if you go back into OneNote, you can choose to share a notebook and host it in the document library you just built. It's easy to do; just click "Share" on the top menu and then "Create Shared Notebook". Give it a title and pick a template (we use "Shared Notebook - Reference Materials" or "Shared Notebook - Group Project").

Then when it asks "Who will use this notebook", just click "Multiple people will share this notebook" and choose to share it on a server.You will be asked to confirm the location: paste the URL of your site into the path textbox and then you can browse to the OneNote document library. 

Once created, you'll find a new folder in the SharePoint document library with the title of the notebook. Inside the folder there are OneNote files, one for each section (OneNote pages and subpages aren't actually individual "files").

You can invite people to the site just by giving them the library URL. Clicking on the OneNote notebook file will download a cached copy of it and open it in their OneNote client on their desktop.

We had a lot of fun adding content and pages, and watching as the clients synchronized changes first to the master files in SharePoint, and then down to each others' desktops. It's a very seamless process.

OneNote is very effective at synchronizing changes, although it doesn't use Groove apparently (Groove does file-based synchronization while OneNote seems to do more in the nature of content merging). 

You can view the standard Document Management panel in OneNote by clicking "Tools" and then "Document Management", which will allow you to view the site membership, see what's been updated, and set alerts if you want to keep on top of changes.

In order to search the OneNote content in MOSS 2007, you'll have to install OneNote 2007 on the Index server to get the OneNote 2007 iFilter, and then add the .one filetype to the Shared Service Provider's search settings. Instructions on how to do that are here.

This OneNote-SharePoin t combo is like a team Knowledge Base on steroids: fully searchable, disconnected, synchronizing, shareable, and with all the rich SharePoint functionality of any other library. Yet another example of the power of client software leveraging SharePoint's rich repository services!

Monday, October 22, 2007

Application Virtualization In The Cloud

Right now there are a couple of big industry trends I'd like to talk about: virtualization, and services "in the Cloud".

Virtualization is basically a shell in which to run applications: the software thinks it's on physical hardware, but it's all a sham. The first wave of virtualization was for servers and has allowed a great deal of consolidation in data centres, but it offers exactly the same benefits to client desktops and even to individual applications.

A variety of desktop and application virtualization solutions have arisen recently. VMware offers its Virtual Desktop Infrastructure (VDI). Microsoft has VirtualPC for the server and desktop, is adding a hypervisor to its next OS (via Windows Server Virtualization), and has purchased Softricity in order to get a share of the application virtualization market. Altiris is up to version 2.1 of its popular solution. Citrix (the new owner of XenSource) and ClearCube are other big players in an increasingly lucrative and competitive market.

Broadly speaking, these offerings all operate in the same way - the virtualization software is installed on some collection of servers that are centrally managed and hosted by any organization that wants to push the bits to its workers' desktops. In this model, the current virtualization scenario is essentially an internal deployment.

Now for another recent trend: Software as a Service (SaaS) or "in the Cloud". Web Services began the trend as globally distributed methods. Service Oriented Architecture is a little harder to define (due to vocal online debate), but Wikipedia makes the interesting point that in SOA, "independent services can be accessed without knowledge of their underlying platform implementation".

Many of the applications using these cloud services are thin client systems - browser-based web applications - although there is nothing stopping rich clients from using such services. 

Mix 'Em Up

Many software vendors are interested in making web versions of their software: witness the efforts by Google and Microsoft to host office productivity software on the internet. 

Another example is Adobe: At the Web 2.0 summit recently their CEO suggested that within a decade all of Adobe's applications will be offered online.

Like many traditional software makers including Microsoft Corp., Adobe must fend off rivals delivering competing applications over the Web and it also needs to adopt a new business model after years of selling software in boxes.

Chizen expects professional customers of products like Acrobat document-sharing or Photoshop for editing images would opt to pay for subscriptions versus facing a steady stream of advertising to use tools critical to their jobs.

This could involve re-architecting their applications to be browser-based. But what if they decided to wrap Illustrator or Photoshop in a virtual application shell and push it down to an internet user's desktop?

What do you get if you combine Virtualization with Software as a Service?

What Would The Advantages Be?

There are a huge number of advantages to desktop and application virtualization:

  • No more DLL Hell: A core benefit of virtualization is its ability to shield your computer from registry edits, DLL conflicts, orphaned files, unstable services...You can even run multiple versions of the same system if required. This can be key if you have to use legacy software while upgrading - often impossible on the same computer if, for example, the versions of your software require conflicting Java runtimes.
  • Pay Per Use: Need to use a piece of software temporarily? Download it at will and only pay for the time you use it.
  • Application suite bundling: Doing some development work? Need an Integrated Development Environment, source control system, graphical editing tools, and testing software? Download a package of those applications for a flat fee. When you no longer need them, they will automatically be retracted from your desktop.
  • Roaming software profiles: wherever you go, you can download and run the software you want, without worrying about installations and headaches like hardware-based license keys.
  • The Latest and Greatest Version of Everything: When you download it, it's the latest version - guaranteed. No need to check for updates. The company providing the solution saves a bundle on maintenance and support costs by being able to centrally update their software - so they can pad their profit or passes on the savings to you.
  • Platform neutral and optimized environments: the virtualized software doesn't care what it's running on because the company providing it will ensure that it is installed with everything it needs - and perfectly optimized in its packaged environment.
  • Leverage the power of the desktop: hosting all these applications in a virtualized package on the desktop takes advantage of the client desktop's CPU, RAM, and other resources rather than pushing the burden back onto a server, scaling the solution out much more effectively.

So that's the dream. What kind of elements need to be in place to do this?

Pervasive Internet Access

If you don't have the bandwidth to download the virtualized software, then this will be a non-starter.

Luckily, most of the virtualization solutions just download the deltas to a user's machine, rather than all the code. Softricity for example streams the 15-20% of an application that a user needs to start up, and sends the rest as required.

As the percentage of the world that has access to the internet increases, and as high-speed connectivity improves, the market for virtualized fat client applications will gain as well.

Internet-facing Virtualization Systems

Right now most virtualization solutions are geared for internal deployments. A core assumption is that the recipient of a virtualized application or desktop is one of the organization's employees or at least a contractor. Softricity for example uses Active Directory accounts to determine authentication and authorization.

In a model where virtual applications are pushed out to internet users, security would obviously be a big concern. The company providing the package couldn't make many guarantees about the user's intentions. The pioneers in this field will have to take some calculated risks.

Federated Identity

One of the bigger (and longest-standing) web issues is how to reliably identify a user online. Any internet-facing virtualization provider first has to authenticate a user requesting software, and next has to authorize them based on any number of arbitrary business rules including licensing and financial standing.

These steps are non-trivial when requests are being served from around the globe. Many organizations are trying to create a web federated identity platform. Microsoft is experimenting with CardSpace to "provide [a user's] digital identity to online services in a simple, secure and trusted way". The Liberty Alliance Project is a group trying to build open standards for the same purpose.

Net Metering and Micropayments

If pay-per-use or monthly billing becomes the norm, we can expect a detailed breakdown of exactly how much we use any particular application: details such as the amount of data storage we require, how much upload and download occurs, whether an app is used in peak times or off-peak - essentially any of the details you would expect to see from your ISP today.

This sort of metering will be especially important because a user will rightly expect to be able to download and run software from any number of computerized devices.

Micropayments aren't strictly necessary but they help support net metering by allowing "pay per use" in cases where the cost is too small to make credit payments or the usual fees would make the transaction too expensive.

Dark Horses

Amazon.com is already operating in this arena. I often mention Google and Microsoft in the same breath because they compete so directly, but I think Amazon is the dark horse of the next generation web-as-a-platform race: when it comes to SaaS, they really get it.

They offer file storage in the cloud using their Simple Storage Service (S3). Costs range from $0.15 / gig for a month's storage, to $0.10 per GB transfer in to S3. EC2, their Elastic Compute Cloud (a massive virtualized grid computing offering) provides the same kind of pricing. Currently they are beta-testing Amazon Flexible Payments Service - which in addition to being a brilliant distillation of the online payment process, supports micropayments. What a great set of offerings!

It's only a very small step to imagine Amazon hosting virtualized desktops or applications in the Cloud.

So much for all my conjecture. Are we going to see this Virtualized Cloud Software model in the near future? I'd welcome your feedback!

Wednesday, October 17, 2007

Public Facing WSS Sites + Silverlight

Last night was another interesting Sydney SharePoint User Group. There were two presentations, one on using Windows SharePoint Services as a public facing CMS site given by Jon Matthes, and another by Michael Kordahi on Silverlight (+ SharePoint!).

Jon gave a very interesting talk about using WSS to rewrite a legacy web application for The Scottish Banner, an online community newsletter for Scots abroad. His aim was to improve on the old PHP website, retain its general design, allow online feedback forms, and produce minimal impact on end users in a cost effective way. He also hoped it would be an opportunity to learn about WSS 3.

The way he approached the site migration was to replicate as much of the existing structure as he could, with the only exception being the addition of the WSS administration area. He created anonymous access to a list to allow people to make submissions to the site while not logged in. An additional feature was the use of image libraries to serve as a simple product catalog, which was a new feature for the site.

Best of all, none of this required code. This turned out to be a good thing, as Jon had no access to the server and the US-based ISP was difficult to reach due to the time zone differences. Unfortunately he was unable to use Themes so some options were unavailable to him while he was doing the redesign.

Jon suggested some take-away lessons from his experience. He pointed out how important it is to use a hosting provider who has knowledge around SharePoint (and preferably one in the same time zone!). Research on what WSS could do and not do out of the box was important, and he also recommended making end user training an important component of any moves to SharePoint.


Michael Kordahi (http://delicategeniusblog.com) from Microsoft then presented Silverlight for us. This is Microsoft's intended Flash killer.

Its selling point is that it's a cross-browser/platform implementation of .NET for "building and delivering the next generation of media and rich applications for the web". Michael explained that its value is intended to lie in its flexible programming model combined with its ability to create rich media experiences.

A key component is its use of XAML, which will be the next generation declarative XML syntax for separating presentation from code and is already used in Windows Presentation Foundation. The goal is to have designers do their creative work in tools such as Expression Blend, and then have developers take the XAML code and code to it in Visual Studio.

There were some pointed questions from members of the user group. Flash can do all of these things currently, but it seems that the case for Silverlight might appear more convincing over time. Version 1.1 allows .NET code to be written on the server, and no doubt future versions will add increased functionality and productivity options. Already in version 1.0, it is easy to create animations and manipulate design objects, and then code to the Silverlight canvas using JavaScript.

Some people also remained unconvinced that the developer/designer split would be solved by this technology - after all that was an intended goal of code-behind. I haven't worked directly with enough designers to assess this problem for myself so I'm reserving judgement.

What was particularly cool about this presentation were all the demos Michael showed us. Tafiti is a neat experiment in changing the search interface to amalgamate multiple search content types. Inkable Search Tip uses the Vista handwriting recognition technology to do freehand searches on Google. Top Banana allowed browser-based video editing. A Chess Game written by Scott Guthrie rounded out the demos.

You can view many of these showcase applications at http://www.silverlight.net. Most of them are proof-of-concepts and showcases of what Silverlight can do, rather than real-world examples. 

All in all, it seems to be a very cool technology and one that'll become a very big deal. Silverlight 1.1 is currently in Alpha release and a preview version of Expression Blend 2 is available to MSDN subscribers.  For more information, Scott Guthrie has some excellent posts on Silverlight at http://weblogs.asp.net/scottgu/archive/tags/Silverlight.

Monday, October 15, 2007

Microsoft Releases End User Training Kit For SharePoint

Microsoft's SharePoint team is releasing a SharePoint End User Training Kit. This will be a helpful offering to clients who may not have lined up full training plans, or for use in self-service scenarios.

All of this content has been written by Microsoft's Office Online User Assistance team, evidently after some real-world experience responding to customers' questions.

The SharePoint Learning Kit version of the Training Kit is SCORM 2004 compliant and allows an organization to brand and customize the content delivery experience. A follow-up standalone deployment version will be available for individual use.

It's quite easy to convince end users of the power and convenience of SharePoint, but they may still feel overwhelmed by the options once they are sitting in front of the browser. Therefore user support and training is a key part of SharePoint governance and this training kit will be a welcome addition in the toolbox.

The SCORM version of the kit can be downloaded from the new SharePoint "Get the 'Point" blog. Incidentally this blog is focused on the SharePoint end user and has some very helpful walkthroughs of cool ways people can use SharePoint. It features some guest bloggers, postings from the Microsoft team, and links and tips to get the most of out a portal.

Thursday, October 11, 2007

October Sydney SharePoint Usergroup and Office DevCon

Next Tuesday will be this month's SharePoint Usergroup. The main presentation will be given by Microsoft's SilverLight Evangelist, Micheal Kordahi. He'll be demonstrating SilverLight and talk about how it can be incorporated in SharePoint portals. This should be really interesting as it can probably add a lot of pizzazz to any SharePoint site.

Another presentation will discuss how to use WSS sites for public websites.

On a related note, the SSUG now has its own dedicated website, at http://SharePointUsers.org.au/sydney. It is a SharePoint site that uses the slick-looking Community Kit.

Finally, Microsoft will be hosting Office DevCon at their Ryde campus on Saturday November 3 and Sunday November 4. There will be many speakers and sessions covering all aspects of Office 2007 and the intended audience is developers and power users. The conference is free and you can register at http://www.block.net.au/devcon/index.htm.

Monday, October 08, 2007

Bob Mixon, Drew Jones, and Bob Fox have joined forces to launch the SharePoint Beagle, a free community newsletter dedicated to SharePoint. As Bob describes it on his blog:

Each monthly issue will be hosting a wealth of information on SharePoint
administration, development and end user answers
They've already signed up thousands of users so there's clearly a keen interest. You can view the newsletter at http://www.sharepointbeagle.com/.

Saturday, October 06, 2007

SharePoint + Services

Microsoft has a new Software + Services vision, so this can't be much of a surprise: they are now offering hosted SharePoint "in the cloud".

Currently it's limited to organizations with "more than 5,000 employees" (so if you only have 4,950 you should top up) and includes hosted Exchange, Communications, and SharePoint all in a bundle called the "Business Productivity Infrastructure Online Services Offer".

It's definitely a good idea. I've had some involvement trying to come up with a managed SharePoint offering and the complexities of SharePoint administration and development make it a hard thing to price and support.

Microsoft looks to be avoiding that by making it largely self service, thereby placing their hosting effort on reducing the infrastructure and licensing burden which is I think a fair call and well within their control. I imagine they can also leverage their Fantastic 40 templates and the like to give customers some customization options.

Although it doesn't seem to be part of the basic SharePoint offering, something the associated Energizer case study mentions was the use of SoftGrid's Softricity to provide virtualized applications. This could be helpful to quickly roll out Office 2007 client deployments without causing problems and would fit well with the hosting bundle which includes Exchange.

The new Office clients would maximize the utility of the MOSS functionality, and providing them via virtualization would do an end-run around the problem many large organizations face, which is providing a quick turnaround on new Standard Operating Environments.

For a large organization this could be the "one stop shop". It'll be very interesting to see whether Microsoft can make this more widely available. Full details are here.