<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Silverlight:  the art of subsetting</title><link>http://blogs.msdn.com/johngossman/archive/2008/05/01/silverlight-the-art-of-subsetting.aspx</link><description>I am an architect of WPF, both the full desktop version and the subset that provides the UI framework for Silverlight. This subsetting exercise raises challenges I've not run into before when designing software. Simply put, how do we keep the framework</description><dc:language>en-US</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>Dog Breeding &amp;raquo; Silverlight:  the art of subsetting</title><link>http://blogs.msdn.com/johngossman/archive/2008/05/01/silverlight-the-art-of-subsetting.aspx#8447226</link><pubDate>Thu, 01 May 2008 19:37:14 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8447226</guid><dc:creator>Dog Breeding &amp;raquo; Silverlight:  the art of subsetting</dc:creator><description>&lt;p&gt;PingBack from &lt;a rel="nofollow" target="_new" href="http://dogs-pets.info/dog-breeding/?p=929"&gt;http://dogs-pets.info/dog-breeding/?p=929&lt;/a&gt;&lt;/p&gt;
</description></item><item><title>re: Silverlight:  the art of subsetting</title><link>http://blogs.msdn.com/johngossman/archive/2008/05/01/silverlight-the-art-of-subsetting.aspx#8447307</link><pubDate>Thu, 01 May 2008 20:35:42 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8447307</guid><dc:creator>Joe</dc:creator><description>&lt;P&gt;Appreciate the post. &amp;nbsp;I agree it is a difficult problem.&lt;/P&gt;
&lt;P&gt;I don't understand the issue with testing though. &amp;nbsp;Surely if you used the existing WPF code for templating then that would result in less testing - it already works in WPF ! &amp;nbsp;at the moment you support two code bases - which doubles the work. &amp;nbsp;&lt;/P&gt;
&lt;P&gt;Didn't the same apply to getting the framework working initially? &amp;nbsp;A few scattered conditional compliation directives?&lt;/P&gt;
&lt;P&gt;Could you take the same approach for Silverlight? &amp;nbsp;Cross compile the code from WPF. &amp;nbsp;To prevent it from getting too big mark large chunks should be modular and optional. &amp;nbsp;You mention Media.Drawing - make this a separate assembly that can be brought into the application install. &amp;nbsp;If the user doesn't want to rewrite part of their app then they can just include the assembly and keep it as it is. &amp;nbsp;Triggers and other core functionality should be in the core DLL, and bring back the visual/logical tree split.&lt;/P&gt;
&lt;P&gt;I would like to see this apply to other parts of SL2 that are already in the core build to reduce the size. &amp;nbsp;Like DeepZoom and some of the controls that are rarely used. &amp;nbsp;Make it all optional on demand download. &amp;nbsp;&lt;/P&gt;
&lt;P&gt;Is it too late for this now? &amp;nbsp;Are we really talking about SL3 requirements?&lt;/P&gt;</description></item><item><title>re: Silverlight:  the art of subsetting</title><link>http://blogs.msdn.com/johngossman/archive/2008/05/01/silverlight-the-art-of-subsetting.aspx#8447402</link><pubDate>Thu, 01 May 2008 21:34:56 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8447402</guid><dc:creator>Josh Smith</dc:creator><description>&lt;P&gt;Hi John,&lt;/P&gt;
&lt;P&gt;Great post. Thanks for the informative tease.&lt;/P&gt;
&lt;P&gt;You stated: "And in the future, when we add Triggers into Silverlight they are completely compatible with the Parts and States model...providing the best of the two models."&lt;/P&gt;
&lt;P&gt;I question whether having the best of both models results in something superior to "merely" having the best of one. &amp;nbsp;By the way you described it, the Parts and States model seems like a stopgap until triggers are properly implemented in Silverlight. &amp;nbsp;Despite any advantages it might have, once a stopgap solution goes live, it must be supported and continue to exist thereafter. &amp;nbsp;It's a shame to force oneself into a position where one must maintain backward compatibility with a stopgap solution.&lt;/P&gt;
&lt;P&gt;It's exciting to watch this process unfold. &amp;nbsp;All eyes are on you...keep up the awesome work (please)! :)&lt;/P&gt;
&lt;P&gt;Josh&lt;/P&gt;</description></item><item><title>re: Silverlight:  the art of subsetting</title><link>http://blogs.msdn.com/johngossman/archive/2008/05/01/silverlight-the-art-of-subsetting.aspx#8448345</link><pubDate>Fri, 02 May 2008 05:27:48 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8448345</guid><dc:creator>JohnGossman</dc:creator><description>&lt;p&gt;To Josh:&lt;/p&gt;
&lt;p&gt;The Parts and States model is not a stop-gap...as I said, I believe it adds structure to the Template that is useful. &amp;nbsp;When we add Triggers, I'm not suggesting just adding Triggers with Setters, I'm also suggesting a &amp;quot;GoToState&amp;quot; custom Action, so we can pull the code that triggers the State transitions out of the controls and into the Template, but keep the structure available. &amp;nbsp;&lt;/p&gt;
&lt;p&gt;To really see the power though, you'll have to see the next iteration.&lt;/p&gt;
</description></item><item><title>re: Silverlight:  the art of subsetting</title><link>http://blogs.msdn.com/johngossman/archive/2008/05/01/silverlight-the-art-of-subsetting.aspx#8448353</link><pubDate>Fri, 02 May 2008 05:29:28 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8448353</guid><dc:creator>JohnGossman</dc:creator><description>&lt;p&gt;Joe,&lt;/p&gt;
&lt;p&gt;Desktop WPF was written as a Windows component with no size or portability concerns. &amp;nbsp;As a result, when we started building Silverlight we found it impractical to simply conditionally compile the code and get a smaller version. &amp;nbsp;Most of the code in the WPF framework that is in Silverlight is new.&lt;/p&gt;
</description></item><item><title>re: Silverlight:  the art of subsetting</title><link>http://blogs.msdn.com/johngossman/archive/2008/05/01/silverlight-the-art-of-subsetting.aspx#8448846</link><pubDate>Fri, 02 May 2008 07:33:52 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8448846</guid><dc:creator>Oran</dc:creator><description>&lt;p&gt;So is the new teaser Parts and States model ready to roll today in WPF since it uses existing APIs, it's just Silverlight that's the hold-up? &amp;nbsp;Or will WPF need enhancements to take best advantage of it?&lt;/p&gt;
&lt;p&gt;I'm really curious to see if Silverlight becomes the &amp;quot;strangler app&amp;quot; of WPF, with WPF getting some of the innovation hand-me-downs from Silverlight (months later, sort of like Office on Mac) until eventually everyone agrees that 99% of new apps are written Silverlight-first anyway, so we might as well send WPF to Branson to perform alongside WinForms to a bunch of technology-hospice developers. &amp;nbsp;Silverlight-first innovation (as opposed to WPF-first) makes a ton of sense as far as minimizing the number of new subsetting issues, but it leaves WPF as a sitting duck that will first be marginalized, then eventually overtaken by Silverlight. &amp;nbsp;As far as I can tell, WPF is &amp;quot;done&amp;quot;, just like COM is &amp;quot;done&amp;quot;. &amp;nbsp;Not dead, just done. &amp;nbsp;Sliverlight is getting all the love, and I bet it's about to get even more love as the preferred UI and deployment package of the &amp;quot;internet OS,&amp;quot; (Live Mesh) while WPF will be the preferred UI of the &amp;quot;classic OS.&amp;quot;&lt;/p&gt;
&lt;p&gt;Sorry to sound so negative, it just seems like a shame that 5 years from now 90% of .NET developers will be writing Silverlight apps, while maybe 5% will have written WPF apps. &amp;nbsp;Of course if that will be the case, I guess it's a good thing Silverlight is getting so much love.&lt;/p&gt;</description></item><item><title>re: Silverlight:  the art of subsetting</title><link>http://blogs.msdn.com/johngossman/archive/2008/05/01/silverlight-the-art-of-subsetting.aspx#8450574</link><pubDate>Fri, 02 May 2008 16:55:33 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8450574</guid><dc:creator>JohnGossman</dc:creator><description>&lt;p&gt;Oran,&lt;/p&gt;
&lt;p&gt;There will be times when we add something to Silverlight first, but the desktop Client is a long ways ahead of the web client in functionality and we'll be continuing to add stuff there too. &amp;nbsp; Deployment concerns are always going to limit how much we add to Silverlight...so I don't see it &amp;quot;overtaking&amp;quot; the desktop version for at least a decade.&lt;/p&gt;
</description></item><item><title>re: Silverlight:  the art of subsetting</title><link>http://blogs.msdn.com/johngossman/archive/2008/05/01/silverlight-the-art-of-subsetting.aspx#8451239</link><pubDate>Fri, 02 May 2008 20:36:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8451239</guid><dc:creator>Joe</dc:creator><description>&lt;p&gt;John&lt;/p&gt;
&lt;p&gt;I know I'm simplifying things, but you said that WPF was written as a desktop platform with no size limitations - but couldn't the same be said of .NET. &amp;nbsp;You managed to pull it off for that. &amp;nbsp;It just seems a shame that you couldn't go the last mile and do it the same for the UI portion too.&lt;/p&gt;
&lt;p&gt;Sure there are OS specific parts in WPF - but this also applies to the core framework. &amp;nbsp;Just conditionally compile them out.&lt;/p&gt;
&lt;p&gt;The problem is that this becomes a long term concern. &amp;nbsp;There will always be differences in these two platforms and those differences are going to cause a big headache for developers. &amp;nbsp;What you're seeing now is the tip of the iceberg. &amp;nbsp;&lt;/p&gt;
&lt;p&gt;I've tried porting some of my WPF code already to SL2 B1 and frankly gave up. &amp;nbsp;So much code needed to change it was basically becoming a rewrite. &amp;nbsp;&lt;/p&gt;</description></item><item><title>re: Silverlight:  the art of subsetting</title><link>http://blogs.msdn.com/johngossman/archive/2008/05/01/silverlight-the-art-of-subsetting.aspx#8451370</link><pubDate>Fri, 02 May 2008 20:59:21 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8451370</guid><dc:creator>JohnGossman</dc:creator><description>&lt;p&gt;Joe, believe me, we very, very much wanted to use the same code for WPF on desktop and web...but it was impractical. &amp;nbsp;Many other parts of .NET are much less platform dependent. &amp;nbsp;&lt;/p&gt;
</description></item><item><title>re: Silverlight:  the art of subsetting</title><link>http://blogs.msdn.com/johngossman/archive/2008/05/01/silverlight-the-art-of-subsetting.aspx#8451382</link><pubDate>Fri, 02 May 2008 21:00:59 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8451382</guid><dc:creator>JohnGossman</dc:creator><description>&lt;p&gt;I should add, we fixed a large number of incompatibilties between desktop WPF and Silverlight between Beta1 and Beta2 (stay tuned).&lt;/p&gt;
</description></item><item><title>re: Silverlight:  the art of subsetting</title><link>http://blogs.msdn.com/johngossman/archive/2008/05/01/silverlight-the-art-of-subsetting.aspx#8451926</link><pubDate>Fri, 02 May 2008 23:52:49 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8451926</guid><dc:creator>Joe</dc:creator><description>&lt;p&gt;Thanks John&lt;/p&gt;
&lt;p&gt;I'm looking forward to beta 2.&lt;/p&gt;
&lt;p&gt;Maybe somebody from the team could provide some best practices of maintaining a WPF and SL tree in parallel. &amp;nbsp;I mean sharing source code, including resources that are common etc...&lt;/p&gt;
&lt;p&gt;Once you also freeze your feature list I would like to see a categorical list of differences - just to save time when porting and trying to track down something that just doesn't seem to work, on either side.&lt;/p&gt;
&lt;p&gt;Forgive the ranting, you are producing some great technology - it's just a little frustrating on the edges.&lt;/p&gt;</description></item><item><title>re: Silverlight:  the art of subsetting</title><link>http://blogs.msdn.com/johngossman/archive/2008/05/01/silverlight-the-art-of-subsetting.aspx#8454723</link><pubDate>Sat, 03 May 2008 14:36:08 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8454723</guid><dc:creator>Neil Mosafi</dc:creator><description>&lt;p&gt;John&lt;/p&gt;
&lt;p&gt;Thanks so much for this post. &amp;nbsp;I have read lots of posts which describe the &amp;quot;what&amp;quot; about Silverlight but none of them describe the &amp;quot;why&amp;quot;!&lt;/p&gt;
&lt;p&gt;I feel much more comfortable knowing that you are aware of some of the issues and actively working on them for beta 2 - your comment saying you already fixed a large number of incompatibilties between desktop WPF and Silverlight between Beta1 and Beta2 made my mouth water in anticipation!&lt;/p&gt;
&lt;p&gt;Any idea of a rough date? ;-)&lt;/p&gt;
&lt;p&gt;Regards&lt;/p&gt;
&lt;p&gt;Neil&lt;/p&gt;</description></item><item><title>re: Silverlight:  the art of subsetting</title><link>http://blogs.msdn.com/johngossman/archive/2008/05/01/silverlight-the-art-of-subsetting.aspx#8455645</link><pubDate>Sat, 03 May 2008 20:09:38 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8455645</guid><dc:creator>John Lam</dc:creator><description>&lt;p&gt;Wouldn't some kind of a tool like a WPF 'lint' be very useful in the scenarios that you described?&lt;/p&gt;</description></item><item><title>re: Silverlight:  the art of subsetting</title><link>http://blogs.msdn.com/johngossman/archive/2008/05/01/silverlight-the-art-of-subsetting.aspx#8456605</link><pubDate>Sun, 04 May 2008 00:44:54 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8456605</guid><dc:creator>Joe S</dc:creator><description>&lt;p&gt;We have already dropped a couple Silverlight applications we had originally proposed into contracts for future applications. There are quite a few reasons for this. A lot of the developers we have already know WPF which cost our company money to get them up to speed. Seeing as how Silverlight is deciding to require different coding techniques specifically with the control templates and how that impacts both our developers and designers, it's too much a financial liability on the company now to keep retraining people on like technologies which require specifically different skill sets. I am also a developer and i must say that after using the new control templating/parts model, its awful. It takes far too long to accomplish what was easily done in WPF. It requires the designer to jump into the code which is not somewhere they should be. I keep hearing about how &amp;quot;tools&amp;quot; will be easier to write with the new control template/parts model and frankly, I don't care about the tools. I care about the way the technology works, and to me, the parts model is cumbersome and I hope that it is fixed/changed back to the way it works in WPF.&lt;/p&gt;</description></item><item><title>re: Silverlight:  the art of subsetting</title><link>http://blogs.msdn.com/johngossman/archive/2008/05/01/silverlight-the-art-of-subsetting.aspx#8472730</link><pubDate>Thu, 08 May 2008 19:31:26 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8472730</guid><dc:creator>Mark</dc:creator><description>&lt;p&gt;John,&lt;/p&gt;
&lt;p&gt;Its really nice to hear from somebody making the decisions about the tradeoffs involved in bringin Silverlight out. &amp;nbsp;Your explanation on the Template Model and some of the background involved is really helpful.&lt;/p&gt;
&lt;p&gt;However, there is one pain point that I wonder if you could go into: Why does SL not have an ICommand interface.&lt;/p&gt;
&lt;p&gt;I understand the complexity of RoutedEvents and the debate about event propagation through a visual tree verses the application logic as you mention in &lt;a rel="nofollow" target="_new" href="http://blogs.msdn.com/johngossman/archive/2008/02/06/more-on-mvc-and-m-v-vm.aspx"&gt;http://blogs.msdn.com/johngossman/archive/2008/02/06/more-on-mvc-and-m-v-vm.aspx&lt;/a&gt; &amp;nbsp;however, as you also indicate in that post you actually do like the ICommand interface itself.&lt;/p&gt;
&lt;p&gt;Why isn't the interface itself defined. &amp;nbsp;That would let me implement my own ICommand approach or more easily integrate with things like Prism. &amp;nbsp;With the core interface missing however, it leaves one of the fundement building blocks missing and from what you said its not the ICommand interface that you have issues with but the implementation. &amp;nbsp;&lt;/p&gt;
&lt;p&gt;I also understand the space and testing constraints but how much space and testing time would be consumed by including an ICommand interface with ZERO implementing code just to permit easy duplication of the programming pattern. &amp;nbsp;If it's the programming pattern itself that you want to prevent, can you perhaps explain a little about why that is?&lt;/p&gt;
&lt;p&gt;Thanks! &lt;/p&gt;</description></item><item><title>re: Silverlight:  the art of subsetting</title><link>http://blogs.msdn.com/johngossman/archive/2008/05/01/silverlight-the-art-of-subsetting.aspx#8474012</link><pubDate>Thu, 08 May 2008 22:44:31 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8474012</guid><dc:creator>JohnGossman</dc:creator><description>&lt;p&gt;Mark,&lt;/p&gt;
&lt;p&gt;Good question about ICommand. &amp;nbsp;We definitely want to promote, not prevent, the programming pattern. &amp;nbsp;That said, commanding was on the bubble for Silverlight in favor of staffing must-have, user cannot duplicate features. &amp;nbsp;You can of course implement your own ICommand interface and use it. &amp;nbsp;I intend to prototype this and blog it, including use the Attached Behavior pattern to hook controls to Commands even though the built-in controls do not support them.&lt;/p&gt;
&lt;p&gt;Stay tuned.&lt;/p&gt;
</description></item><item><title>WPF/Silverlight/XAML Web News - 2008/05/09</title><link>http://blogs.msdn.com/johngossman/archive/2008/05/01/silverlight-the-art-of-subsetting.aspx#8479610</link><pubDate>Fri, 09 May 2008 14:59:52 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8479610</guid><dc:creator>Rob Relyea - Xamlified</dc:creator><description>&lt;p&gt;WPF Controls Emphess.Net: A MenuKiller Control - this article is a work in progress detailing how to&lt;/p&gt;
</description></item><item><title>VisualStateManager for desktop WPF</title><link>http://blogs.msdn.com/johngossman/archive/2008/05/01/silverlight-the-art-of-subsetting.aspx#8844500</link><pubDate>Sat, 09 Aug 2008 01:31:42 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8844500</guid><dc:creator>Tales from the Smart Client</dc:creator><description>&lt;p&gt;As I’ve described before , we introduced the new VisualStateManager concept into Silverlight WPF before&lt;/p&gt;
</description></item></channel></rss>