Disclaimer: These are random notes and are not intended to be an exhaustive retelling of the presentations this week. Please forgive spelling and grammar errors.
- Microsoft Contacts
- Day 1 (December 1)
- OSTC - Update on the work OSTC is doing with PHP
- The Next Generation of the IIS Web Server & Windows Optimization for PHP
- Web Platform Installer Futures
- Roundtable lunch discussion: Airing of the Grievances
- Attendee showcases
- Codeplex Foundation
- Microsoft Research: Future Trends in Software Development
- Intro to Powershell
- Day 2 (December 2)
- Day 3 (December 3)
- Garrett Serrack, Open Source Technology Center, firstname.lastname@example.org, http://fearthecowboy.com/
- Mai-lan Tomsen Bukovec, IIS Product Unit Manager, email@example.com, http://blogs.iis.net/mailant/
- Ruslan Yakushev, WinCache contact, firstname.lastname@example.org, http://blogs.iis.net/ruslany/
- Mark Brown, Web Platform Installer, email@example.com
- Carlos, SEO Toolkit, firstname.lastname@example.org, http://blogs.iis.net/carlosag/
- Olga Londer, international evangelist efforts, email@example.com
- Robert Duffner, Director of Open Source Strategy, firstname.lastname@example.org
- Scott Hanselman, Principle Program Manager (and PowerShell expert), http://www.hanselman.com/
- Claudio, Technical PM (Interop), email@example.com
- Sumit, Technical PM (Interop), firstname.lastname@example.org
- Vijay, Technical PM (Interop), email@example.com
- Jean-Christophe, Sr. Technical Evangelist (Interop), firstname.lastname@example.org
- Tim Heuer, Program Manager, Silverlight, email@example.com, http://timheuer.com/blog/
- Stephen Walther, firstname.lastname@example.org, http://stephenwalther.com/
- Josh Holmes, Developer Evangelist, email@example.com, @joshholmes, http://www.joshholmes.com/
- Peter Laudati, Developer Evangelist, @jrzyshr, http://www.peterlaudati.com/
- Jas Sandhu, Interop Vendor Alliance Manager and Sr. Technical Evangelist (Interop), firstname.lastname@example.org, @jassand
Day 1 (December 1)
OSTC - Update on the work OSTC is doing with PHP
The Road Less Traveled
An un-presentation about the future of open source on Windows by Garrett Serrack, Stephen Zarkos, and Tom Hanrahan of MSFT Open Source Technology Center
(Presented by Garrett)
- What do we want from an open source application on Windows?
- I want to be able to install open source applications and for others to be able to install them and work well
- I want open source apps to have the same benefits of others apps
- I want to be able to easily build it from source (non-negotiable!)
App Install Experience (on Linux)
- Shared libraries
- Auto dependency
- Large selection
- Many repositories
- Signed binaries (md5)
- Easy install
- Easy enumeration
- In place upgrades
- Platform smart
- Easy to find
App Install Exerience (on Windows)
- Binaries are scattered
- Often out of date
- Libraries not shared
- No update facility
- Poor selection
- MS Web PI
- Centrally run
- No standard
Windows Platform Benefits
Open source applications running on Windows tend to ignore the benefits of the Windows platform by being tricked into thinking they’re running in a Linux environment.
- MSI installer
- VC9 & VC10
- WinQual (Windows error reporting facility)
- Signed binaries
- Shared libraries
- Source MSIs
- Automatic dependencies
- App repositories
Building from Source (on Linux)
Using autoconf (and friends)
(example of building)
Building from Source (on Windows)
Can you build/fix it?
Because it’s Windows, not Unix!
The problem is that we’re trying to make Windows look more like Unix? We don’t want to make Linux look like Windows, and we don’t want to make Windows look like Linux.
Building PHP from Source (on Windows)
- Download all the dependencies
- First trick is to find all the dependencies
- Thanks to work by Pierre, Elizabeth Smith, and others, these are all listed in one place
- Now, figure out how to compile all the dependencies, compile them, throw hands up in the air, and maybe find someone else’s binary
- We don’t want people to get frustrated like this at dependencies because they will walk away and decide not to contribute to the project
- 20 hours later… you got them all compiled and patched
- “It is really, really hard”
buildconf.bat, configure PHP in a different way from how it’s done on Linux, and build!
- Okay, you managed to build it. Now: Optimize it!
- Enabling PGO (profile guided optimization)
OptimizedBuild.jsand run it to configure and build a finalized, optimized version of PHP on Windows (several hours later)
The PGO optimized version of PHP runs 20% faster on Windows than PHP does on Linux. (With caveats.) So, we see that if we build it right and we use the right tools, then we can build something that works very well on Windows.
Back to autoconf…
How about Cygwin (or SUA)?
It’s a complete FAIL.
We want all the platform benefits of Windows and easy automation and large selection of apps.
How do we get that?
Build some sort of common open source application publishing platform. This won’t magically appear like it is on Linux because on Linux it grew up over time around community development.
- A set of “specs” (How-to’s)
- Some awesome open source tools
- An open directory
- A plethora of repositories
- And a whole lotta apps
We need your participation!
Garrett is working on a program and a platform for getting community involvement to develop and build these tools.
Now Garrett is sketching out on the white board his ideas for how this program will work.
Garrett already has incomplete code for this and, once he gets permission, he will be publishing it for community review and participation in the process. He’s just waiting on word from people higher up in the company. The code will definitely be under an open source license, likely under the Ms-PL, but that’s up for discussion.
The Next Generation of the IIS Web Server & Windows Optimization for PHP
Presented by Mai-lan Tomsen Bukovec, IIS Product Unit Manager
Strategy for Windows Server 2008 and Later
- Build the best Web server stack
- Grow the Windows Web app ecosystem
- Make it easy to get started using the Web stack
- Make it simple to license the Windows Web stack
Build the Best Web Server Stack: IIS 7.x
Web Extensions for IIS 7.x
Introduced Web Extensions for IIS 7.x to extend the functionality of IIS.
Showing slide of all extensions released. Examples include WebDav, SEO, app warm-up, smooth streaming, etc.
Developer Services on IIS
- Package your Web app and its resources
- Creates a single zip file with content and app resources
- Can be used for backups or versioning
- Manage your database along with your Web site from a single location
- Manage local and remote databases from IIS manager
- Support for SQL, MySQL…
- Optimize your Web site for users and search engines
- Dynamic control over URL requests using URL rewrite to improve…
Moving too fast through slides with lots and lots of text on them, so it’s difficult for me to capture it all. I apologize for the gaps.
Web Farm Building Blocks
- Shared configuration
- Web Deploy
- Application Request Router (ARR)
IIS Media Services 3.0
Slide of IIS Media services graphic.
Web Application Gallery
- Free downloads of top community applications (ASP.NET and PHP)
- Launched in March 2009, with over 1M app downloads 7 months later
- Downloads orchestrated by Web Platform Installer and Web Deploy
Getting the Stack with Web Platform Installer
- Simplify discovery and acquisition of the Microsoft Web stack
- Stay up to date and explore what’s new
- Provides access to Web App Gallery apps
- Runs on Windows XP and later, and Windows Server 2003 and later
Make it simple to license the Web Stack
- Provide hosters with the right licensing agreement
- WebSiteSpark for WebVAPs – http://www.microsoft.com/web/WebsiteSpark/
- BizSpark for Startups – http://www.microsoft.com/bizspark/
- DreamSpark for Students – https://www.dreamspark.com/
A “VAP” is a Microsoft term for “value added partner.” They are typically web consultants and small businesses.
PHP on Windows
The IIS group’s focus:
- PHP open source community
- PHP app portability
- PHP fundamentals
First class PHP hosting on IIS
- Engage the existing PHP open source application ecosystem for Windows
- Provide parity or higher platform support for PHP engine on Windows
- Simplify the PHP app deployment, hosting and management experience on Windows
For the PHP engine…
- PHP 5.3 adoption by the communities
- Native Windows PHP extension for app acceleration
- Improve performance and compat with 5.3.x
Side note: any Microsoft employee now has clearance to contribute to PHP core, APC, and several other extensions. The WinCache code base has been contributed to PECL, and their contributions to APC are being contributed back.
Demonstration and open discussion about the WebPI. Including demonstration of the app submission process and submission agreement.
For the PHP apps…
- Built-in support for URL Rewriter
- Top 10 PHP applications in Web App Gallery for Windows users
- Simplified app install and optimal performance on Windows
PHP on Windows from Oct 2008 – Oct 2009
- PHP Engine
- 5.3 bug fixes contributed by MS FTE dev
- Helped with fixes for PHP’s Windows installer
- Inclusion of community PHP 5.2.x in WebPI
- PHP documentation for Windows updated on php.net
- PHP Apps
- URL Rewrite integration with WordPress
- Web App Gallery: WordPress, Acquia Drupal, Moodle, SugarCRM, Gallery 2, Silverstripe
- Support for localized versions of apps in Web App Gallery
Windows Cache Extension for PHP (WinCache)
- WinCache v1
- Byte code cache
- File cache
- Relative file cache
- Reduces CPU load
- Improves response time
- Improves throughput
- Accelerated PHP performance on Windows
- Works on IIS 5.1, 6, 7, and 7.x
- Installed via Web Platform installer
- Best practices:
- Adjust the FastCGI MaxInstances after enabling WinCache
- Use dynamic MaxInstances in FastCGI 1.5
Web Platform Installer Futures
Presented by Mark Brown of the Web Platform team.
(Poorly named, since they can’t get into a lot of the futures stuff right now until Thursday during the NDA sessions, so they went back to discussing IIS, and Mai-lan co-presented with Mark on IIS features.)
WebPI app installation
Demonstration of installing WordPress and its dependencies using the WebPI.
Now demonstrating smooth streaming.
Developers need to develop using the Expression tools. End-users can install the Silverlight plug-in to view the video.
IIS Site Analysis and SEO Toolkit
“Over time, we’re going to take this IIS management console and make it live in a web browser. We’re trying to make it easier and friendlier to use. I can’t say we’re going to take this and try to make it work with Apache.”
Developers can create their own extensions for IIS using the extension API. Microsoft IIS team is, by far, the biggest user of this API, but some hosters use it to provide special functionality on their web servers, and it’s open for all developers to use. Developers may publish their extensions under open source licenses without violating any Microsoft agreements.
- Extension repository: http://iis.net/extensions/
- Extension API documentation: http://learn.iis.net/page.aspx/347/developing-on-iis-70/
Moving on to do a WinCache demonstration with Ruslan.
- WinCache is in PECL: http://pecl.php.net/package/wincache
- WinCache documentation in PHP manual: http://us2.php.net/manual/en/book.wincache.php
Feedback provided from audience
- WebPI: Add beta link to WebPI app gallery pages
- WebPI: Need access to previous versions of apps
- WebPI: Need access to multiple versions of PHP
- WebPI: Need to support frameworks
- WebPI: Test results
- IIS: Control panel: performance/security testing
- IIS: Ad server extension
- IIS: Accessibility testing/Section 508 compliance
Roundtable lunch discussion: Airing of the Grievances
Please note that these quotes are not often exact. Many are paraphrased, so let me know if I need to correct anything or modify/clarify something that was said.
Open form discussion. What are the problems, any problems, you have with Microsoft? Not just limited to the technologies we’re discussing here.
Starting out with Lauren Cooney and Matt
“You guys have a lot of smart people, but you don’t have all of them.”
Are you using any of the open source technologies that you’re trying to help people integrate. “Working on something and never using it is the first step to failing badly.”
“To answer your question, I’ll say: We’re sticking our toe in the water.”
He’s encouraging some internal Azure developers to go write apps and, instead of using .NET, using a technology, like PHP, that they don’t already know so that they can learn how these things work and how others use them.
Main discussion now is centering around how Microsoft can best engage the community and communicate with the community and how they can be relevant to the community.
Discussing user groups and dev evangelism participation in specific areas. Where are there “desolate” areas where dev evangelists aren’t present or aren’t doing their jobs? Dev evangelists need to be down-to-earth and build relationships instead of attempting to make pitches. They should take cues from dev evangelists like Josh, Glen, Peter, Woody, Jason, etc.
“We don’t want to hear from Microsoft, ‘Hey, we’re working on this, but you can’t see it or discuss it with us right now until we get legal approval.’ Get the ability to go ahead and set up mailing lists and public discussion and release the code for these things. Let’s see the work.”
“You guys are having to go through 13 yards of red tape to do this stuff.”
“The pain is on you [Microsoft].”
“It’s getting better. We’re cutting down on the amount of red tape being used.”
“But we don’t care.”
“It’s less a matter of we don’t care or we do care, it’s because we don’t work in the same kind of environment. We work in agile environments. We’re able to do things quickly and get them done today, so we’re not used to the problems that occur in a big company.”
“I don’t think open source is quite as agile as we say. I have 18 months of posts arguing about namespace separators. What we need from Microsoft is better communication about all the legal requirements about it.”
“Talking about you guys being in an agile environment: if we can’t match that, why would you want to work with us? We need to be better about it.”
Discussion about open source licenses used by the community and within Microsoft. Microsoft has used various licenses within the organization, including Apache, BSD, etc.
“At Sun, it didn’t matter how many licenses we used on our own. What mattered was license proliferation. So, the question is: what set of licenses would you prefer (non-vendor specific).”
“So, what other things besides licenses?”
“We can’t connect to SQL Server when we’re running on Mac/Linux. FreeTDS is horrific. Give us something that works!”
“We made suggestions last year about SQL Server on Linux, but it’s been a year.”
Switching gears to IE. IE is getting better with regard to standards, but… “What really drives me crazy is having to run 3 different VMs to run IE 6, 7, and 8 and check that they all work right.”
“Developer tools that used to work in IE 7 no longer work in IE 8.”
Feedback for Olga
- How to engage without care of “MS LCA?” Just do it.
- MS Licenses (MS-PL, Apache 2.0, etc.)
- Creative Commons licensed content for Channel 9 and Port 25 posts
- Can’t connect to SQL Server from Mac/Linux
- IE - easy to use tool to run 6, 7, and 8 for testing without pain
- Need package to help startups in the long term (not just Website Spark). What happens after 3 years?
- Need help/advice with legal issues for PHP user groups, etc.
I was too busy presenting and taking part in discussion during Rafael’s and Lig’s (and my) presentations, so I didn’t get any notes from them.
State of the PHP User Group (Ben Ramsey)
The PHP Community in Brazil (Rafael Dohms)
A State of the Union for PHP Women (Ligaya Turmelle)
PHPLinq (Maarten Balliauw)
PHPLinq on CodePlex: http://phplinq.codeplex.com/
- Language INtegrated Query
- .NET world (.NET 3.5)
- 1 query language
- Multiple providers
- Language extensions
- Anonymous types
- Object initializer
- Lambda expressions
Showing a code example in .NET.
“Not really language integrated, but we’ll see were we can go.”
Others in the room suggested helping getting this implemented as a PHP extension rather than a userland library.
- PHP Language Integrated Query
- PHP userland library
- 1 query language
- Multiple providers
- Language extensions
- Anonymous types
- Object initializer
- Lambda expressions
Showing a code example in PHP.
Joining multiple data sources
- Not officially supported yet
- Not in the Subversion repository yet
- Maarten has been able to get this working, though, combining two different data sources and querying both of them together; this is something that LINQ in .NET does not have
Presented by Robert Duffner, Director of Open Source Strategry
How do I describe what our open source strategy is? Fundamentally, when thinking about our platforms, you have to be open, so our strategy is in making our platforms more open. Being open is the future.
The future involves operating in the Cloud, and the Cloud is about open technologies working together, so the approach Microsoft is taking is to be more open in order to work in the Cloud.
NOTE: Codeplex.com is still Microsoft’s open source project hosting place like SourceForge. Codeplex.org is the CodePlex Foundation and IS NOT the same as the project hosting website. They are completely separate entities with the same name. Microsoft donated the trademarked name to the CodePlex Foundation and Microsoft licenses the name from the CodePlex Foundation for use on codeplex.com. CodePlex Foundation projects could be hosted on codeplex.com, but they might also be hosted on SourceForge, Google Code, GitHub, etc.
The CodePlex Foundation is a way to facilitate getting developers from corporations to contribute to open source projects. The CodePlex Foundation works similar to the Apache Software Foundation in that it handles all the legal stuff and infrastructure that an open source project might need, including CLAs, etc.
- MISSION: Enabling the exchange of code and understanding among software companies and open source communities.
- Launched as a 501(c)(6) non-profit on Sep 10, 2009 with $1M initial funding from Microsoft
- The CodePlex Foundation will be complementary to existing foundations such as the Apache Software Foundation, SourceForge, and the Eclipse Foundation
- Address the full spectrum of software projects with licensing and intellectual property needs of commercial software companies
CodePlex Foundation Galleries
- Announcing the first CodePlex Foundation Gallery: ASP.NET Open Source Gallery
- Accepted on Nov 18, 2009
- ASP.NET Ajax Library project
- Released under BSD license
- What are galleries
- Collections of thematically related projects
- Can be 3rd party or Foundation sponsored
“Why isn’t there a PHP gallery on there? Well, why not? There would have to be a group that sponsors that gallery. It could be Drupal, WordPress, etc.”
Microsoft Research: Future Trends in Software Development
Presented by Wolfram Schulte, Research Area Manager
Microsoft Research has over 700 employees worldwide.
- Advance the state of the art
- Guarantee a future for Microsoft
- Foster the scientific community
The RiSE Team: Research in Software Engineering
- Understanding development processes using scientific observations
- Product groups
- Academic community
- Developer communities
Interaction with Developers
- Talks at Dev Venues
- Video as Channel 9
- Talks with Dev Customers
- Tools & sources on Codeplex.com
- Tools on DevLabs
- Tools on MSR website
Current Trends & Agenda
- Energy-efficient software: Green
- Testable Designs and Automated Testing: Pex
- Rethinking the Web Platform: Service OS
Energy aware computing
The perfect storm:
- Technology Processors: Energy grows almost quadratic with compute performance
- Economics Data Centers: 1W Computation = 1W compute + 1W power delivery + 1W cooling
- Environment: 1.5% of total energy, 4.5 billion @ 61.4 Billion KWhr/yr, usage growing at 14% per year
How can we decrease our costs?
What’s Left: More Efficient Computation
- Energy-efficient hardware
- Energy-efficient software
“I want to focus on software.”
Green: Principled Approximation
- Acceptable answer vs. correct answer
- Appropriate for domain
- Appropriate given resources/cost
- Meet specified SLAs
- Three phases
- QoS Modeling and Calibration
- QoS Approximation
- QoS Runtime Recalibration
- Language extensions for programmer to communicate …
- Example: Search
Status: Green Computing
Tiny optimizations on algorithms can save tens of millions of dollars.
- Energy-efficiency is and will shape computing going forward
- Perfect storm of technology, economics, environment
- Large opportunity for improvements in software and hardware
- Billion X away from theoretical limits
- Principled approximation a la Green has great potential
- for applications which exhibit soft computing properties user-defined, relaxed correctness, redundancy in computation, and adaptivity to errors
- Green for Search saves » tens of millions of $
Testable Designs and Automated Testing
- Unit Testing is a popular and successful developer methodology
- Reality Check
- Happy Path Only: Code logic is complex, .NET runtime behavior is intricate » poor coverage of corner cases
- Hidden Integration Tests: …
Demonstration of issues in Visual Studio.
Unfortunately, I needed to take a break at this point, so I missed capturing notes on the remainder of this presentation, but the last third of this presentation was an overview of the Gazelle browser kernel, which provides principal-based isolation for all resources and all types of web content. It was a very interesting presentation, and if I can get access to the slides, I’ll post them here.
Papers by Helen Wang about Gazelle and ServiceOS:
- Convergence of Desktop and Web Applications on a Multi-Service OS (pdf)
- The Multi-Principal OS Construction of the Gazelle Web Browser (pdf)
Intro to Powershell
Presented by Scott Hanselman.
To get processes sorted by memory usage in Powershell:
$> ps | sort VM -desc | more
Get just the names:
$> ps | sort VM -desc | select -name
Get the first 5:
$> ps | sort VM -desc | select -first 5
Get the type of the first 5 processes:
$> (ps | sort VM -desc | select -first 5).GetType()
See what would have happened if I killed all the first 5 processes:
$> ps | sort VM -desc | select -first 5 | kill -whatif
These commands are really aliases to Powershell scripting commands to make things easier, comfortable, familiar. For example,
dir are aliases to
See where you can
“The console is just a host for PowerShell itself. There is no spoon.”
PowerShell scripts can run in other run spaces (not just at the console).
Shows an example of extending commands. In this case, he extended
dir to show exif properties from .jpg files.
Day 2 (December 2)
Interop team contacts:
- Claudio, Technical PM, email@example.com
- Sumit, Technical PM, firstname.lastname@example.org
- Vijay, Technical PM, email@example.com
- Jean-Christophe, Sr. Technical Evangelist, firstname.lastname@example.org
- Jas Sandhu, Interop Vendor Alliance Manager and Sr. Technical Evangelist (Interop), email@example.com
Multifaceted Approach to Interoperability
- Products: Deliver interoperability in Microsoft products and technologies
- Collaboration: Work jointly with partners, competitors, and the open source community
- Standards: Promote interoperability through new and exiting standards
- Developer Resources: Make it easier to develop products that interoperate with Microsoft solutions
PHP Interoperability with Microsoft Technologies
There’s the platform level (Windows, Linux) and the application level (i.e. DotNetNuke, MOSS, etc.; Drupal, Joomla, Wordpress)
Microsoft-PHP interoperability bridges. http://www.interoperabilitybridges.com/
Windows Azure Platform
- .NET SDKs
- PHP and Java SDKs for Windows Azure
- PHP, Java, Ruby SDKs for AppFabric
The SDKs aren’t really necessary since the platform is fairly open with HTTP requests (REST), but Microsoft built them for easy-of-use.
Windows Azure Storage
- Scalable (capacity and throughput)
- Highly available
- Rich storage concepts
- Blobs provide a simple interface for storing named files along with metadata for the file
- Tables provide structured storage
- Queues provide reliable storage
- Simple and familiar programming interfaces
- REST (HTTP and HTTPS)
- .NET accessible
Windows Azure SDK for PHP
- Enables PHP developers to take advantage of the Microsoft Cloud Services Platform
- Open source project being contributed to Zend Framework
- PHP classes for Windows Azure Blobs, Tables * Queues (for CRUD operations)
- Helper Classes for HTTP transport, AuhtN/AuthZ, REST, & error logging
- Manageability, instrumentation, and logging support
- Project site: http://phpazure.codeplex.com/
Showing the architecture of a sample application called ImageCloud.
Now showing a demo of the ImageCloud application.
- Web role
- Web farm that handles request from the Internet
- Push work items onto storage queue
- Worker role
- Process work item off storage queue
Develop » Debug in Development Fabric » Deploy to Windows Azure
Showing code in Visual Studio to illustrate workers.
“In full disclosure, you’ll notice that Maarten switched to Visual Studio to do the worker role. We’re working on this for Eclipse at the moment.”
Windows Azure Tooling for Eclipse
- Plug-in leverages PDT framework
- Provides first class PHP web application targeting Microsoft Cloud Platform-Windows Azure
Sumit skipped through the slide since no one here is interested in seeing an Eclipse demo, so I didn’t capture the rest of the notes.
Using ACS and Service Bus with PHP
- AppFabric SDK for Java: http://www.jdotnetservices.com/
- AppFabric SDK for PHP: http://www.dotnetservicesphp.com/
- AppFabric SDK for Ruby: http://www.dotnetservicesruby.com/
- Contributors: Persistent Systems, Schakra Inc., Thoughtworks, and Microsoft
- Familiar SQL Server relational database model
- Support for existing APIs and tools
- Built for the cloud with high availability and scale
- Interoperable with PHP, Ruby, and Java
You may use the SQL Server driver for PHP (only on Windows for now).
ADO.NET Data Services… now called WCF Data Services
You might have also heard of these as “oData.”
A bridge between PHP and .NET using RESTful services.
- Enables PHP developers to easily use RESTful services to consume data coming from ADO.NET Services
- ADO.NET Data SErvices is a technology used to expose a wide range of data sources through a RESTful service interface now known as oData
- Code generator (PHPDataSvcUtil)
- Reads Data Services metadata
- Creates PHP classes (proxy)
- Rich set of Query & Data manipulations methods
- Easier use of data from the Data Service
- Code generator (PHPDataSvcUtil)
- Project site: http://phpdataservices.codeplex.com/
ADO.NET Data Services: formerly known as Project “Astoria.” More info at http://msdn.microsoft.com/en-us/data/bb931106.aspx
Josh pipes up with, “Can we see some code? This looks pretty complex. I think we’d be able to better visualize what’s going on with code.”
Now showing code examples.
Sample PHP application running on Azure and using oData at: http://ogdiphpsample.cloudapp.net/
Information Card PHP
Enables PHP developers to support information cards for the websites using standards WS-* protocols
|Project Goals:||On-going investment from Microsoft to show interoperability in the identity space with Information Cards using WS-* protocols. This open source project will help web developers support information cards, the primary mechanism for representing user identities in the identity metasystem. Similar projects exist for Java, Ruby on Rails, and C.|
|Technologies:||PHP, SAML, Windows CardSpace|
Samples for integrating with various Microsoft technologies
- PHP CRUD Application Generator: http://sqlcrudphpwizard.codeplex.com/
- Bing 404 Error Toolkit for PHP: http://bing404php.codeplex.com/
- Samples for Using Silverlight with PHP: http://silverlightphp.codeplex.com/
- PHP Samples for Virtual Earth: http://virtualearthphpkit.codeplex.com/
Tutorials for PHP with Silverlight: http://php.miniprojects.org/
- We need a Unix packager for building service packages, currently it works only on Windows
Presented by Tim Heuer.
Showing examples of XAML and XAP files; showing the contents of the XAP file. Basically demystifying what a Silverlight application contains.
“Is there a C/C++ library that you can use to parse XAML?”
“I don’t know, but I’ll find out.”
Showing smooth streaming but also explaining exactly how it works.
Eric asks about key frames and how seeking works. Does it seek to a key frame? What happens if it doesn’t start at a key frame? Tim was unsure how it handles key frames or what kind of compression it uses. He said he can find out if it’s important.
Alison asks about market penetration.
The answer is the same as usual:
“Content is king. If your content is compelling enough, and you can convince your users of that, then they’ll download/install the plug-in.”
“How do you see Silverlight playing with HTML5? There are a number of people who see HTML5 as killing Flash. It will make sense for you to do certain things in HTML5.”
“It’s not here yet. It’s not ratified, and there’re huge TODO blocks in the spec itself.” Until HTML5 is here, then people still need these features and cannot use HTML5 with their customers, so Silverlight makes sense in the mean time.
“My question was: how are you guys factoring in HTML5 into your Silverlight decisions and work?”
Tim: (Short paraphrased answer)
it’s not really something we’re focusing on right now.
“I have developers asking, ‘How can I convert my ASP.NET application to Silverlight?’ and I tell them, ‘You’re thinking about it wrong.’ If there are experiences that are differentiated enough that HTML cannot handle it, then Silverlight is a good alternative, but if it’s something better suited for HTML, then use HTML.”
Competition creates innovation, so we’re innovating and Adobe is now innovating. We’ve done things in Silverlight that Adobe is now working into Flash, and because of us, Adobe is innovating in Flash to create better functionality/features.
Presented by Stephen Walther.
Keith: “Well, it’s called the ASP.NET Ajax Library, so why would anyone else want to use it?”
Stephen: “Yes, and we’re working to change the name. We’ve done a lot of work to make sure it’s not ASP.NET specific, and we’ve done a lot of work to make sure it works with jQuery.”
Joël: “If there’s one thing to take away from this, it’s that you should change the name. I saw it and didn’t even click the link to look at it because I’m not an ASP.NET developer.”
ASP.NET Ajax Library
Rich library for building Ajax applications:
- Compatible with all modern browsers including Microsoft Internet Explorer (6+), Google Chrome, Apple Safari, Opera, and Mozilla Firefox.
- Includes pure client library for ASP.NET MVC, PHP, or pure HTML applications.
CodePlex Foundation Announcement
The ASP.NET Ajax Library was contributed to the CodePlex Foundation.
This enables the ASP.NET Ajax Library project to accept community contribution. Please watch http://www.asp.net/ajaxlibrary for details.
The library is now open source and supported by Microsoft. Microsoft also offers support for jQuery.
ASP.NET Ajax Library Features
- Powerful client data access library
- Rich set of client controls
- Seamless jQuery integration
Now showing example code and demonstration.
Download the ASP.NET Ajax Library at: http://ajax.codeplex.com/
Learn how to use the ASP.NET Ajax Library at: http://www.asp.net/ajaxlibrary
The library is released under the New BSD license.
The PHP Ecosystem, or lack thereof (Marco Tabini)
“There is no PHP community in the way that people tend to think of. There is no all-encompassing group. Most people here deal with PHP proper [core]. Others tend to use PHP incidentally, such as Joomla, WordPress, and Drupal developers, and they don’t see themselves as being in the same community.
“A lot of clients come to us and they no longer ask for solutions in PHP. They no longer ask for solutions for the Web, as well. […] People come to ask for solutions that work, and PHP works. What’s bad is they ask for solutions in Drupal and WordPress just because they’ve heard of these tools.
“PHP developers don’t think of Drupal developers and PHP developers, and Drupal developers, by and large, don’t think of themselves as PHP developers.”
This leaves a void in the community. “My fear is that, in the long run, we’re going to lose talent at the core because that’s not where the money is going to be.”
Discussion ensues. Lot’s of good stuff. Hopefully someone else will blog about this discussion. hint hint
The value of unconferences with and without traditional conferences (Keith Casey)
Keith: “Does everyone know what an unconference is?”
David C.: “It’s a massive party.”
Unconferences are about:
- Rule of two feet (if something sucks, you leave)
- Schedule correction (a way to balance out bad conference selections)
PHP on Windows from the community’s perspective (Liz Smith)
Discussing the history of PHP on Windows and how she got involved in the project.
There are only three people who can build releases for PHP on Windows. The “bus factor” is huge. We need more people who can build PHP on Windows and who can build all the dependencies, as well.
PHPExcel (Maarten Balliauw)
PHPExcel on CodePlex: http://www.phpexcel.net/
- Provides an in-memory spreadsheet engine
- PHP library (PHP 5.1.x and up)
- De-facto standard?
- Great documentation!
- Generate Excel documents on server
- Reporting from PHP apps in different file formats
- Processing existing Excel docs on server
- Importing data from Excel doc
- Re-using business logic from an Excel spreadsheet
Readers and writers
- Readers for Excel 2007, Excel 5, CSV, Serialized format, ODF Calc, etc.
- Writers for Excel 2007, Excel 5, CSV, HTML, PDF, etc.
Now showing a code example.
“There’s also http://phppowerpoint.codeplex.com/ but it’s still in early development.”
What we (Microsoft) need from you
“How can we get feedback from the community throughout the year? Should we set up a quarterly conference call or something?”
“Talk to the user groups.”
“Set up a mailing list. Invite a bunch of these people and others and just keep a dialogue going.”
“The communication needs to be bidirectional. We need to know who’s taking charge over an issue so we can say to others, ‘This person is working on that.’”
Send your DPEs to the user group meetings so that they can be there if those conversations do come up among user group members. Just hang with us, so we know who you are and we can get to you.
- Libraries like PHPExcel for PowerPoint, Word, every office product
- Exchange support
- PHP libraries for services such as Azure need to have better APIs and have more attention from people who do a lot of PHP development
- Work on naming. If an Ajax library has the name “ASP.NET” in it, we probably won’t use it.
- SQL Server: Give us good connectivity from Linux; give us PDO.
WebPI: Is it the right direction? Is it the right thing to be doing?
“Who are you aiming at?”
“It’s good for a single developer who want to deploy a blog for themselves quickly. But it’s not good for a large scale website with a team building it.”
“There’s the potential for value for it to automate things if it progresses beyond what it is now.”
“It needs more.”
“Should we focus it more on the technical developer?”
“You can keep what you have now and still do that.”
“You need to support multiple versions and source control, etc. for technical developers, while still providing what you have now for casual developers.”
“Have an advanced mode.”
“I love the simplicity it has now. Just have an advanced button.”
“It should be even simpler for the normal user.”
“It’s like bringing the web management we’re used to a nice GUI.”
“It’s a poor man’s RPM.”
“Is there something that your customers are asking for now that you need to make your jobs easier?”
“I don’t think we find ourselves in those situations because we know our limitations and we know what we can do.”
“What’s missing on the deploy side?”
Discussion ensues about various deployment techniques.
“We need the private/public key support that tools like SSH use.”
“How important is it and how big of a decision factor is it when thinking about performance issues between PHP on Windows and PHP on Linux.”
“It’s not really an issue any more.”
“Most of us in this room are running 5.3.”
“We’re used to scaling horizontally on Linux machines. If switching to Windows, we’d have to expect more from Windows. Windows needs a better solution for object caching. Memcached doesn’t run well on Windows, and WinCache doesn’t have the object cache yet.”
“How do you do large scale deployment of .NET apps. I don’t know.”
“Pay someone a lot of money.” :-)
“What are the key websites that we need to be listed on?”
“We’ve started a thread on the Google Group for this.”
“What blogs should we be reading and touching base with?”
“Look at who’s on planet-php.net and look at the blog rolls for any of our blogs.”
“I can give you my list.”
“What conferences should we be attending?”
Lot’s of names of conferences thrown out.
Taking the Conversation Home: Microsoft DPE Field – “Let’s Talk”
Presented by Josh Holmes and Peter Laudati.
DPE == Developer & Platform Evangelism
- 1500 folks around the world
- Multiple roles with funky TLA titles
- ~30 community developer evangelists in USA
Community Evangelists: What we do…
- Host and speak at Microsoft events
- Support (with time & $$$) community events
- User groups, code camps, Firestarters, give camps, bar camps, etc.
- Spread awareness and excitement around MS platform & developer technologies
“Ultimately, we’re about the platforms we think are going to help you guys.”
Key to an Evangelist’s heart
Showing a vin diagram.
- Stuff you love to do
- Stuff you’re good at
- Stuff someone will pay you to do
Dream job is at the center where all of these meet.
How we’re measured
- Developer satisfaction
- Developer adoption
- MSDN Roadshow Events: http://msdnevents.com/
- Connected Show Podcast: http://www.connectedshow.com/ (with Peter Laudati and Dmitry Lyalin)
- Community Events: http://www.communitymegaphone.com/
Discussion about how the developer evangelists can help us in our local areas.
Very willing to support PHP user groups with space, pizza, beer, money, etc., depending on the needs and the availability of funds. Don’t hesitate to contact your local community developer evangelist.
Feedback: We want some sort of central DPE website where anyone in the world can check their area on the site and see who is their local community developer evangelist and contact them directly.
In the meantime, just contact Josh, and he’ll find that information for you.
Josh: “How do we make that leap from being ambassadors of goodwill (and people who buy you beer) to being drivers of adoption?”
Cal: “Website Spark is a great example of where you guys can get us involved.”
Lot’s of discussion on how DPEs can help people adopt Windows Server as a deployment platform.
The PHP Channeled Chaos Hour
Using this time to talk to the three different CMSes represented.
Drupal (David Strauss)
“I don’t see myself as part of the PHP community. I’m a member of the Drupal community.”
“How can we get your community (Drupal) working together with the greater PHP community?”
“We need to find some common ground.”
“We (the Drupal community) look at Drupal as a web framework with a bunch of bundled modules in it.”
Points made on the board:
- 80% of Drupal is considered a framework
- DB API
- User API
- Form API
- Templating/them system
- The other 20% on top is the CMS with modules and content
- You can actually turn off most of the CMS functionality and use Drupal primarily as a framework.
- Over the years, more and more core modules that provided interface level functionality have been moved out of the core and are now modules that can be turned off.
“Since you see yourselves as a framework, is there any dialogue going on between the Drupal community and other PHP frameworks?”
“Not really. In fact, most of the Drupal core developers tend to be working more with the Python frameworks.”
“Are you aware of the PHP framework interop group.”
“Larry Garfield from the Drupal project participates in that.”
“At the DrupalCon in DC, the mix was like 10% PHP developers and 90% Drupal configurers.”
“And we’re happy with that mix.”
“How can our user group provide value to Drupal users and vice versa, how can the local Drupal group in our area provide value to PHP users?”
Joomla (Sam Moffett)
“We’re basically Drupal with objects. We like objects. Objects are cool. […] We’re targeting our next version at PHP 5.2. And we’re also aiming to be compatible with 5.3.”
“Have you ever submitted papers to talk at PHP conferences about your framework?”
“At the round table, we talked about how the community seems to be splintering. Developers see themselves as Drupal developers, Joomla developers, WordPress developers, PHP developers, etc. Do you see this, and do you see this as a problem?”
“I don’t see it as splintering because, in order to splinter, they would have had to seen themselves as part of the PHP community to begin with in order to leave it.”
“Well, it’s just that 10% who see themselves as PHP devs that we want involved in the community. How do we get them?”
WordPress (Chris Scott, Mike Pretty)
“When you say the ‘PHP community,’ how do you define the PHP community? What is it?”
“You have to think about it like an onion. There are many layers. You’ve got a very small group of core developers (not all of which are active in the community). Then the next layer out are the conference regulars, speakers, thought leaders, bloggers, authors. Then you’ve got people who are active in their local communities and leaders in their companies and local groups.”
“And beyond that you’ve got anyone who develops with PHP, who may or may not even know about the community. We want to reach these people and evangelize standards and best practices and help them to become better developers.”
“So, the question is how you can take people moving between those layers and engage them.”
Discussion about the WordPress community, business issues surrounding it (it’s very business driven), attitudes among developers, accepting patches from PHP developers, etc.
Day 3 (December 3)
SQL Server Next Gen
NDA content, so no notes from this session.
NDA content, so no notes from this session.
NDA content, so no notes from this session.
Closing Session: Bill Staples and Panel
Not NDA (I think), but I didn’t take notes, so if it’s not NDA and someone else took notes and wants to have them posted here, send them to me.