The holy grail of the modern corporation is creating an effective, flexible, low cost and low maintenance Intranet. I too have been chasing this illusive white whale of the web and in my career I have been tasked with building scalable Intranet systems for large organizations of 2,000+ globally distributed engineers and teams.
A few of the requirements I have for a scalable Intranet are:
- It needs to be simple to deploy for the Web and IT teams
- It needs to be flexible and easily customized for each of the organizations where it is deployed
- It needs to be easy to publish information for primarily non-technical personnel charged with creating and maintaining content
- It needs to conform to corporate branding guidelines
- It needs to integrate and play nice with the Engineering Wiki and team SharePoint sites
- It needs to have excellent search engine optimization (SEO) with our internal Google appliance
- It needs to work not just in the US but with all our global teams including those in India
So here is how you do it.
First, use open source:
I am a big fan of LAMP (Linux, Apache, MySQL, and PHP) development, because it is cost effective, there is a bunch of really great software out there and you can find experts when you need additional help. So use Apache 2.0 servers with the latest version of PHP (server side scripting language) and MySQL Database (as good as Oracle but with no sticker shock) all running on a Linux OS server. The only costs are in the server hardware and storage arena, and for storage I recommend getting your IT pro to bypass the hard drive on the server and buy some Network Attached Storage from someone like NetApp, my preferred vendor for large enterprises. For smaller enterprises look for a vendor that can give you from 1 TB to 10 TB of scalable storage. This is important because it will free you up to not worry about running out of disk space and will allow you to have good backup and recovery capabilities as well.
Full disclosure alert:
I have worked with PHP and MySQL since 1999. So I am something of a power user but this system does not require that level of expertise. The amount of coding required to make this system work is minimal and a junior level coder could figure it out in a few hours.
Step Two keep your structure simple:
What does a simple structure look like? Use Blogs as the backbone of your Intranet. Blogs are great at allowing non-technical members of your teams to update content quickly and easily. I use WordPress because it meets my infrastructure criteria, it is LAMP based and you can fire up a new topic blog in as little as 10 minutes (no kidding). You can also take advantage of a great piece of freeware from Microsoft for your windows users called Live Writer (I know I said Microsoft and free and great). It is a 3rd party Blog editor that makes Blogging content as easy as sending an email with Outlook and it makes a very user friendly front-end to WordPress. In fact, I am using it to write and publish this article! For your non-windows users they can use the built-in WordPress editor or there are many different Mac and Linux based editors out there too.
Next organize your Blogs into single topics like News & Information, Words from the Helm, Team Events, and so on. This keeps each Blog focused on one topic and helps keep your structure more manageable. This will make more sense when we get to the next section.
Additional benefits to using Blogs – RSS Feeds:
I use Blogs because, one they are easy to use and that makes training and support much simpler and more cost effective than trying to turn everyone into a mini-webmaster. The second reason is that Blogs have a great little feature called RSS feeds that come along for the ride. RSS feeds (Really Simple Syndication) are an XML technology that allows content generated at one level of the organization to be consumed or displayed at various other levels of the organization. The key word is syndication. Just like print news, articles and authors can be syndicated in many different newspapers across the country or around the world, RSS allows Blog content to be syndicated throughout the company and in multiple department sites in real time. I use the example of the CEO of your company writing an article on an exciting new technology that could be a game changer and posting it to their Blog. With this system they can Blog it once and have the article show up in multiple websites throughout the company and around the globe in real-time. I use the phrase “blog it once and display it multiple times and places.” In this scenario the article appears on the CEO Office website, in the Global Engineering website, on the Marketing and Sales website, and on the India Technology Center website. And no one had to lift a finger to make it happen, the sites where it appears were just out there waiting for the latest post from the CEO, and when the RSS feed was updated they all got the news automatically.
Here is how it all happens:
Blogs by themselves are no better than regular web pages at keeping your Intranet organized and navigable. The problem is in linking it all together, and meeting the other requirement of conforming to corporate branding guidelines and keeping it all organized. This is where good old fashioned web 1.0 pages come in. I use Dreamweaver templates to create compelling department branded pages and link structures. I do add a few fancy features that make the pages more dynamic such as global navigation pieces through PHP includes but for the most part they are just web pages.
What makes them special is that they have the ability to dynamically display RSS feeds as links from the Blogs that belong to that group or team. This is where the power of PHP comes into play. I use PHP (open source server-side scripting language), and an RSS feed aggregation package called SimplePie (http://simplepie.org/). SimplePie grabs the RSS feed from a Blog and allows me to convert all of the posted content into a bullet list with links to each of the articles and display it in a nice looking branded web page. Click here to see my demo page based on RSS and using SimplePie to parse and display RSS Feeds as links to the Blog posts. Each of the boxes on my demo page contains feeds from various websites, the top two are feeds from this Blog and my other test Blog the Tao of Golf.
The beauty of this code is that the only change you need to make to add additional Blog feeds is simply insert the link to the RSS feed for each of the Blogs you want to include in your SimplePie code snippet and SimplePie does the rest.
Why is this the way to go?
The power of this system is that it keeps the simple things simple and keeps users who are not web technicians from having to edit web pages. Most folks tasked with maintaining sections of our Intranet find updating content through Blogging much easier than having to edit and maintain HTML pages or use expensive CMS systems.
Training costs:
Another big advantage is in training and user support costs. We are able to train users in about an hour and by using online documentation and FAQs. We are able to support a large number of users without the need for a large team of developers and trainers. The other significant savings comes from decreased software costs. In our old system to edit a website and maintain content, a user was required to purchase and learn a WYSIWYG web editor such as Dreamweaver or FrontPage. This saves a few hundred dollars a head in software licensing fees and more in training costs.
Self maintaining websites:
The big payoff in this system is that once you setup one of these websites they update themselves every time someone Blogs. The latest article link automatically appears at the top of the bullet list and the oldest one drops off the list. In the demo site I have it set to display the newest 5 entries, but you can have as few as 1 and as many as you like, so the system is very flexible.
Localization and global distribution of content:
As I stated above, one of my requirements is that the system needs to work well in various global locations. One of the big problems is that there are large and growing development organizations located in India or China, and traditional web suffers from unacceptable latency. This system solves a good deal of that issue because you can leverage the use of local websites that pull and cache RSS from US Bloggers. The fact that RSS is a simple XML document means that it is incredibly small and light of footprint on the web. So links appear in India nearly as fast as they do in the US. It is only when someone clicks a link to read the actual article that there is any delay. However, most Blogs use very few images so their overhead is much smaller than trying to access a fully branded and image-rich web page from India. Our teams have been quite pleased with the new system and it has significantly improved our global communications.
Some benchmarks:
Here is where the real ROI lives. Using a hybrid of Web 1.0 and Web 2.0 technologies using this system, I have put together a standard build consisting of an organization home page with global links, 4 standard Blogs organized around the topics, News & Info, Org Events, Words from the Helm, and Team Projects. All of that is tarred or zipped up and ready to go. For a new org I would simply untar, config, and go! It takes about an hour to create a new site, another two hours for training and customization and a day or two to get everyone on the same page. I have setup a large organization in as little as a single week. With the average deployment in under two weeks. All of this was done with one partial developer headcount and one to two partial headcount from the org. It is all pretty cool if I do say so myself.