MS Web Dev Summit 2007

Notes from the Microsoft Web Development Summit 2007

Microsoft Open Source Licenses

OSI Approves Microsoft License Submissions

People to bug (for Liz Smith)

Microsoft’s OSS Business Strategy (Sam Ramji)

Trying to improve Windows sysadmin skills by introducing powershell, etc. so that they are no so afraid of administrating Linux systems because they are so used to and reliant upon a GUI

Patrick asks about the status of an “official” .NET bridge in PHP (like the Java bridge); Sam Ramji says it’s not something that’s on the radar, they haven’t really discussed it.

Jesse Mullan asks if Powershell is complete in itself and provides bash shell scripting tools; Sam says the short answer is “no,” but that they are considering providing more features that allows a compatibility mode with bash shell scripting (perhaps including Perl scripting, etc.). This will probably need to provide libraries as a separate download because of the GPL restrictions on providing tools like grep, sed, awk, file, etc. These tools cannot be distributed with Powershell or Windows because of the GPL restrictions.

IIS 7.0 Overview (Scott Guthrie)

  • Powerful web application platform
  • Delegated management of sites and applications
  • Integrated diagnostics and trouble-shooting
  • Dramatically improved extensibility
  • Built-in web-farm deployment

  • Built-in FastCGI Module in IIS7
    • Tested and designed for PHP
  • Windows “Server Core” support for IIS7 and PHP
    • Enables IIS/PHP to be used on focused footprint servers
    • “Server Core” is a version of Windows that basically has everything that’s not needed for a server environment stripped out (no GUI, etc.)
  • SQL Server Driver for PHP
    • Paul Jones asks to hear more about the SQL Server driver support, and there’s a little bit of heming-and-hawing skirting around the issue in lieu of providing an answer. Sanjoy says that someone from the SQL Server team will be around tomorrow to answer some questions about it.
  • PHP Syntax Support in Next Release of Expression Web
  • Visual Studio 2008 and ASP.NET 3.5
    • Integrated AJAX (sic) tool support within Visual Studio
      • JavaScript Intellisense
      • JavaScript Debugging
      • ASP.NET AJAX (sic) Extensions Support Built-in
    • Rich CSS and Web Standards Support
    • LINQ and rich data support
    • MVC and REST support
  • Silverlight 1.0
    • focused on media experiences
    • supports some open streaming protocols? (I missed the names of what he said they support)
    • He displays images of the WWE and HSN Silverlight websites that Schematic built
    • Supports a bitrate throttle
    • Now he’s going through demos of the WWE and websites
    • Patrick asks about the Silverlight experience on Vista; Scott says that eventually the experience of running Silverlight on Vista will be a richer experience with hardware acceleration and 3D, though the goal is for all platforms running high-end graphics cards to support these experiences regardless of the platform (Windows, Mac, Linux, etc.)
  • Why Use .NET in the Browser? (in Silverlight)
    • Multi-language support
    • High Performance Runtime
    • Rich UI controls, graphics, media, & interactivity
    • HTML DOM integration
    • Robust Networking
    • Flexible Data Support

State of IronRuby (John Lam)

  • Trying to make it as easy as possible for the community to contribute to the project
    • IronRuby is under an open source license
    • Source hosted on rubyforge
    • Allows the community to submit patches, bug reports, etc.
  • IronRuby does a lot of monkey patching of Ruby

His new install of leopard gives him some problems during his presentation, e.g. being told his wifi connection has been compromised and being unable to dismiss the dialog or turn Airport off. Maybe it’s because the Mac senses it’s in Microsoft’s headquarters. ;-)

As John wraps up his IronRuby showcase, someone asks, “What is Ruby?” John’s concise answer: “It’s a very nice programming language.”

Sara asks, “If I’m going to implement a language on the DLR, where would I look for information on how to start?” John says that a real language isn’t really the right place to look, but the source is where most people look now. In the future, ToyScript will be a good resource for learning how to implement a language on the DLR.

Discussing phalanger now and how that fits into the DLR. Patrick asks about phalanger’s decision to use Sara’s namespace patch and other patches before they were implemented in the PHP core.

Later edit: Sara points out that, while everyone keeps referring to “her” namespaces patch, it is not actually her patch. It was, in fact, Jessie Hernandez’s patch to which people are referring.

Facebook Platform: Technical Survey (Dave Fetterman)

(Attendee session)

“Who doesn’t know what Facebook is?” Of course, Patrick raises his hand.

  • 50 million active users
  • Each stick around for about 20 mins a day
  • 2 billion page views a day
  • 2nd-largest PHP application
  • 14 million photos uploaded daily

Dave Fetterman showing his FB profile: “Look at my douche-bag picture.”

  • Facebook Platform
    • goal: if we can build [idea] on FB, so can you.
    • 160,000 keys given out
    • 80,000 developers
    • 6,800 applications published
    • 3,800 developers published
    • (all stats since May)

Dave now walks through how to add an application to FB.

Drupal (John VanDyke)

(Attendee session)

Expression Product Family (Wayne Smith)

Wez says this guy gives good demos. “It’s because he’s British.”

“In Expression Web 2, we’re putting in some PHP features.”

  • Design is Inevitable
  • Theory behind Expression: Unifying the Design/Development Process
  • Design is often lost in translation when implemented by developers
  • Expression uses XAML to connect design with development so that the design is not lost when implemented by developers; Expression Web uses XHTML/XML/CSS, etc.
  • Expression Studio “talks” to Visual Studio to bring designers and developers together

Steve Gutman now gets up to do a demo. “I’m Steve Gutman, not related to Andi Gutmans of Zend, but probably a long lost cousin of sorts.”

Overview and roadmap of client side technologies (Brad Abrams)

MacBook == “Fruit box,” Microsoft humor

  • Web… IIS, ASP.NET
  • Desktop… WPF, Windows
  • Newly emerging market: Media & RIA… Silverlight
  • Microsoft AJAX (sic) Library
    • A framework for building next generation, cross-platform, browsing experiences
    • Ubiquitous, cross-platform, browser support
    • Most-productive framework for building AJAX-enabled web applications
    • Rich tool support for designer and developer workflow
    • No cost, free tool support, easy to use
  • Microsoft AJAX Library includes:
    • Toolkit
    • Futures
    • MSAjaxWebForms
    • MSAjaxRuntime

In trying to demo something, a Server Error occurred and then Abrams responded, “So, let’s take a look at the debugging capabilities instead.” Way to roll with the punches! :-)

Jesse asks if the debugging tools for the Ajax toolkit are available in Firefox. Abrams responds, “No, but you’ve got Firebug for that.”

Silverlight Streaming - free, scalable solution for hosting Silverlight applications -

“Who’s a python guy? Anyone in here into python? No? I should’ve done the Ruby example instead.”

IIS7 Demo (Bill Staples)

“With IIS7, we wanted to make a Web server that’s capable of hosting any Web application.” He’s leading up to a discussion on FastCGI.

Staples uses Visual Web Developer 2005 Express Edition to edit all the PHP scripts and examples he’s showing today in his IIS7 demo. Visual Web Developer Express is available as a free download.

Demoing the verbose server error messages and showing a 403 Forbidden page right now. He asks why we might be seeing that page. My first reaction is that it’s probably because the Web server doesn’t have permission to look at the directory with the file in it, but that’s because I’m thinking along the lines of *nix file system permissions (i.e. the directory needs to be readable by all). However, with IIS, it apparently requires a default document (i.e. index doc) to be in the directory, which is very strange.

Showing IIS’s version of an .htaccess file. It’s an XML document that can be used to define directory-specific configuration.

Showing the CGI version of PHP in the “Reliability and Performance Monitor” application; it clocks in at 23-26 requests per second. Pretty poor performance. Now moving to the FastCGI version using the same tests; it clocks in around 300 requests per second… a obviously significant performance increase.

IIS 7 has an “output cache” feature. There’s “user mode” caching and “kernel mode” caching. Enabling this feature increases the requests per second to 700+. (This is only caching the output, though, and is not the same as opcode caching.)

Now showing how to build a runtime module for IIS. Creating the module in Visual Web Developer automatically puts the source for the module into an “App_Code” directory, and all code in this directory automatically gets compiled (i.e. what he’s currently showing is a C# script).

Staples asks for any suggestions for IIS and Sean joking says, “You can make it run on Linux.”

“PHP on IIS” section on at

PowerShell (Jeffrey Snover)

  • Windows PowerShell… new command-line shell and scripting language
    • As interactive and composable as BASH/KSH
    • As programmatic as Perl/Python/Ruby
    • As production oriented as AS400 CL/VMS DCL
    • Allows access to data stores as easy to access as filesystem
  • The difference (from *nix) is OBJECTS!

Now he’s demoing PowerShell.

  • PowerShell includes “Structured Cmdlets”
    • Cmdlets are tiny .NET classes that get exposed VERB-NOUN Structures
    • You only need to type a subset of the param and you can use aliases
    • PowerShell supports positional parameters and wildcards
      • gps l*s
    • PowerShell supports multiple named streams
    • PowerShell extends the traditional model with additional named streams
    • What makes PowerShell truely special is that it pipelines OBJECTS
      • gps |where {$_.Handles -ge 700}
      • gps |where {$_.Handles -ge 700} |Sort Handles
      • gps |where {$_.Handles -ge 700} |Sort Handles |Format-Table Handles,Names,desc* -Auto
      • Wherever you can specify a property, you can specify a lambda
    • PowerShell surfaces object stores as Namespaces
    • Wildcarding works the way you always wanted it to
    • PowerShell exposes the object store
    • PowerShell is designed to support PRODUCTION SYSTEMS
      • gps [b-t]*[g-m] |stop-process -WHATIF
      • Use -WHATIF to see what might have happened
  • PowerShell Adoption
    • > 1.55 million downloads in < 1 year
    • high rate of internal project adoption
  • MySpace Uses PowerShell, picture of slide
    • In production environment
    • To manage 1000s of Windows Servers running IIS
    • “Things that used to take them >10 minutes now take them about 5 minutes.” (paraphrased from the VP of Engineering at MySpace???)
  • PowerShell Scripting
    • Script against various instrumentation, object types, data stores
    • Ad-hoc scripts need to be quick and easy
    • Production scripts need to be production quality
  • PowerShell supports a wide range of sophisticated scripting (with Begin/Process/End blocks and ScriptBlocks)
  • PowerShell supports a wide range of GUI scenarios

OSSL On IIS/Windows (Hank Janssen)

  • OSSL == Open Source Software Lab
    • R&D for open source software
    • They have carte blanche for looking at any open source software they want without first asking at Microsoft for permission
    • Working with open source software to see what they can do to make it run better on Windows (e.g. Apache)
    • Where OSS doesn’t run on Windows, they focus on seeing what they can do to make it interoperate with Windows
  • OSSL focus on the following on a day-to-day basis:
    • Deep Unix & Linux Expertise
    • Heterogeneous Datacenter Management
    • Virtualization
    • High Performance Computing
    • Web Infrastructure
    • Security
    • Embedded

By direct “order” from Steve Ballmer, they have to “take a 2x4 to the other product groups” to make sure they know what open source software is out there.

  • Runs many, many, many different flavors of Linux (showing slide of about 50 different distros)
  • Projects they work with: PHP, MySQL, Eclipse, Mozilla/Firefox, Apache (Httpd, Tomcat), etc., etc.
  • Recent projects “playing around with”:
    • Windows Media Plugin for Firefox
    • Virtual Server 2005 RC2, Linux virtualization support
    • JBoss
    • etc. slide went by too fast to capture the rest
  • Why PHP on Windows
    • Microsoft’s technical commitment to makes Windows the Premier platform for one of the most popular web scripting languages on the web today
    • Microsoft Benefits
      • Migrate existing PHP apps to windows with virtually no modifications
      • Combine PHP with Microsoft technologies creating rich websites
      • Reuse existing PHP applications and infrastructure on Windows
      • Provide customers greater availability of applicaitons and capabilities without increasing costs

Shows a demo of phpBB (as a joke for Wez) running with Microsoft’s native sqlsrv driver for SQL Server. Goal is to put this driver right back into the community.

“Are you going to make the SQL Server extension available on other platforms?”

“Yes, we will be making it available on other platforms.”

(Attendee session)

  • What was new in Gallery 2.2?
    • WebDAV
    • Downloadable plugins
    • Dynamic albums (tags)
    • RSS
    • MSSQL Server

All releases of Gallery 2 after Gallery 2.3 will no longer support PHP4. Exceptions will be implemented.

  • Coming soon in Gallery 2.3
    • anti-spam (Akismet) - this was real bad (commentblaster)
    • SQLite
    • Language Pack Manager (1000s of files)
    • Notification Module
    • Event Logging
    • Windows Vista publishing
  • How we get things done
    • SourceForge
    • Feature Vote
    • Bounties
    • Advertising + Affiliates -> $
    • paid security reviews
    • subversion (originally cvs)
    • Smart Bear’s Code Collaborator – code reviews –
    • Summer of Code
  • Team Organization
    • Power Structure
      • Bharat Mediratta - Project Leader
      • Chris Kelly - Project Manager
      • Everyone else
    • Core Developers
      • Perform regular commits and code reviews
      • Attend yearly parties (NYC, Las Vegas, etc.)
    • Support Staff
    • External Contributors
  • Team Challenges
    • Spread out over the world
    • Differing skill sets
    • Double everyone’s salary every year, but people still have other things to do

Win32API extension for PHP (Elizabeth Smith)

(Attendee Session)

  • Aren’t Desktop Apps Dead?
    • People aren’t always online
    • Some applications would be bandwidth prohibitive
    • Some data is too sensitive to be passed on the wire
    • Embedded OS’s don’t always work well with websites
    • Browsers are just quirky
  • PHP Advantages (of using a scripting language for desktop apps)
    • Fast to Write
    • East to Use
    • Plug into PHP extensions
    • No learning curve for a new language
    • Instant changes
    • No compiling
  • PHP Disadvantages
    • Speed
    • Additional extensions/libraries needed
    • Speed
    • Distribution (phar is helpful here)
    • Speed
    • Security
  • So what are your options?
    • PHP-GTK2
    • PHP-QT
    • PHP-WxWidgets (vaporware)
    • Winbinder (so not thread safe)
    • Win32API - Win::Ui
  • Things to decide
    • OS support (only PHP-GTK2 is truly cross-platform at the moment)
    • Distribution mechanism
    • Upgrading
    • Security
  • What’s Hiding in PECL
    • Win32Std - resource files as streams, basic dialog boxes, registry access
    • Win32service - service control
    • Win32scheduler
    • Win32ps
  • Reinventing the wheel
    • Problems with Winbinder
      • Thread safety issues
      • PHP4 style API
      • No BC breaks allowed
      • Few developers
      • Different direction
  • So what works in Win32Ui?
    • PHP 5.3 target
    • Namespaces
  • Future
    • Will support all of win32api
    • an extension system
    • low level system items are the “core” and available in all SAPIs
  • Resources

Elizabeth now goes through a demo. Source code in demo shows the use of PHP 5.3 namespaces… and THEY WORK!

Quicken Loans, Web App Frameworks (Duane Leinninger)

(Attendee Session)

Big take-away… names their application layers after He-Man characters Skeletor, Man-at-Arms, and Battlecat. Awesome!

PEAR 2 & Pyrus (Joshua Eichorn & Helgi Þormar Þorbjörnsson)

  • PEAR 2 & Pyrus, give us your code
    • New PEAR Group
    • PHP 5.3+, “Namespaces”
    • Runs out of the box as phar, no installation
    • Full app support with the www and cfg roles (also 1.7)
    • Phar
    • Pyrus can install all PEAR package2.xml packages
    • SVN
    • Sandboxing
    • Collectives
    • Changes in the coding standard
  • Resources

Ask the Experts Panel

  • Steve Guttman, Product Manager for Expression Web
  • Joe ?, Product Manager for Silverlight
  • John Bocharov, Program Manager for SQL Server’s PHP driver,
  • Drew Robbins, IIS7 Technical Evangelist
  • Susan ?, IIS team