<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:pingback="http://madskills.com/public/xml/rss/module/pingback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" version="2.0">
  <channel>
    <title>Rockford Lhotka</title>
    <link>http://www.lhotka.net/weblog/</link>
    <description>Creator of the CSLA .NET framework</description>
    <language>en-us</language>
    <copyright>Marimer LLC</copyright>
    <lastBuildDate>Tue, 07 May 2013 04:30:54 GMT</lastBuildDate>
    <generator>newtelligence dasBlog 2.0.7226.0</generator>
    <managingEditor>rocky@lhotka.net</managingEditor>
    <webMaster>rocky@lhotka.net</webMaster>
    <atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/RockfordLhotka" /><feedburner:info xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" uri="rockfordlhotka" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item>
      <trackback:ping>http://www.lhotka.net/weblog/Trackback.aspx?guid=5a2db6bf-9503-4701-9d90-d6f0bdf47703</trackback:ping>
      <pingback:server>http://www.lhotka.net/weblog/pingback.aspx</pingback:server>
      <pingback:target>http://www.lhotka.net/weblog/PermaLink,guid,5a2db6bf-9503-4701-9d90-d6f0bdf47703.aspx</pingback:target>
      <dc:creator>Rockford Lhotka</dc:creator>
      <wfw:comment>http://www.lhotka.net/weblog/CommentView,guid,5a2db6bf-9503-4701-9d90-d6f0bdf47703.aspx</wfw:comment>
      <wfw:commentRss>http://www.lhotka.net/weblog/SyndicationService.asmx/GetEntryCommentsRss?guid=5a2db6bf-9503-4701-9d90-d6f0bdf47703</wfw:commentRss>
      <slash:comments>6</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <a href="http://www.zdnet.com/microsoft-more-than-100-million-windows-8-licenses-sold-7000014957/">Mary
Jo reports</a> that Windows 8 sales are roughly on par with Windows 7 sales. Which
is good news for Windows 8, because Microsoft said (at the time) that Windows 7 was
the fastest selling OS to that point.
</p>
        <p>
She also points out that actual <em>usage</em> of Win8 isn’t terribly high at this
point – which isn’t at all surprising (see my blog post on <a href="http://www.lhotka.net/weblog/IsWindows8ASuccess.aspx">if
Windows 8 is a success</a>).
</p>
        <p>
The real value of the numbers just provided by Microsoft is that they are an apples
to apples comparison between Win7 and Win8, and that they demonstrate that Win8 is
following roughly the same track as Win7 in terms of production and sales.
</p>
        <p>
That’s good news, given that Win7 is (by nearly any measure) extremely successful,
and is considered by many people to be the best OS Microsoft has released. Windows
8 on an x86 machine can basically be viewed as a faster version of Windows 7, plus
the ability to run WinRT apps, and so I pretty much think of Windows 8 as a slight
improvement over the already excellent Windows 7.
</p>
        <p>
As Mary Jo notes, we don’t know if the 100 million figure includes Windows RT. At
this point I’m not sure if that really matters – at least not from a business app
dev perspective. Windows RT can only run WinRT (Windows Runtime) apps, and the WinRT
dev platform is too new and immature to risk targeting it when building large enterprise
apps (not to mention the <a href="http://www.lhotka.net/weblog/Windows8WinRTLicensingIdeas.aspx">side-loading
cost issues</a>).
</p>
        <p>
At this point most organizations appear to be building new smart client apps using
WPF, and of course they continue to maintain a great many Windows Forms apps. The
strength of Windows 8, as I see it, is that it remains an extremely relevant and potent
business app platform via its desktop mode, which runs Win32/.NET apps at least as
well as its predecessor.
</p>
        <p>
If Microsoft resolves the side-loading cost issues so licensing and deployment becomes
reasonable for small, medium, and large organizations I do think WinRT has a reasonable
shot at being the successor to Win32/.NET for business developers. In another version
or two it should stabilize and mature to the point that it is pretty comparable to
WPF, and thus is attractive and useful to C#/XAML developers. That’ll probably take
a couple years, which is also the timeframe that corporate IT groups will probably
be willing to consider upgrading from Windows 7 to Windows 8.
</p>
        <p>
In summary: good Windows 8 sales today means that betting on WPF for smart client
development should be pretty safe, and will hopefully have a decent migration path
to WinRT in 2-3 years.
</p>
        <img width="0" height="0" src="http://www.lhotka.net/weblog/aggbug.ashx?id=5a2db6bf-9503-4701-9d90-d6f0bdf47703" />
      <xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/RockfordLhotka/~4/FGA7fFWsW6g" height="1" width="1" /></body>
      <title>Good Windows 8 sales</title>
      <guid isPermaLink="false">http://www.lhotka.net/weblog/PermaLink,guid,5a2db6bf-9503-4701-9d90-d6f0bdf47703.aspx</guid>
      <link>http://www.lhotka.net/weblog/GoodWindows8Sales.aspx</link>
      <pubDate>Tue, 07 May 2013 04:30:54 GMT</pubDate>
      <description>&lt;p&gt;
&lt;a href="http://www.zdnet.com/microsoft-more-than-100-million-windows-8-licenses-sold-7000014957/"&gt;Mary
Jo reports&lt;/a&gt; that Windows 8 sales are roughly on par with Windows 7 sales. Which
is good news for Windows 8, because Microsoft said (at the time) that Windows 7 was
the fastest selling OS to that point.
&lt;/p&gt;
&lt;p&gt;
She also points out that actual &lt;em&gt;usage&lt;/em&gt; of Win8 isn’t terribly high at this
point – which isn’t at all surprising (see my blog post on &lt;a href="http://www.lhotka.net/weblog/IsWindows8ASuccess.aspx"&gt;if
Windows 8 is a success&lt;/a&gt;).
&lt;/p&gt;
&lt;p&gt;
The real value of the numbers just provided by Microsoft is that they are an apples
to apples comparison between Win7 and Win8, and that they demonstrate that Win8 is
following roughly the same track as Win7 in terms of production and sales.
&lt;/p&gt;
&lt;p&gt;
That’s good news, given that Win7 is (by nearly any measure) extremely successful,
and is considered by many people to be the best OS Microsoft has released. Windows
8 on an x86 machine can basically be viewed as a faster version of Windows 7, plus
the ability to run WinRT apps, and so I pretty much think of Windows 8 as a slight
improvement over the already excellent Windows 7.
&lt;/p&gt;
&lt;p&gt;
As Mary Jo notes, we don’t know if the 100 million figure includes Windows RT. At
this point I’m not sure if that really matters – at least not from a business app
dev perspective. Windows RT can only run WinRT (Windows Runtime) apps, and the WinRT
dev platform is too new and immature to risk targeting it when building large enterprise
apps (not to mention the &lt;a href="http://www.lhotka.net/weblog/Windows8WinRTLicensingIdeas.aspx"&gt;side-loading
cost issues&lt;/a&gt;).
&lt;/p&gt;
&lt;p&gt;
At this point most organizations appear to be building new smart client apps using
WPF, and of course they continue to maintain a great many Windows Forms apps. The
strength of Windows 8, as I see it, is that it remains an extremely relevant and potent
business app platform via its desktop mode, which runs Win32/.NET apps at least as
well as its predecessor.
&lt;/p&gt;
&lt;p&gt;
If Microsoft resolves the side-loading cost issues so licensing and deployment becomes
reasonable for small, medium, and large organizations I do think WinRT has a reasonable
shot at being the successor to Win32/.NET for business developers. In another version
or two it should stabilize and mature to the point that it is pretty comparable to
WPF, and thus is attractive and useful to C#/XAML developers. That’ll probably take
a couple years, which is also the timeframe that corporate IT groups will probably
be willing to consider upgrading from Windows 7 to Windows 8.
&lt;/p&gt;
&lt;p&gt;
In summary: good Windows 8 sales today means that betting on WPF for smart client
development should be pretty safe, and will hopefully have a decent migration path
to WinRT in 2-3 years.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.lhotka.net/weblog/aggbug.ashx?id=5a2db6bf-9503-4701-9d90-d6f0bdf47703" /&gt;</description>
      <comments>http://www.lhotka.net/weblog/CommentView,guid,5a2db6bf-9503-4701-9d90-d6f0bdf47703.aspx</comments>
      <category>Windows 8</category>
      <category>WinRT</category>
    </item>
    <item>
      <trackback:ping>http://www.lhotka.net/weblog/Trackback.aspx?guid=4ffd45fa-c9d3-46f3-a98c-4622efb7a271</trackback:ping>
      <pingback:server>http://www.lhotka.net/weblog/pingback.aspx</pingback:server>
      <pingback:target>http://www.lhotka.net/weblog/PermaLink,guid,4ffd45fa-c9d3-46f3-a98c-4622efb7a271.aspx</pingback:target>
      <dc:creator>Rockford Lhotka</dc:creator>
      <wfw:comment>http://www.lhotka.net/weblog/CommentView,guid,4ffd45fa-c9d3-46f3-a98c-4622efb7a271.aspx</wfw:comment>
      <wfw:commentRss>http://www.lhotka.net/weblog/SyndicationService.asmx/GetEntryCommentsRss?guid=4ffd45fa-c9d3-46f3-a98c-4622efb7a271</wfw:commentRss>
      <slash:comments>3</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
This question keeps floating around the Internet, and I thought I’d give my viewpoint.
</p>
        <p>
Obviously I have no more intel on sales numbers than anyone else (which means pretty
much nothing). So anything anyone says at this point is pretty much speculation, and
that includes me too.
</p>
        <p>
So rather than speculate uselessly, let me provide a bit of narrative.
</p>
        <p>
Almost nobody buys operating systems. This is a truth that has existed since the dawn
of the concept of an operating system. Operating systems exist as an abstraction over
the hardware that allow developers to build applications without having to deal with
the low-level details of interacting with hardware.
</p>
        <p>
Of course over the past couple decades “operating system” has come to include a lot
of things. At a minimum these days people expect the OS to include drivers for every
type of device ever invented (or to be invented), a nice user interface, and a set
of pre-installed “first party” apps. None of that stuff actually <em>is</em> the OS,
but most people view it as part and parcel.
</p>
        <p>
Even so, very few people buy an OS. They buy a device (computer, ultrabook, tablet,
phone) because the device enables them to do something useful. More precisely the
device allows them to run software (apps) that do something useful.
</p>
        <p>
(I’ll freely admit that I’m biased. As a software developer, I do tend to see software
as the most important part of this whole picture. And I think I’m correct, because
if you give anyone a device and tell them they can’t install any software on that
device I can pretty much guarantee you that they won’t be able to use the device for
much of anything.)
</p>
        <p>
I’d also suggest that there are two broad categories of “person” in this discussion.
</p>
        <p>
There are regular individuals like you and me. We buy devices ourselves, investing
hundreds or thousands of dollars so we can do things like access the Internet, write
letters, manage home budgets, send email, play games, etc. Our motivations in buying
a device are to gain access to the apps that allow us to do those things we consider
worthwhile in life – whatever that might be for each of us. And yes, people like me
also get joy out of the device itself because we’re geeks, but most people just see
these things as extremely useful tools or toys.
</p>
        <p>
There are organizations (which are also apparently “people” thanks to Citizens United).
They buy devices for their employees so the employees can do things that provide productivity
and value to the organization. Some organizations are OK with employees using those
devices for personal reasons, others aren’t. In almost no case does an organization
buy devices other than because an employee needs the device to perform important aspects
of their job.
</p>
        <p>
I keep running into people who think there’s no difference between these scenarios.
And maybe I’m a little slow, but I really struggle to see how organizations are going
to start buying (and supporting) devices outside the scope of enabling employees to
be productive. Nor do I see how dock workers, administrative assistants, lab technicians,
and other employees are going to start purchasing devices for the intent of using
them at work. Actual human people buy devices to make their personal lives better,
not because they intend on using them as an alternative for a work-supplied device.
</p>
        <p>
(In other words BYOD is pretty much bunk – but that’s another blog post.)
</p>
        <p>
To judge the success of Windows 8 then, one must evaluate it in the context of people
buying devices for their own use, and organizations buying devices for their employee’s
use.
</p>
        <p>
 
</p>
        <p>
From what I’ve seen there is some resistance on the part of people in terms of buying
Windows 8. On the tablet side of things there aren’t a lot of apps, and people buy
these devices for apps, not the device itself. On the ultrabook, laptop, and desktop
side of things people buy a PC because they want to run PC software – all of which
runs on Windows 7 just fine, so there’s no obvious reason to go to Windows 8. But
there is an obvious reason <em>not</em> to go to Windows 8: everyone knows it is different,
and people fear change.
</p>
        <p>
So if I’m a regular person looking to buy a tablet, I’ll probably gravitate toward
the tablet with the most apps – hence an iPad or perhaps a Kindle Fire. And if I’m
a regular person looking for personal productivity with Office, CAD software, or gaming,
I’ll be perfectly happy with Windows 7 (or even Vista) as long as my current computer
keeps working.
</p>
        <p>
Please note that I am <em>personally</em> not a regular person in this context. I’m
a geek, and thus have been running Windows 8 since long before it was released. But
I have sat in restaurants and overheard conversations about Windows 8 by random people
– conversations that lead me to be pretty confident that my previous paragraph is
correct.
</p>
        <p>
None of this says that people won’t slowly adopt Windows 8 as their existing computers
need replacing, because they probably will. And as more people actually start <em>using</em> Windows
8 and tell their friends and neighbors that it really isn’t that scary, then the fear
of change will fade. And with any luck the number of apps available for WinRT will
grow relatively fast so people will consider buying Windows 8 tablets because they
feel confident those devices have good and useful apps.
</p>
        <p>
Does this mean Windows 8 is a success or failure? I don’t know. We are in uncharted
territory to some degree, because today’s computers (with their i3, i5 and i7 processors)
are essentially identical in performance to computers from three years ago. For the
first time in recent memory (and perhaps ever) computers have stopped getting faster,
eliminating one of the primary reasons why people would buy a new computer. Now the
only reason to buy a new computer is a complete failure of your existing computer,
and computers often last a very long time…
</p>
        <p>
In other words, Windows 8 adoption in the personal space might be slower than in the
past (we don’t really know). But if it is, I strongly suspect one major factor has
less to do with Windows 8 than the reality that few people are motivated to spend
hundreds of dollars to buy a computer that isn’t any faster than the one they already
have.
</p>
        <p>
 
</p>
        <p>
On the organizational side of things the dynamic is entirely different. Organizations
try to minimize the number of device types, operating systems, and operating system
versions because it is <em>extremely</em> expensive to support more than one. Organizations
use “apps” (applications, or enterprise software) that is required for the organization
to function. When those apps fail the business loses money by the second – often many
thousands of dollars per second. Upgrading from Windows X to Windows Y is <em>never</em> done
without extensive testing to ensure those important apps work on the new operating
system version. And such upgrades are done according to an orchestrated plan that
minimizes the time the organization is forced to support both versions.
</p>
        <p>
This is nothing new. This is the reality of enterprise computing that has existed
for as long as I can recall (thus dating back well more than 2 decades).
</p>
        <p>
Strangely, I’ve had people argue that this dynamic is no longer true. That organizations
are now going to adopt BYOD, even though that directly means supporting <em>numerous</em> devices,
operating systems, and operating system versions all at the same time. I’m not sure
what these people are smoking, nor am I sure I want to try it because I think whatever
they’ve smoked caused some brain damage. But I could be wrong – perhaps organizations
are ready to radically increase their IT support costs in order to allow employees
to use random hardware devices and operating systems? Or perhaps there is no increased
cost to IT because (as one person told me) it will now be the employee’s responsibility
to ensure they have a working device at all times – thus all IT support costs will
be born by the end users. Something I’m sure will thrill the minimum wage workers
in the warehouses who’ll apparently now have to buy and support computers they’d never
have purchased before?!?
</p>
        <p>
Back in the world of the sane, what is actually happening is that a great many (most?)
organizations are just now migrating from Windows 2000 or Windows XP to Windows 7.
This is because those older operating systems are off support, or will be off support
in April 2014. No more bug fixes. No more security patches. Nothing. I truly pity
any poor souls left on XP a year from now.
</p>
        <p>
This migration from XP to 7 is not cheap. It is not only an IT issue in terms of upgrading
hardware, drivers, and operating system installs. It usually also means updating or
replacing ancient enterprise software that was written in VB6 or PowerBuilder or other
technologies that haven’t been current for many years.
</p>
        <p>
As a result, almost no organizations even have Windows 8 on their radar at all. Virtually
nobody is planning for a Windows 8 migration, because they are just now getting to
Windows 7. In fact, my informal polling while speaking at conferences around the world
is that nobody expects to move to Windows 8 until 3+ years from now.
</p>
        <p>
Does this mean Windows 8 is a failure? Of course not. Remember, these organizations
are <em>just now moving from XP to 7</em>. Windows 7 was released in 2009, and only
eclipsed XP in 2012 in terms of installs.
</p>
        <p>
Following that time schedule, we won’t know of Windows 8 is a success or failure until
around 3 years from now: in 2015.
</p>
        <p>
 
</p>
        <p>
In summary, is Windows 8 a success or failure? I can’t say. Nor can anyone else, even
though a lot of people (including myself) speculate about it quite a lot <img class="wlEmoticon wlEmoticon-smile" style="border-top-style: none; border-left-style: none; border-bottom-style: none; border-right-style: none" alt="Smile" src="http://www.lhotka.net/weblog/content/binary/Windows-Live-Writer/Is-Windows-8-a-success_F70D/wlEmoticon-smile_2.png" /></p>
        <p>
The space to watch is the personal/individual computing space, because that’ll move
somewhat faster than the organizational space.
</p>
        <p>
Like <em>every previous version of Windows</em>, we won’t know the success or failure
of this version until 3+ years after its launch, because enterprises always move at
a stately (if not glacial) pace.
</p>
        <img width="0" height="0" src="http://www.lhotka.net/weblog/aggbug.ashx?id=4ffd45fa-c9d3-46f3-a98c-4622efb7a271" />
      <xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/RockfordLhotka/~4/WPzs5gRmqFA" height="1" width="1" /></body>
      <title>Is Windows 8 a success?</title>
      <guid isPermaLink="false">http://www.lhotka.net/weblog/PermaLink,guid,4ffd45fa-c9d3-46f3-a98c-4622efb7a271.aspx</guid>
      <link>http://www.lhotka.net/weblog/IsWindows8ASuccess.aspx</link>
      <pubDate>Fri, 03 May 2013 04:39:31 GMT</pubDate>
      <description>&lt;p&gt;
This question keeps floating around the Internet, and I thought I’d give my viewpoint.
&lt;/p&gt;
&lt;p&gt;
Obviously I have no more intel on sales numbers than anyone else (which means pretty
much nothing). So anything anyone says at this point is pretty much speculation, and
that includes me too.
&lt;/p&gt;
&lt;p&gt;
So rather than speculate uselessly, let me provide a bit of narrative.
&lt;/p&gt;
&lt;p&gt;
Almost nobody buys operating systems. This is a truth that has existed since the dawn
of the concept of an operating system. Operating systems exist as an abstraction over
the hardware that allow developers to build applications without having to deal with
the low-level details of interacting with hardware.
&lt;/p&gt;
&lt;p&gt;
Of course over the past couple decades “operating system” has come to include a lot
of things. At a minimum these days people expect the OS to include drivers for every
type of device ever invented (or to be invented), a nice user interface, and a set
of pre-installed “first party” apps. None of that stuff actually &lt;em&gt;is&lt;/em&gt; the OS,
but most people view it as part and parcel.
&lt;/p&gt;
&lt;p&gt;
Even so, very few people buy an OS. They buy a device (computer, ultrabook, tablet,
phone) because the device enables them to do something useful. More precisely the
device allows them to run software (apps) that do something useful.
&lt;/p&gt;
&lt;p&gt;
(I’ll freely admit that I’m biased. As a software developer, I do tend to see software
as the most important part of this whole picture. And I think I’m correct, because
if you give anyone a device and tell them they can’t install any software on that
device I can pretty much guarantee you that they won’t be able to use the device for
much of anything.)
&lt;/p&gt;
&lt;p&gt;
I’d also suggest that there are two broad categories of “person” in this discussion.
&lt;/p&gt;
&lt;p&gt;
There are regular individuals like you and me. We buy devices ourselves, investing
hundreds or thousands of dollars so we can do things like access the Internet, write
letters, manage home budgets, send email, play games, etc. Our motivations in buying
a device are to gain access to the apps that allow us to do those things we consider
worthwhile in life – whatever that might be for each of us. And yes, people like me
also get joy out of the device itself because we’re geeks, but most people just see
these things as extremely useful tools or toys.
&lt;/p&gt;
&lt;p&gt;
There are organizations (which are also apparently “people” thanks to Citizens United).
They buy devices for their employees so the employees can do things that provide productivity
and value to the organization. Some organizations are OK with employees using those
devices for personal reasons, others aren’t. In almost no case does an organization
buy devices other than because an employee needs the device to perform important aspects
of their job.
&lt;/p&gt;
&lt;p&gt;
I keep running into people who think there’s no difference between these scenarios.
And maybe I’m a little slow, but I really struggle to see how organizations are going
to start buying (and supporting) devices outside the scope of enabling employees to
be productive. Nor do I see how dock workers, administrative assistants, lab technicians,
and other employees are going to start purchasing devices for the intent of using
them at work. Actual human people buy devices to make their personal lives better,
not because they intend on using them as an alternative for a work-supplied device.
&lt;/p&gt;
&lt;p&gt;
(In other words BYOD is pretty much bunk – but that’s another blog post.)
&lt;/p&gt;
&lt;p&gt;
To judge the success of Windows 8 then, one must evaluate it in the context of people
buying devices for their own use, and organizations buying devices for their employee’s
use.
&lt;/p&gt;
&lt;p&gt;
&amp;#160;
&lt;/p&gt;
&lt;p&gt;
From what I’ve seen there is some resistance on the part of people in terms of buying
Windows 8. On the tablet side of things there aren’t a lot of apps, and people buy
these devices for apps, not the device itself. On the ultrabook, laptop, and desktop
side of things people buy a PC because they want to run PC software – all of which
runs on Windows 7 just fine, so there’s no obvious reason to go to Windows 8. But
there is an obvious reason &lt;em&gt;not&lt;/em&gt; to go to Windows 8: everyone knows it is different,
and people fear change.
&lt;/p&gt;
&lt;p&gt;
So if I’m a regular person looking to buy a tablet, I’ll probably gravitate toward
the tablet with the most apps – hence an iPad or perhaps a Kindle Fire. And if I’m
a regular person looking for personal productivity with Office, CAD software, or gaming,
I’ll be perfectly happy with Windows 7 (or even Vista) as long as my current computer
keeps working.
&lt;/p&gt;
&lt;p&gt;
Please note that I am &lt;em&gt;personally&lt;/em&gt; not a regular person in this context. I’m
a geek, and thus have been running Windows 8 since long before it was released. But
I have sat in restaurants and overheard conversations about Windows 8 by random people
– conversations that lead me to be pretty confident that my previous paragraph is
correct.
&lt;/p&gt;
&lt;p&gt;
None of this says that people won’t slowly adopt Windows 8 as their existing computers
need replacing, because they probably will. And as more people actually start &lt;em&gt;using&lt;/em&gt; Windows
8 and tell their friends and neighbors that it really isn’t that scary, then the fear
of change will fade. And with any luck the number of apps available for WinRT will
grow relatively fast so people will consider buying Windows 8 tablets because they
feel confident those devices have good and useful apps.
&lt;/p&gt;
&lt;p&gt;
Does this mean Windows 8 is a success or failure? I don’t know. We are in uncharted
territory to some degree, because today’s computers (with their i3, i5 and i7 processors)
are essentially identical in performance to computers from three years ago. For the
first time in recent memory (and perhaps ever) computers have stopped getting faster,
eliminating one of the primary reasons why people would buy a new computer. Now the
only reason to buy a new computer is a complete failure of your existing computer,
and computers often last a very long time…
&lt;/p&gt;
&lt;p&gt;
In other words, Windows 8 adoption in the personal space might be slower than in the
past (we don’t really know). But if it is, I strongly suspect one major factor has
less to do with Windows 8 than the reality that few people are motivated to spend
hundreds of dollars to buy a computer that isn’t any faster than the one they already
have.
&lt;/p&gt;
&lt;p&gt;
&amp;#160;
&lt;/p&gt;
&lt;p&gt;
On the organizational side of things the dynamic is entirely different. Organizations
try to minimize the number of device types, operating systems, and operating system
versions because it is &lt;em&gt;extremely&lt;/em&gt; expensive to support more than one. Organizations
use “apps” (applications, or enterprise software) that is required for the organization
to function. When those apps fail the business loses money by the second – often many
thousands of dollars per second. Upgrading from Windows X to Windows Y is &lt;em&gt;never&lt;/em&gt; done
without extensive testing to ensure those important apps work on the new operating
system version. And such upgrades are done according to an orchestrated plan that
minimizes the time the organization is forced to support both versions.
&lt;/p&gt;
&lt;p&gt;
This is nothing new. This is the reality of enterprise computing that has existed
for as long as I can recall (thus dating back well more than 2 decades).
&lt;/p&gt;
&lt;p&gt;
Strangely, I’ve had people argue that this dynamic is no longer true. That organizations
are now going to adopt BYOD, even though that directly means supporting &lt;em&gt;numerous&lt;/em&gt; devices,
operating systems, and operating system versions all at the same time. I’m not sure
what these people are smoking, nor am I sure I want to try it because I think whatever
they’ve smoked caused some brain damage. But I could be wrong – perhaps organizations
are ready to radically increase their IT support costs in order to allow employees
to use random hardware devices and operating systems? Or perhaps there is no increased
cost to IT because (as one person told me) it will now be the employee’s responsibility
to ensure they have a working device at all times – thus all IT support costs will
be born by the end users. Something I’m sure will thrill the minimum wage workers
in the warehouses who’ll apparently now have to buy and support computers they’d never
have purchased before?!?
&lt;/p&gt;
&lt;p&gt;
Back in the world of the sane, what is actually happening is that a great many (most?)
organizations are just now migrating from Windows 2000 or Windows XP to Windows 7.
This is because those older operating systems are off support, or will be off support
in April 2014. No more bug fixes. No more security patches. Nothing. I truly pity
any poor souls left on XP a year from now.
&lt;/p&gt;
&lt;p&gt;
This migration from XP to 7 is not cheap. It is not only an IT issue in terms of upgrading
hardware, drivers, and operating system installs. It usually also means updating or
replacing ancient enterprise software that was written in VB6 or PowerBuilder or other
technologies that haven’t been current for many years.
&lt;/p&gt;
&lt;p&gt;
As a result, almost no organizations even have Windows 8 on their radar at all. Virtually
nobody is planning for a Windows 8 migration, because they are just now getting to
Windows 7. In fact, my informal polling while speaking at conferences around the world
is that nobody expects to move to Windows 8 until 3+ years from now.
&lt;/p&gt;
&lt;p&gt;
Does this mean Windows 8 is a failure? Of course not. Remember, these organizations
are &lt;em&gt;just now moving from XP to 7&lt;/em&gt;. Windows 7 was released in 2009, and only
eclipsed XP in 2012 in terms of installs.
&lt;/p&gt;
&lt;p&gt;
Following that time schedule, we won’t know of Windows 8 is a success or failure until
around 3 years from now: in 2015.
&lt;/p&gt;
&lt;p&gt;
&amp;#160;
&lt;/p&gt;
&lt;p&gt;
In summary, is Windows 8 a success or failure? I can’t say. Nor can anyone else, even
though a lot of people (including myself) speculate about it quite a lot &lt;img class="wlEmoticon wlEmoticon-smile" style="border-top-style: none; border-left-style: none; border-bottom-style: none; border-right-style: none" alt="Smile" src="http://www.lhotka.net/weblog/content/binary/Windows-Live-Writer/Is-Windows-8-a-success_F70D/wlEmoticon-smile_2.png" /&gt;
&lt;/p&gt;
&lt;p&gt;
The space to watch is the personal/individual computing space, because that’ll move
somewhat faster than the organizational space.
&lt;/p&gt;
&lt;p&gt;
Like &lt;em&gt;every previous version of Windows&lt;/em&gt;, we won’t know the success or failure
of this version until 3+ years after its launch, because enterprises always move at
a stately (if not glacial) pace.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.lhotka.net/weblog/aggbug.ashx?id=4ffd45fa-c9d3-46f3-a98c-4622efb7a271" /&gt;</description>
      <comments>http://www.lhotka.net/weblog/CommentView,guid,4ffd45fa-c9d3-46f3-a98c-4622efb7a271.aspx</comments>
      <category>Windows 8</category>
    </item>
    <item>
      <trackback:ping>http://www.lhotka.net/weblog/Trackback.aspx?guid=9c521269-1f6d-4944-8957-dc56a7d7b2ce</trackback:ping>
      <pingback:server>http://www.lhotka.net/weblog/pingback.aspx</pingback:server>
      <pingback:target>http://www.lhotka.net/weblog/PermaLink,guid,9c521269-1f6d-4944-8957-dc56a7d7b2ce.aspx</pingback:target>
      <dc:creator>Rockford Lhotka</dc:creator>
      <wfw:comment>http://www.lhotka.net/weblog/CommentView,guid,9c521269-1f6d-4944-8957-dc56a7d7b2ce.aspx</wfw:comment>
      <wfw:commentRss>http://www.lhotka.net/weblog/SyndicationService.asmx/GetEntryCommentsRss?guid=9c521269-1f6d-4944-8957-dc56a7d7b2ce</wfw:commentRss>
      <slash:comments>5</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
I was recently confronted by an odd bit of reality, about which I thought I’d vent
a little.
</p>
        <p>
I am the creator and owner of a widely used open source project (CSLA .NET) that has
(in one form or another) been around since 1996. If you want an example of an open
source project with longevity, CSLA .NET ranks right up there.
</p>
        <p>
And CSLA is “true” open source, in that it uses a liberal and non-viral license, and
there’s no commercial option (a lot of OSS projects use a viral license as a “poison
pill” to drive any real use of the project to a paid commercial license that <em>isn’t</em> free
as in beer or speech).
</p>
        <p>
Recently at a conference I and some colleagues were presenting on some development
techniques and patterns, and the code makes use of several open source projects –
including CSLA.
</p>
        <p>
Oddly this was a source of blow-back from some in the audience, who thought the talk
was “overly commercial”.
</p>
        <p>
Apparently talking about <em>other people’s</em> free open source products are fine,
but if you talk about your own then that’s commercial?
</p>
        <p>
And for that matter, how can it be commercial if you are talking about software that
is free as in beer and speech? If anything, FOSS is <em>anti-commercial</em> by its
very definition…
</p>
        <p>
It would seem, by this ‘logic’, that the primary experts on any given OSS project
should not talk about their project, but should instead talk about tools they might
use, but don’t actually create or build.
</p>
        <p>
In other words, people attending conferences should never get the best or most direct
insight into <em>any</em> OSS product, because presentations by the people who create
that product would be somehow “too commercial” if they talk about the stuff they’ve
built.
</p>
        <p>
So much for learning about Linux from Linux developers, or jquery from jquery developers,
etc.
</p>
        <p>
Obviously that’s all pretty dumb, and similarly I suspect the majority of the people
at this conference (or any conference) don’t feel this way and do want the highest
quality information they can get.
</p>
        <p>
I think the <em>real</em> issue here is that some reasonable number of people just
don’t understand open source.
</p>
        <p>
A lot of people (especially in the Microsoft dev space) have never knowingly used
open source – living entirely within the realm of products provided by Microsoft and
component vendors.
</p>
        <p>
(whether these people have <em>actually</em> used open source is another matter –
and odds are they have unwittingly used things like jquery, ASP.NET, Entity Framework,
MVVM Light, Subversion, git, etc.)
</p>
        <p>
I only bother blogging about this because over the past couple years it has become
virtually impossible to create any modern app without the use of some open source
products.
</p>
        <p>
I can’t imagine anyone building a modern web site or page without some OSS products.
Much less a <em>web app</em> that’ll be based almost entirely on OSS products.
</p>
        <p>
Similarly, it is hard to imagine building a XAML app without the use of at least one
OSS MVVM framework.
</p>
        <p>
And the same is true with unit testing, mocking, etc.
</p>
        <p>
In short, the best tools available today are probably open source, and if you aren’t
using them then you are depriving yourself and your employer of the best options out
there.
</p>
        <p>
What this means imo, is that people who think talking about your own open source product
is “too commercial” had better grow up and get a clue pretty fast, or they’ll be finding <em>everything</em> to
be too commercial…
</p>
        <img width="0" height="0" src="http://www.lhotka.net/weblog/aggbug.ashx?id=9c521269-1f6d-4944-8957-dc56a7d7b2ce" />
      <xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/RockfordLhotka/~4/Xl1Aq1lsgGU" height="1" width="1" /></body>
      <title>Talking about your own open source project</title>
      <guid isPermaLink="false">http://www.lhotka.net/weblog/PermaLink,guid,9c521269-1f6d-4944-8957-dc56a7d7b2ce.aspx</guid>
      <link>http://www.lhotka.net/weblog/TalkingAboutYourOwnOpenSourceProject.aspx</link>
      <pubDate>Wed, 10 Apr 2013 18:04:39 GMT</pubDate>
      <description>&lt;p&gt;
I was recently confronted by an odd bit of reality, about which I thought I’d vent
a little.
&lt;/p&gt;
&lt;p&gt;
I am the creator and owner of a widely used open source project (CSLA .NET) that has
(in one form or another) been around since 1996. If you want an example of an open
source project with longevity, CSLA .NET ranks right up there.
&lt;/p&gt;
&lt;p&gt;
And CSLA is “true” open source, in that it uses a liberal and non-viral license, and
there’s no commercial option (a lot of OSS projects use a viral license as a “poison
pill” to drive any real use of the project to a paid commercial license that &lt;em&gt;isn’t&lt;/em&gt; free
as in beer or speech).
&lt;/p&gt;
&lt;p&gt;
Recently at a conference I and some colleagues were presenting on some development
techniques and patterns, and the code makes use of several open source projects –
including CSLA.
&lt;/p&gt;
&lt;p&gt;
Oddly this was a source of blow-back from some in the audience, who thought the talk
was “overly commercial”.
&lt;/p&gt;
&lt;p&gt;
Apparently talking about &lt;em&gt;other people’s&lt;/em&gt; free open source products are fine,
but if you talk about your own then that’s commercial?
&lt;/p&gt;
&lt;p&gt;
And for that matter, how can it be commercial if you are talking about software that
is free as in beer and speech? If anything, FOSS is &lt;em&gt;anti-commercial&lt;/em&gt; by its
very definition…
&lt;/p&gt;
&lt;p&gt;
It would seem, by this ‘logic’, that the primary experts on any given OSS project
should not talk about their project, but should instead talk about tools they might
use, but don’t actually create or build.
&lt;/p&gt;
&lt;p&gt;
In other words, people attending conferences should never get the best or most direct
insight into &lt;em&gt;any&lt;/em&gt; OSS product, because presentations by the people who create
that product would be somehow “too commercial” if they talk about the stuff they’ve
built.
&lt;/p&gt;
&lt;p&gt;
So much for learning about Linux from Linux developers, or jquery from jquery developers,
etc.
&lt;/p&gt;
&lt;p&gt;
Obviously that’s all pretty dumb, and similarly I suspect the majority of the people
at this conference (or any conference) don’t feel this way and do want the highest
quality information they can get.
&lt;/p&gt;
&lt;p&gt;
I think the &lt;em&gt;real&lt;/em&gt; issue here is that some reasonable number of people just
don’t understand open source.
&lt;/p&gt;
&lt;p&gt;
A lot of people (especially in the Microsoft dev space) have never knowingly used
open source – living entirely within the realm of products provided by Microsoft and
component vendors.
&lt;/p&gt;
&lt;p&gt;
(whether these people have &lt;em&gt;actually&lt;/em&gt; used open source is another matter –
and odds are they have unwittingly used things like jquery, ASP.NET, Entity Framework,
MVVM Light, Subversion, git, etc.)
&lt;/p&gt;
&lt;p&gt;
I only bother blogging about this because over the past couple years it has become
virtually impossible to create any modern app without the use of some open source
products.
&lt;/p&gt;
&lt;p&gt;
I can’t imagine anyone building a modern web site or page without some OSS products.
Much less a &lt;em&gt;web app&lt;/em&gt; that’ll be based almost entirely on OSS products.
&lt;/p&gt;
&lt;p&gt;
Similarly, it is hard to imagine building a XAML app without the use of at least one
OSS MVVM framework.
&lt;/p&gt;
&lt;p&gt;
And the same is true with unit testing, mocking, etc.
&lt;/p&gt;
&lt;p&gt;
In short, the best tools available today are probably open source, and if you aren’t
using them then you are depriving yourself and your employer of the best options out
there.
&lt;/p&gt;
&lt;p&gt;
What this means imo, is that people who think talking about your own open source product
is “too commercial” had better grow up and get a clue pretty fast, or they’ll be finding &lt;em&gt;everything&lt;/em&gt; to
be too commercial…
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.lhotka.net/weblog/aggbug.ashx?id=9c521269-1f6d-4944-8957-dc56a7d7b2ce" /&gt;</description>
      <comments>http://www.lhotka.net/weblog/CommentView,guid,9c521269-1f6d-4944-8957-dc56a7d7b2ce.aspx</comments>
      <category>Programming</category>
    </item>
    <item>
      <trackback:ping>http://www.lhotka.net/weblog/Trackback.aspx?guid=6347a28f-bd78-4299-9f7b-1f946edcd747</trackback:ping>
      <pingback:server>http://www.lhotka.net/weblog/pingback.aspx</pingback:server>
      <pingback:target>http://www.lhotka.net/weblog/PermaLink,guid,6347a28f-bd78-4299-9f7b-1f946edcd747.aspx</pingback:target>
      <dc:creator>Rockford Lhotka</dc:creator>
      <wfw:comment>http://www.lhotka.net/weblog/CommentView,guid,6347a28f-bd78-4299-9f7b-1f946edcd747.aspx</wfw:comment>
      <wfw:commentRss>http://www.lhotka.net/weblog/SyndicationService.asmx/GetEntryCommentsRss?guid=6347a28f-bd78-4299-9f7b-1f946edcd747</wfw:commentRss>
      <slash:comments>10</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
In 1991 I was a DEC VAX programmer. A very happy one, because OpenVMS was a wonderful
operating system and I knew it inside and out. The only problem was that the “clients”
were dumb VT terminals, and it was terribly easy to become resource constrained by
having all the CPU, memory, and IO processing in a central location.
</p>
        <p>
This was the time when Windows NT came along (this new OS created by the same person
who created OpenVMS btw) and demonstrated that PCs were more than toys – that they
could be considered real computers. (yes, this is my editorial view <img class="wlEmoticon wlEmoticon-smile" style="border-top-style: none; border-left-style: none; border-bottom-style: none; border-right-style: none" alt="Smile" src="http://www.lhotka.net/weblog/content/binary/Windows-Live-Writer/Future-of-the-smart-client_8098/wlEmoticon-smile_2.png" /> )
</p>
        <p>
From that time forward my personal interest in software has been expressed entirely
via distributed computing. Sure, I’ve built some server-only and some client-only
software over the past 22 years, but that was just to pay the bills. What is <em>interesting</em> is
building software systems where various parts of the system run on different computers,
working together toward a common goal. That’s fun!!
</p>
        <p>
This type of software system implies a smart client. I suppose a smart client isn’t
strictly <em>necessary</em>, but it is surely ideal. Because most software interacts
with humans at some point, a smart client is ideal because that’s how you provide
the human with the best possible experience. Obviously you can use a VT terminal or
a basic HTML browser experience to provide this human interface, but that’s not <em>nearly</em> as
rich or powerful as a smart client experience.
</p>
        <p>
For the past couple decades the default and dominant smart client experience has been
expressed through Windows. With smart client software written primarily in VB, PowerBuilder,
and .NET (C#/VB).
</p>
        <p>
The thing is, I am entirely convinced that our industry is at a major inflection point.
At least as big as the one in the mid-1990’s when we shifted from mainframe/minicomputer
to PC, and when n-tier became viable, and when the infant web became mainstream.
</p>
        <p>
Prior to the mid-1990’s computing was chaos. There were many types of mainframe and
minicomputer, and none were compatible with each other. Even the various flavors of
Unix weren’t really compatible with each other… Software developers tended to specialize
in a platform, and it took non-trivial effort to retool to another platform – at least
if you wanted to be really good.
</p>
        <p>
Over the past couple decades we’ve been spoiled by having essentially one platform:
Windows. Regardless of whether you use VB, PowerBuilder, .NET, or Java, almost everyone
knows Windows and how to build software for this one nearly-universal platform.
</p>
        <p>
Now we’ve chosen to return to chaos. Windows is still sort of dominant, but it shares
a lot of mindshare with iOS, OS X, Android, and ChromeOS. We appear to be heading
rapidly into an environment more like the late 1980’s. An environment composed of
numerous incompatible platforms, all of which are viable, none of which are truly
dominant.
</p>
        <p>
There is one difference this time though: JavaScript.
</p>
        <p>
Please don’t get me wrong, I’m not a rah-rah supporter of js. I am <em>extremely</em> skeptical
of cross-platform technologies, having seen countless such technologies crash and
burn over the past 25+ years.
</p>
        <p>
But there’s an <em>economic</em> factor that comes to bear as well as technical factors.
Unlike in the late 1980’s when computing was important but not critical to the world
at large, today computing <em>is critical to the world at large</em>. Individuals
and organizations can not function at the levels of productivity we’re used to without
computing and automation.
</p>
        <p>
In other words, in the late 1980’s we could afford to be highly inefficient. We could
afford to have a fragmented developer space, split by myriad incompatible platforms.
</p>
        <p>
Today the cost of such inefficiency is much higher. I suspect it is too high to be
acceptable. Think about your organization. Can you afford to build every client app
3-6 times? Will your board of directors or company owner accept that kind of increase
in the IT budget?
</p>
        <p>
Or can you afford to pick just one platform (iOS, Windows, whatever) and tell all
your employees and partners that you only work with that one type of device/OS?
</p>
        <p>
(btw, that’s what we’ve done for the past 20 years – we just tell everyone it is Windows
or nothing, and that’s been working well – so such a move isn’t out of the question)
</p>
        <p>
Let’s assume your organization can’t afford a massive increase in its IT budget to
hire the dev/support staff to build and maintain every app 3-6 times. And let’s assume
we collectively decide to embrace every random device/OS that comes along (BYOD).
What then?
</p>
        <p>
I suggest there are two options:
</p>
        <ol>
          <li>
Return to a terminal-based model where the client device is a dumb as possible, probably
using basic HTML – to which I say BORING! (and awful!)</li>
          <li>
Find a common technology for building smart client apps that works reasonably well
on most device/OS combinations</li>
        </ol>
        <p>
Personally I am entirely uninterested in option 1. As I said, I spent the early part
of my career in the minicomputer-terminal world, so I’ve been there and done that.
Boring.
</p>
        <p>
The only technology that looks even remotely capable of supporting option 2 is JavaScript.
</p>
        <p>
Is that a silver bullet? Is it painless? Clearly not. Even if you ignore all the bad
bits of js and stick with <a href="http://www.amazon.com/JavaScript-Good-Parts-Douglas-Crockford/dp/0596517742/">JavaScript:
The Good Parts</a> it is still pretty messy.
</p>
        <p>
However, VB 1, 2, and 3 were also pretty immature and messy. But a lot of us stuck
with those products, pushing for (and getting) improvements that ultimately made VB6
the most popular development tool of its time – for apps small and big (enterprise).
</p>
        <p>
So sure, js is (by modern standards) immature and messy. But if the broader business
development community sees it as the only viable technology going forward that’ll
bring a lot of attention and money into the js world. That attention and money will
drive maturity, probably quite rapidly.
</p>
        <p>
OK, so probably not maturity of js itself, because it is controlled by a standards
body and so it changes at a glacial pace.
</p>
        <p>
But maturity of tooling (look at the amazing stuff Microsoft is doing in VS for js
tooling, as well as TypeScript), and libraries, and standards. That’ll be the avenue
by which js becomes viable for smart client development.
</p>
        <p>
If it isn’t clear btw, I am increasingly convinced that (like it or not) this is where
we’re headed. We have a few more years of Windows as the dominant enterprise client
OS, but given what Microsoft is doing with Windows 8 it is really hard to see how
Windows will remain dominant in that space. Not that any one single device/OS will
displace Windows – but rather that <em>chaos</em> will displace Windows.
</p>
        <p>
As a result, barring someone inventing a better cross-platform technology (and I’d
love to see that happen!!), js is about to get hit by a lot of professional business
developers who’ll demand more maturity, stability, and productivity than exists today.
</p>
        <p>
This is going to be a fun ride!
</p>
        <img width="0" height="0" src="http://www.lhotka.net/weblog/aggbug.ashx?id=6347a28f-bd78-4299-9f7b-1f946edcd747" />
      <xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/RockfordLhotka/~4/Uya9u2UAJR8" height="1" width="1" /></body>
      <title>Future of the smart client</title>
      <guid isPermaLink="false">http://www.lhotka.net/weblog/PermaLink,guid,6347a28f-bd78-4299-9f7b-1f946edcd747.aspx</guid>
      <link>http://www.lhotka.net/weblog/FutureOfTheSmartClient.aspx</link>
      <pubDate>Thu, 04 Apr 2013 14:44:57 GMT</pubDate>
      <description>&lt;p&gt;
In 1991 I was a DEC VAX programmer. A very happy one, because OpenVMS was a wonderful
operating system and I knew it inside and out. The only problem was that the “clients”
were dumb VT terminals, and it was terribly easy to become resource constrained by
having all the CPU, memory, and IO processing in a central location.
&lt;/p&gt;
&lt;p&gt;
This was the time when Windows NT came along (this new OS created by the same person
who created OpenVMS btw) and demonstrated that PCs were more than toys – that they
could be considered real computers. (yes, this is my editorial view &lt;img class="wlEmoticon wlEmoticon-smile" style="border-top-style: none; border-left-style: none; border-bottom-style: none; border-right-style: none" alt="Smile" src="http://www.lhotka.net/weblog/content/binary/Windows-Live-Writer/Future-of-the-smart-client_8098/wlEmoticon-smile_2.png" /&gt; )
&lt;/p&gt;
&lt;p&gt;
From that time forward my personal interest in software has been expressed entirely
via distributed computing. Sure, I’ve built some server-only and some client-only
software over the past 22 years, but that was just to pay the bills. What is &lt;em&gt;interesting&lt;/em&gt; is
building software systems where various parts of the system run on different computers,
working together toward a common goal. That’s fun!!
&lt;/p&gt;
&lt;p&gt;
This type of software system implies a smart client. I suppose a smart client isn’t
strictly &lt;em&gt;necessary&lt;/em&gt;, but it is surely ideal. Because most software interacts
with humans at some point, a smart client is ideal because that’s how you provide
the human with the best possible experience. Obviously you can use a VT terminal or
a basic HTML browser experience to provide this human interface, but that’s not &lt;em&gt;nearly&lt;/em&gt; as
rich or powerful as a smart client experience.
&lt;/p&gt;
&lt;p&gt;
For the past couple decades the default and dominant smart client experience has been
expressed through Windows. With smart client software written primarily in VB, PowerBuilder,
and .NET (C#/VB).
&lt;/p&gt;
&lt;p&gt;
The thing is, I am entirely convinced that our industry is at a major inflection point.
At least as big as the one in the mid-1990’s when we shifted from mainframe/minicomputer
to PC, and when n-tier became viable, and when the infant web became mainstream.
&lt;/p&gt;
&lt;p&gt;
Prior to the mid-1990’s computing was chaos. There were many types of mainframe and
minicomputer, and none were compatible with each other. Even the various flavors of
Unix weren’t really compatible with each other… Software developers tended to specialize
in a platform, and it took non-trivial effort to retool to another platform – at least
if you wanted to be really good.
&lt;/p&gt;
&lt;p&gt;
Over the past couple decades we’ve been spoiled by having essentially one platform:
Windows. Regardless of whether you use VB, PowerBuilder, .NET, or Java, almost everyone
knows Windows and how to build software for this one nearly-universal platform.
&lt;/p&gt;
&lt;p&gt;
Now we’ve chosen to return to chaos. Windows is still sort of dominant, but it shares
a lot of mindshare with iOS, OS X, Android, and ChromeOS. We appear to be heading
rapidly into an environment more like the late 1980’s. An environment composed of
numerous incompatible platforms, all of which are viable, none of which are truly
dominant.
&lt;/p&gt;
&lt;p&gt;
There is one difference this time though: JavaScript.
&lt;/p&gt;
&lt;p&gt;
Please don’t get me wrong, I’m not a rah-rah supporter of js. I am &lt;em&gt;extremely&lt;/em&gt; skeptical
of cross-platform technologies, having seen countless such technologies crash and
burn over the past 25+ years.
&lt;/p&gt;
&lt;p&gt;
But there’s an &lt;em&gt;economic&lt;/em&gt; factor that comes to bear as well as technical factors.
Unlike in the late 1980’s when computing was important but not critical to the world
at large, today computing &lt;em&gt;is critical to the world at large&lt;/em&gt;. Individuals
and organizations can not function at the levels of productivity we’re used to without
computing and automation.
&lt;/p&gt;
&lt;p&gt;
In other words, in the late 1980’s we could afford to be highly inefficient. We could
afford to have a fragmented developer space, split by myriad incompatible platforms.
&lt;/p&gt;
&lt;p&gt;
Today the cost of such inefficiency is much higher. I suspect it is too high to be
acceptable. Think about your organization. Can you afford to build every client app
3-6 times? Will your board of directors or company owner accept that kind of increase
in the IT budget?
&lt;/p&gt;
&lt;p&gt;
Or can you afford to pick just one platform (iOS, Windows, whatever) and tell all
your employees and partners that you only work with that one type of device/OS?
&lt;/p&gt;
&lt;p&gt;
(btw, that’s what we’ve done for the past 20 years – we just tell everyone it is Windows
or nothing, and that’s been working well – so such a move isn’t out of the question)
&lt;/p&gt;
&lt;p&gt;
Let’s assume your organization can’t afford a massive increase in its IT budget to
hire the dev/support staff to build and maintain every app 3-6 times. And let’s assume
we collectively decide to embrace every random device/OS that comes along (BYOD).
What then?
&lt;/p&gt;
&lt;p&gt;
I suggest there are two options:
&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
Return to a terminal-based model where the client device is a dumb as possible, probably
using basic HTML – to which I say BORING! (and awful!)&lt;/li&gt;
&lt;li&gt;
Find a common technology for building smart client apps that works reasonably well
on most device/OS combinations&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;
Personally I am entirely uninterested in option 1. As I said, I spent the early part
of my career in the minicomputer-terminal world, so I’ve been there and done that.
Boring.
&lt;/p&gt;
&lt;p&gt;
The only technology that looks even remotely capable of supporting option 2 is JavaScript.
&lt;/p&gt;
&lt;p&gt;
Is that a silver bullet? Is it painless? Clearly not. Even if you ignore all the bad
bits of js and stick with &lt;a href="http://www.amazon.com/JavaScript-Good-Parts-Douglas-Crockford/dp/0596517742/"&gt;JavaScript:
The Good Parts&lt;/a&gt; it is still pretty messy.
&lt;/p&gt;
&lt;p&gt;
However, VB 1, 2, and 3 were also pretty immature and messy. But a lot of us stuck
with those products, pushing for (and getting) improvements that ultimately made VB6
the most popular development tool of its time – for apps small and big (enterprise).
&lt;/p&gt;
&lt;p&gt;
So sure, js is (by modern standards) immature and messy. But if the broader business
development community sees it as the only viable technology going forward that’ll
bring a lot of attention and money into the js world. That attention and money will
drive maturity, probably quite rapidly.
&lt;/p&gt;
&lt;p&gt;
OK, so probably not maturity of js itself, because it is controlled by a standards
body and so it changes at a glacial pace.
&lt;/p&gt;
&lt;p&gt;
But maturity of tooling (look at the amazing stuff Microsoft is doing in VS for js
tooling, as well as TypeScript), and libraries, and standards. That’ll be the avenue
by which js becomes viable for smart client development.
&lt;/p&gt;
&lt;p&gt;
If it isn’t clear btw, I am increasingly convinced that (like it or not) this is where
we’re headed. We have a few more years of Windows as the dominant enterprise client
OS, but given what Microsoft is doing with Windows 8 it is really hard to see how
Windows will remain dominant in that space. Not that any one single device/OS will
displace Windows – but rather that &lt;em&gt;chaos&lt;/em&gt; will displace Windows.
&lt;/p&gt;
&lt;p&gt;
As a result, barring someone inventing a better cross-platform technology (and I’d
love to see that happen!!), js is about to get hit by a lot of professional business
developers who’ll demand more maturity, stability, and productivity than exists today.
&lt;/p&gt;
&lt;p&gt;
This is going to be a fun ride!
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.lhotka.net/weblog/aggbug.ashx?id=6347a28f-bd78-4299-9f7b-1f946edcd747" /&gt;</description>
      <comments>http://www.lhotka.net/weblog/CommentView,guid,6347a28f-bd78-4299-9f7b-1f946edcd747.aspx</comments>
      <category>h5js</category>
      <category>JavaScript</category>
      <category>Programming</category>
    </item>
    <item>
      <trackback:ping>http://www.lhotka.net/weblog/Trackback.aspx?guid=7243ebb2-0068-4f59-a35c-e0f54d6943b2</trackback:ping>
      <pingback:server>http://www.lhotka.net/weblog/pingback.aspx</pingback:server>
      <pingback:target>http://www.lhotka.net/weblog/PermaLink,guid,7243ebb2-0068-4f59-a35c-e0f54d6943b2.aspx</pingback:target>
      <dc:creator>Rockford Lhotka</dc:creator>
      <wfw:comment>http://www.lhotka.net/weblog/CommentView,guid,7243ebb2-0068-4f59-a35c-e0f54d6943b2.aspx</wfw:comment>
      <wfw:commentRss>http://www.lhotka.net/weblog/SyndicationService.asmx/GetEntryCommentsRss?guid=7243ebb2-0068-4f59-a35c-e0f54d6943b2</wfw:commentRss>
      <slash:comments>2</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
The final release of CSLA 4 version 4.5.20 is now available for download
</p>
        <p>
          <a href="http://www.cslanet.com/Download.html">http://www.cslanet.com/Download.html</a>
        </p>
        <p>
It is also available via NuGet.
</p>
        <p>
CSLA .NET is a software development framework that helps you build a powerful, maintainable
business logic layer for WinRT (Windows 8), WPF, Web, service-oriented, Windows Phone,
Silverlight, and workflow applications.
</p>
        <p>
This new release adds support for Windows Phone 8 to the existing support for .NET
4, .NET 4.5, Windows Runtime (WinRT), and Silverlight 5.
</p>
        <p>
It also includes some important bug fixes, and relatively minor enhancements in other
areas of the framework. So if you are using any previous version of 4.5 you really
should upgrade to this new release to realize these benefits.
</p>
        <p>
One other note: this release uses a new WIX-based installer, and so it shouldn’t have
the issues people encountered with the InstallShield-based installer used in the previous
release. As always, I generally recommend using NuGet to include the assemblies in
your projects, as that’s the simplest and most reliable approach.
</p>
        <img width="0" height="0" src="http://www.lhotka.net/weblog/aggbug.ashx?id=7243ebb2-0068-4f59-a35c-e0f54d6943b2" />
      <xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/RockfordLhotka/~4/RhK2t6_EISs" height="1" width="1" /></body>
      <title>CSLA 4 version 4.5.20 release available</title>
      <guid isPermaLink="false">http://www.lhotka.net/weblog/PermaLink,guid,7243ebb2-0068-4f59-a35c-e0f54d6943b2.aspx</guid>
      <link>http://www.lhotka.net/weblog/CSLA4Version4520ReleaseAvailable.aspx</link>
      <pubDate>Wed, 20 Mar 2013 03:56:18 GMT</pubDate>
      <description>&lt;p&gt;
The final release of CSLA 4 version 4.5.20 is now available for download
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.cslanet.com/Download.html"&gt;http://www.cslanet.com/Download.html&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
It is also available via NuGet.
&lt;/p&gt;
&lt;p&gt;
CSLA .NET is a software development framework that helps you build a powerful, maintainable
business logic layer for WinRT (Windows 8), WPF, Web, service-oriented, Windows Phone,
Silverlight, and workflow applications.
&lt;/p&gt;
&lt;p&gt;
This new release adds support for Windows Phone 8 to the existing support for .NET
4, .NET 4.5, Windows Runtime (WinRT), and Silverlight 5.
&lt;/p&gt;
&lt;p&gt;
It also includes some important bug fixes, and relatively minor enhancements in other
areas of the framework. So if you are using any previous version of 4.5 you really
should upgrade to this new release to realize these benefits.
&lt;/p&gt;
&lt;p&gt;
One other note: this release uses a new WIX-based installer, and so it shouldn’t have
the issues people encountered with the InstallShield-based installer used in the previous
release. As always, I generally recommend using NuGet to include the assemblies in
your projects, as that’s the simplest and most reliable approach.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.lhotka.net/weblog/aggbug.ashx?id=7243ebb2-0068-4f59-a35c-e0f54d6943b2" /&gt;</description>
      <comments>http://www.lhotka.net/weblog/CommentView,guid,7243ebb2-0068-4f59-a35c-e0f54d6943b2.aspx</comments>
      <category>CSLA .NET</category>
      <category>Windows Phone</category>
    </item>
    <item>
      <trackback:ping>http://www.lhotka.net/weblog/Trackback.aspx?guid=12e07f67-f73c-426c-9c58-b60f486c288d</trackback:ping>
      <pingback:server>http://www.lhotka.net/weblog/pingback.aspx</pingback:server>
      <pingback:target>http://www.lhotka.net/weblog/PermaLink,guid,12e07f67-f73c-426c-9c58-b60f486c288d.aspx</pingback:target>
      <dc:creator>Rockford Lhotka</dc:creator>
      <wfw:comment>http://www.lhotka.net/weblog/CommentView,guid,12e07f67-f73c-426c-9c58-b60f486c288d.aspx</wfw:comment>
      <wfw:commentRss>http://www.lhotka.net/weblog/SyndicationService.asmx/GetEntryCommentsRss?guid=12e07f67-f73c-426c-9c58-b60f486c288d</wfw:commentRss>
      <slash:comments>4</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
I know a lot of people have complained that Windows 8 replaced the start menu with
the start screen. Personally I rather like the start screen in Windows 8, and haven’t
felt the need to seek out a start menu replacement (like the popular <a href="http://www.stardock.com/products/start8/">Start8</a>).
</p>
        <p>
However, like a lot of people I run Win8 on multiple monitors (on my desktop and when
I dock my laptop). Being able to run WinRT apps in only one window, and to really
only see one app at a time is extremely limiting to power users or developers or people
with multiple monitors.
</p>
        <p>
About 90 minutes ago I installed <a href="http://www.stardock.com/products/modernmix/">ModernMix</a>,
a program from the creators of Start8 that basically fixes this whole issue. It allows
WinRT apps to run in windows, so you can have multiple WinRT apps running at once,
and on different monitors.
</p>
        <p>
It is literally like unlocking the potential of Windows 8! Just 90 minutes later my
love of Win8 and WinRT has jumped an order of magnitude (and keep in mind, I already
really liked Win8).
</p>
        <p>
The ability to have some of my favorite WinRT apps running and visible while using
other WinRT apps and/or Win32 desktop apps improves productivity <em>immensely</em>.
</p>
        <p>
For example, I really like Xaml Candy (<a href="http://apps.microsoft.com/webpdp/app/8b9e2d69-feed-409c-befb-4ea97f97351a">http://apps.microsoft.com/webpdp/app/8b9e2d69-feed-409c-befb-4ea97f97351a</a>)
and have always wished I could have it in one monitor while using Visual Studio in
another. Now I can!
</p>
        <p>
Similarly, the ability to have Feed Reader (<a href="http://apps.microsoft.com/webpdp/app/d03199c9-8e08-469a-bda1-7963099840cc">http://apps.microsoft.com/webpdp/app/d03199c9-8e08-469a-bda1-7963099840cc</a>)
sitting in a window on my second monitor makes it much more useful. It never needed
to consume all of my massive monitor space, and now it fits in a much more appropriately
sized window.
</p>
        <p>
Seriously, installing ModernMix is like night and day in terms of productivity for
Windows 8. If you use multiple monitors and/or are a power user or developer you really
want this tool.
</p>
        <p>
(note, I don’t work for those guys, nor did I get the product for free – I’m just
so happy with the results I wanted to share!)
</p>
        <img width="0" height="0" src="http://www.lhotka.net/weblog/aggbug.ashx?id=12e07f67-f73c-426c-9c58-b60f486c288d" />
      <xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/RockfordLhotka/~4/etKJp8N1-Zo" height="1" width="1" /></body>
      <title>Windows 8 with actual windows</title>
      <guid isPermaLink="false">http://www.lhotka.net/weblog/PermaLink,guid,12e07f67-f73c-426c-9c58-b60f486c288d.aspx</guid>
      <link>http://www.lhotka.net/weblog/Windows8WithActualWindows.aspx</link>
      <pubDate>Wed, 06 Mar 2013 22:31:46 GMT</pubDate>
      <description>&lt;p&gt;
I know a lot of people have complained that Windows 8 replaced the start menu with
the start screen. Personally I rather like the start screen in Windows 8, and haven’t
felt the need to seek out a start menu replacement (like the popular &lt;a href="http://www.stardock.com/products/start8/"&gt;Start8&lt;/a&gt;).
&lt;/p&gt;
&lt;p&gt;
However, like a lot of people I run Win8 on multiple monitors (on my desktop and when
I dock my laptop). Being able to run WinRT apps in only one window, and to really
only see one app at a time is extremely limiting to power users or developers or people
with multiple monitors.
&lt;/p&gt;
&lt;p&gt;
About 90 minutes ago I installed &lt;a href="http://www.stardock.com/products/modernmix/"&gt;ModernMix&lt;/a&gt;,
a program from the creators of Start8 that basically fixes this whole issue. It allows
WinRT apps to run in windows, so you can have multiple WinRT apps running at once,
and on different monitors.
&lt;/p&gt;
&lt;p&gt;
It is literally like unlocking the potential of Windows 8! Just 90 minutes later my
love of Win8 and WinRT has jumped an order of magnitude (and keep in mind, I already
really liked Win8).
&lt;/p&gt;
&lt;p&gt;
The ability to have some of my favorite WinRT apps running and visible while using
other WinRT apps and/or Win32 desktop apps improves productivity &lt;em&gt;immensely&lt;/em&gt;.
&lt;/p&gt;
&lt;p&gt;
For example, I really like Xaml Candy (&lt;a href="http://apps.microsoft.com/webpdp/app/8b9e2d69-feed-409c-befb-4ea97f97351a"&gt;http://apps.microsoft.com/webpdp/app/8b9e2d69-feed-409c-befb-4ea97f97351a&lt;/a&gt;)
and have always wished I could have it in one monitor while using Visual Studio in
another. Now I can!
&lt;/p&gt;
&lt;p&gt;
Similarly, the ability to have Feed Reader (&lt;a href="http://apps.microsoft.com/webpdp/app/d03199c9-8e08-469a-bda1-7963099840cc"&gt;http://apps.microsoft.com/webpdp/app/d03199c9-8e08-469a-bda1-7963099840cc&lt;/a&gt;)
sitting in a window on my second monitor makes it much more useful. It never needed
to consume all of my massive monitor space, and now it fits in a much more appropriately
sized window.
&lt;/p&gt;
&lt;p&gt;
Seriously, installing ModernMix is like night and day in terms of productivity for
Windows 8. If you use multiple monitors and/or are a power user or developer you really
want this tool.
&lt;/p&gt;
&lt;p&gt;
(note, I don’t work for those guys, nor did I get the product for free – I’m just
so happy with the results I wanted to share!)
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.lhotka.net/weblog/aggbug.ashx?id=12e07f67-f73c-426c-9c58-b60f486c288d" /&gt;</description>
      <comments>http://www.lhotka.net/weblog/CommentView,guid,12e07f67-f73c-426c-9c58-b60f486c288d.aspx</comments>
      <category>Windows 8</category>
    </item>
    <item>
      <trackback:ping>http://www.lhotka.net/weblog/Trackback.aspx?guid=81b1601f-bce0-42e5-8cc5-2e52de8076c3</trackback:ping>
      <pingback:server>http://www.lhotka.net/weblog/pingback.aspx</pingback:server>
      <pingback:target>http://www.lhotka.net/weblog/PermaLink,guid,81b1601f-bce0-42e5-8cc5-2e52de8076c3.aspx</pingback:target>
      <dc:creator>Rockford Lhotka</dc:creator>
      <wfw:comment>http://www.lhotka.net/weblog/CommentView,guid,81b1601f-bce0-42e5-8cc5-2e52de8076c3.aspx</wfw:comment>
      <wfw:commentRss>http://www.lhotka.net/weblog/SyndicationService.asmx/GetEntryCommentsRss?guid=81b1601f-bce0-42e5-8cc5-2e52de8076c3</wfw:commentRss>
      <slash:comments>7</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
I’ve now done four posts where I summarize Microsoft’s side-loading licensing scheme
in terms of just how it works, what it looks like from various business perspectives,
and why I think they have designed this scheme to compete with the wrong target (iPad
instead of HTML 5).
</p>
        <ol>
          <li>
            <a title="Cost to enable side-loading on a Windows 8 device" href="http://www.lhotka.net/weblog/CostToEnableSideloadingOnAWindows8Device.aspx">Cost
to enable side-loading on a Windows 8 device</a>
          </li>
          <li>
            <a title="Windows 8 LOB deployment ‘story’" href="http://www.lhotka.net/weblog/Windows8LOBDeploymentLsquostoryrsquo.aspx">Windows
8 LOB deployment ‘story’</a>
          </li>
          <li>
            <a title="Perspectives on WinRT app licensing" href="http://www.lhotka.net/weblog/PerspectivesOnWinRTAppLicensing.aspx">Perspectives
on WinRT app licensing</a>
          </li>
          <li>
            <a title="Windows 8 WinRT sideloading update" href="http://www.lhotka.net/weblog/Windows8WinRTSideloadingUpdate.aspx">Windows
8 WinRT sideloading update</a>
          </li>
        </ol>
        <p>
If you work for a large enterprise with EA/SA agreements and an IT staff that manages
all your domain-joined Windows 8 Enterprise workstations you can probably stop reading
now. You are the one demographic that is well-covered by the existing licensing model.
</p>
        <p>
If you are a small or medium business, or an enterprise (such as a franchise or co-op
org) where you have lots of non-domain joined machines, machines that run Windows
8 Pro, Windows RT, or the lowly “Windows 8” basic edition, then read on.
</p>
        <p>
After my first four posts I heard from community members and people inside Microsoft
– “ok tough guy, you’ve said what’s wrong, now how would you do it right?” (to paraphrase
of course <img class="wlEmoticon wlEmoticon-smile" style="border-top-style: none; border-left-style: none; border-bottom-style: none; border-right-style: none" alt="Smile" src="http://www.lhotka.net/weblog/content/binary/Windows-Live-Writer/Windows-8-WinRT-licensing-ideas_ABFF/wlEmoticon-smile_2.png" /> ).
</p>
        <p>
My first reaction is that this isn’t my job. If Microsoft wants to make WinRT unpalatable
for business developers so we all switch to cross-platform HTML 5/JavaScript (h5js)
then who am I to stop them? Besides, don’t they have high-paid experts to figure this
stuff out, and so why should I give my thoughts for free?
</p>
        <p>
My second reaction is that from 2001-today I’ve had the pleasure of working with .NET,
and these have been the most enjoyable years of my professional career. Although <a href="http://typescriptlang.org/">TypeScript</a> appears
to offer some reasonable wrapper around the horror that is JavaScript, I’d much prefer
it if Microsoft <em>didn’t</em> destroy the idea of building WinRT apps with XAML/C#/VB.
</p>
        <p>
So here are my thoughts – though please keep in mind that I’m not a licensing expert,
nor did I stay at a Holiday Inn Express last night.
</p>
        <p>
To be successful, WinRT licensing needs to address its real competitor: h5js and/or
WPF+ClickOnce. If WinRT is going to levy an additional licensing cost above those
technologies, then WinRT <em>must</em> have commensurate benefits to offset that cost.
</p>
        <p>
What is the cost to deploy an h5js app? Effectively zero, because the app downloads
from a <strike>web</strike> deployment server into a browser. The browsers are all
free, there’s no per-workstation license to enable downloading HTML or JavaScript,
so the cost is essentially zero.
</p>
        <p>
What is the cost to deploy a WPF app with ClickOnce? Effectively zero, because the
app downloads from a deployment server and is installed on the workstation through
a standardized ClickOnce client process. No per-workstation license is required –
as long as you have a legal copy of the OS, .NET (and thus ClickOne) are free.
</p>
        <p>
I’ve already covered the costs of deploying WinRT apps in the current scheme in my
previous blog posts. Those costs can easily add up to thousands or even millions of
added dollars – just for the privilege of deploying your own app to your own workstations.
</p>
        <p>
So does WinRT have benefits over h5js or WPF that make it work this added licensing
cost? Probably not at this time. It is a version 1 technology and so is less mature
than h5js or WPF. Unlike h5js it isn’t cross-platform, and unlike WPF it doesn’t have
a simple pre-built deployment technology like ClickOnce. It does have two benefits:
WinRT apps can run on ARM devices as well as Intel devices, and WinRT offers a superior
model for building touch-enabled apps. I’ll let you decide if those benefits are worth
thousands or millions of extra dollars.
</p>
        <p>
Assuming we agree that WinRT <em>isn’t</em> good enough to justify the added licensing
fees over its competition, the question becomes how to license WinRT side-loading
in a competitive manner.
</p>
        <p>
Microsoft has expressed the (imo) very valid concern that they don’t want to enable
the free-for-all side-loading model of the Android world. And I agree – the last thing
I want is for my kids to yet again be able to download random software from random
locations that are infested with viruses and malware. I <em>really want control</em> over
what gets into public stores. I <em>want</em> my software to be vetted when it comes
from public locations.
</p>
        <p>
At the same time, I absolutely don’t want added cost or overhead or complexity for
apps coming from my corporate marketplaces. I’m in consulting, so the model must allow
for Magenic to have a marketplace for our employees, and our consultants must also
be able to leverage the marketplaces of our clients so we have access to their apps
while we’re working for them.
</p>
        <p>
Thus far I’ve accumulated some requirements:
</p>
        <ol>
          <li>
No per-device licensing fees</li>
          <li>
One device must be able to access multiple marketplaces</li>
          <li>
Public marketplaces must be controlled (or perhaps there is just the one Microsoft
Store)</li>
          <li>
People do work from home, where the “Windows 8” edition is most common, so it should
support side-loading as well</li>
          <li>
InTune is a fine idea for deployment, but it shouldn’t be the only option – customized/tailored
“marketplace” experiences should be possible</li>
        </ol>
        <p>
          <strong>No per-device fees</strong>
        </p>
        <p>
Let’s start with this requirement. Microsoft doesn’t charge extra for us to use Windows
for business, and it makes no sense as to why they think they can charge an extra
tax for us to use WinRT for business. This includes discarding the $30/device fee
as well as not <em>requiring</em> the InTune per-device/per-month fee.
</p>
        <p>
If InTune has enough other value people will buy it, but h5js and ClickOnce don’t
have a monthly fee, so WinRT needs a comparable model.
</p>
        <p>
          <strong>Multiple marketplaces</strong>
        </p>
        <p>
As I noted above, employees of a company like Magenic need access to the Magenic marketplace,
and to the marketplace of the company(ies) where they are working as consultants.
And one would hope we’d have access to the Microsoft Store as well! This implies a
way for each device to access multiple “stores” or marketplaces.
</p>
        <p>
          <strong>Public marketplaces</strong>
        </p>
        <p>
I’m rather neutral about public marketplaces beyond the Microsoft Store. My only requirement
here, is that if Microsoft did allow such a thing to occur then they should be able
to revoke any public marketplace’s “license” or “key” if that vendor becomes a source
(intentionally or unintentionally) for malware. The bar for any public marketplace
should be as high as the Microsoft Store in that regard.
</p>
        <p>
Or perhaps a better solution is to make public stores legally liable for malware.
So it becomes possible for me to seek financial or legal recourse if a marketplace
allows malware to slip through onto my device?
</p>
        <p>
          <strong>Work from home</strong>
        </p>
        <p>
It is patently absurd to think that I can go to Best Buy and purchase a lowly Windows
RT tablet and it can side-load business apps, but the most common Windows 8 edition
(Windows 8) can’t be used to run my business apps. I can’t envision any justification
for this at all, so clearly this just needs to be fixed.
</p>
        <p>
          <strong>No InTune requirement</strong>
        </p>
        <p>
I understand the value of InTune – it does a lot of cool stuff, one of which is deployment.
But not everyone wants all that other stuff, and making InTune the only real ClickOnce
replacement makes WinRT uncompetitive. Again, h5js and ClickOnce have no monthly cost,
and WinRT needs a zero cost option as well.
</p>
        <p>
          <strong>The result</strong>
        </p>
        <p>
As a result I think the answer is to license <em>deployment servers</em> not client
devices. 
</p>
        <p>
And for public servers these licenses should be revokable so Microsoft can easily
shut down rogue public marketplaces. I’ll leave the public marketplace concept alone
for the rest of this discussion, as I’m much more interested in corporate marketplaces.
</p>
        <p>
To make this work for a small business (think 2-500 employees) the cost of a deployment
server license/key must be quite low. A 5 person company might spend 10’s or low 100’s
of dollars by not beyond that. I can see how Microsoft might want the cost to scale
somewhat, so you could envision deployment server licenses working against a “registered
device” model. I honestly think Microsoft would be best served by <em>not</em> charging
an extra fee, but if they feel they must find a new revenue source perhaps it could
work like this:
</p>
        <ul>
          <li>
&lt;=100 devices $100</li>
          <li>
&lt;=500 devices $500</li>
          <li>
&lt;=1000 devices $1000</li>
        </ul>
        <p>
MSDN subscribers should get a &lt;=10 device license as part of their subscription,
allowing for software development and testing.
</p>
        <p>
EA/SA customers might get some deployment server license “for free” as part of their
negotiated contract.
</p>
        <p>
Interestingly, Windows Phone 8 already has a corporate marketplace concept built into
the phone, where you can register your phone with a corporate marketplace. They (to
my knowledge) only support one marketplace, but the core idea is there.
</p>
        <p>
To make this work, a server admin must be able to revoke the registration of a client
device (employee leaves, device stolen, etc.), and there should probably be a pre-built
WinRT app users can run to register their device with a marketplace (perhaps based
on access to an appropriate email domain – like WP8 again).
</p>
        <p>
So a Magenic employee would run this WinRT device registration app and enter their
magenic.com email address. Perhaps this causes the marketplace server to send an email
to that address with a confirmation hyperlink. The user clicks that hyperlink to confirm
and the marketplace completes registration of that device, making the apps in that
marketplace available to the end user.
</p>
        <p>
          <strong>Conclusion</strong>
        </p>
        <p>
Again, I’m not a licensing expert. I’m simply looking at the competitive landscape
and trying to figure out how to make WinRT financially competitive with h5js and WPF+ClickOnce.
Assuming that WinRT has no incredible value proposition over its competitors (and
I don’t see that it does) then it <em>must</em> provide a cost-comparable licensing/deployment
model.
</p>
        <p>
Given that h5js and WPF+ClickOnce have a zero licensing/deployment cost, the goal
should be for WinRT apps to have a zero licensing/deployment cost.
</p>
        <p>
At the same time, I surely don’t want <em>public</em> marketplaces to come into being
without some <em>substantial</em> recourse and penalty for any such marketplace that
becomes a vector for malware.
</p>
        <p>
I think something along the lines of what I’ve proposed here can achieve these goals,
and can make WinRT into a viable business development platform in the future. My guess
is that Microsoft has a few months, perhaps 18 at most, to make this happen (or at
least to lay out a clear roadmap) before business developers <em>really</em> start
migrating away from Windows toward h5js in an effort to ensure their careers remain
vibrant and healthy.
</p>
        <img width="0" height="0" src="http://www.lhotka.net/weblog/aggbug.ashx?id=81b1601f-bce0-42e5-8cc5-2e52de8076c3" />
      <xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/RockfordLhotka/~4/hJrtoKkIFCg" height="1" width="1" /></body>
      <title>Windows 8 WinRT licensing ideas</title>
      <guid isPermaLink="false">http://www.lhotka.net/weblog/PermaLink,guid,81b1601f-bce0-42e5-8cc5-2e52de8076c3.aspx</guid>
      <link>http://www.lhotka.net/weblog/Windows8WinRTLicensingIdeas.aspx</link>
      <pubDate>Tue, 05 Mar 2013 20:33:53 GMT</pubDate>
      <description>&lt;p&gt;
I’ve now done four posts where I summarize Microsoft’s side-loading licensing scheme
in terms of just how it works, what it looks like from various business perspectives,
and why I think they have designed this scheme to compete with the wrong target (iPad
instead of HTML 5).
&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;a title="Cost to enable side-loading on a Windows 8 device" href="http://www.lhotka.net/weblog/CostToEnableSideloadingOnAWindows8Device.aspx"&gt;Cost
to enable side-loading on a Windows 8 device&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a title="Windows 8 LOB deployment ‘story’" href="http://www.lhotka.net/weblog/Windows8LOBDeploymentLsquostoryrsquo.aspx"&gt;Windows
8 LOB deployment ‘story’&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a title="Perspectives on WinRT app licensing" href="http://www.lhotka.net/weblog/PerspectivesOnWinRTAppLicensing.aspx"&gt;Perspectives
on WinRT app licensing&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a title="Windows 8 WinRT sideloading update" href="http://www.lhotka.net/weblog/Windows8WinRTSideloadingUpdate.aspx"&gt;Windows
8 WinRT sideloading update&lt;/a&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;
If you work for a large enterprise with EA/SA agreements and an IT staff that manages
all your domain-joined Windows 8 Enterprise workstations you can probably stop reading
now. You are the one demographic that is well-covered by the existing licensing model.
&lt;/p&gt;
&lt;p&gt;
If you are a small or medium business, or an enterprise (such as a franchise or co-op
org) where you have lots of non-domain joined machines, machines that run Windows
8 Pro, Windows RT, or the lowly “Windows 8” basic edition, then read on.
&lt;/p&gt;
&lt;p&gt;
After my first four posts I heard from community members and people inside Microsoft
– “ok tough guy, you’ve said what’s wrong, now how would you do it right?” (to paraphrase
of course &lt;img class="wlEmoticon wlEmoticon-smile" style="border-top-style: none; border-left-style: none; border-bottom-style: none; border-right-style: none" alt="Smile" src="http://www.lhotka.net/weblog/content/binary/Windows-Live-Writer/Windows-8-WinRT-licensing-ideas_ABFF/wlEmoticon-smile_2.png" /&gt; ).
&lt;/p&gt;
&lt;p&gt;
My first reaction is that this isn’t my job. If Microsoft wants to make WinRT unpalatable
for business developers so we all switch to cross-platform HTML 5/JavaScript (h5js)
then who am I to stop them? Besides, don’t they have high-paid experts to figure this
stuff out, and so why should I give my thoughts for free?
&lt;/p&gt;
&lt;p&gt;
My second reaction is that from 2001-today I’ve had the pleasure of working with .NET,
and these have been the most enjoyable years of my professional career. Although &lt;a href="http://typescriptlang.org/"&gt;TypeScript&lt;/a&gt; appears
to offer some reasonable wrapper around the horror that is JavaScript, I’d much prefer
it if Microsoft &lt;em&gt;didn’t&lt;/em&gt; destroy the idea of building WinRT apps with XAML/C#/VB.
&lt;/p&gt;
&lt;p&gt;
So here are my thoughts – though please keep in mind that I’m not a licensing expert,
nor did I stay at a Holiday Inn Express last night.
&lt;/p&gt;
&lt;p&gt;
To be successful, WinRT licensing needs to address its real competitor: h5js and/or
WPF+ClickOnce. If WinRT is going to levy an additional licensing cost above those
technologies, then WinRT &lt;em&gt;must&lt;/em&gt; have commensurate benefits to offset that cost.
&lt;/p&gt;
&lt;p&gt;
What is the cost to deploy an h5js app? Effectively zero, because the app downloads
from a &lt;strike&gt;web&lt;/strike&gt; deployment server into a browser. The browsers are all
free, there’s no per-workstation license to enable downloading HTML or JavaScript,
so the cost is essentially zero.
&lt;/p&gt;
&lt;p&gt;
What is the cost to deploy a WPF app with ClickOnce? Effectively zero, because the
app downloads from a deployment server and is installed on the workstation through
a standardized ClickOnce client process. No per-workstation license is required –
as long as you have a legal copy of the OS, .NET (and thus ClickOne) are free.
&lt;/p&gt;
&lt;p&gt;
I’ve already covered the costs of deploying WinRT apps in the current scheme in my
previous blog posts. Those costs can easily add up to thousands or even millions of
added dollars – just for the privilege of deploying your own app to your own workstations.
&lt;/p&gt;
&lt;p&gt;
So does WinRT have benefits over h5js or WPF that make it work this added licensing
cost? Probably not at this time. It is a version 1 technology and so is less mature
than h5js or WPF. Unlike h5js it isn’t cross-platform, and unlike WPF it doesn’t have
a simple pre-built deployment technology like ClickOnce. It does have two benefits:
WinRT apps can run on ARM devices as well as Intel devices, and WinRT offers a superior
model for building touch-enabled apps. I’ll let you decide if those benefits are worth
thousands or millions of extra dollars.
&lt;/p&gt;
&lt;p&gt;
Assuming we agree that WinRT &lt;em&gt;isn’t&lt;/em&gt; good enough to justify the added licensing
fees over its competition, the question becomes how to license WinRT side-loading
in a competitive manner.
&lt;/p&gt;
&lt;p&gt;
Microsoft has expressed the (imo) very valid concern that they don’t want to enable
the free-for-all side-loading model of the Android world. And I agree – the last thing
I want is for my kids to yet again be able to download random software from random
locations that are infested with viruses and malware. I &lt;em&gt;really want control&lt;/em&gt; over
what gets into public stores. I &lt;em&gt;want&lt;/em&gt; my software to be vetted when it comes
from public locations.
&lt;/p&gt;
&lt;p&gt;
At the same time, I absolutely don’t want added cost or overhead or complexity for
apps coming from my corporate marketplaces. I’m in consulting, so the model must allow
for Magenic to have a marketplace for our employees, and our consultants must also
be able to leverage the marketplaces of our clients so we have access to their apps
while we’re working for them.
&lt;/p&gt;
&lt;p&gt;
Thus far I’ve accumulated some requirements:
&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
No per-device licensing fees&lt;/li&gt;
&lt;li&gt;
One device must be able to access multiple marketplaces&lt;/li&gt;
&lt;li&gt;
Public marketplaces must be controlled (or perhaps there is just the one Microsoft
Store)&lt;/li&gt;
&lt;li&gt;
People do work from home, where the “Windows 8” edition is most common, so it should
support side-loading as well&lt;/li&gt;
&lt;li&gt;
InTune is a fine idea for deployment, but it shouldn’t be the only option – customized/tailored
“marketplace” experiences should be possible&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;
&lt;strong&gt;No per-device fees&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
Let’s start with this requirement. Microsoft doesn’t charge extra for us to use Windows
for business, and it makes no sense as to why they think they can charge an extra
tax for us to use WinRT for business. This includes discarding the $30/device fee
as well as not &lt;em&gt;requiring&lt;/em&gt; the InTune per-device/per-month fee.
&lt;/p&gt;
&lt;p&gt;
If InTune has enough other value people will buy it, but h5js and ClickOnce don’t
have a monthly fee, so WinRT needs a comparable model.
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Multiple marketplaces&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
As I noted above, employees of a company like Magenic need access to the Magenic marketplace,
and to the marketplace of the company(ies) where they are working as consultants.
And one would hope we’d have access to the Microsoft Store as well! This implies a
way for each device to access multiple “stores” or marketplaces.
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Public marketplaces&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
I’m rather neutral about public marketplaces beyond the Microsoft Store. My only requirement
here, is that if Microsoft did allow such a thing to occur then they should be able
to revoke any public marketplace’s “license” or “key” if that vendor becomes a source
(intentionally or unintentionally) for malware. The bar for any public marketplace
should be as high as the Microsoft Store in that regard.
&lt;/p&gt;
&lt;p&gt;
Or perhaps a better solution is to make public stores legally liable for malware.
So it becomes possible for me to seek financial or legal recourse if a marketplace
allows malware to slip through onto my device?
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Work from home&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
It is patently absurd to think that I can go to Best Buy and purchase a lowly Windows
RT tablet and it can side-load business apps, but the most common Windows 8 edition
(Windows 8) can’t be used to run my business apps. I can’t envision any justification
for this at all, so clearly this just needs to be fixed.
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;No InTune requirement&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
I understand the value of InTune – it does a lot of cool stuff, one of which is deployment.
But not everyone wants all that other stuff, and making InTune the only real ClickOnce
replacement makes WinRT uncompetitive. Again, h5js and ClickOnce have no monthly cost,
and WinRT needs a zero cost option as well.
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;The result&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
As a result I think the answer is to license &lt;em&gt;deployment servers&lt;/em&gt; not client
devices. 
&lt;/p&gt;
&lt;p&gt;
And for public servers these licenses should be revokable so Microsoft can easily
shut down rogue public marketplaces. I’ll leave the public marketplace concept alone
for the rest of this discussion, as I’m much more interested in corporate marketplaces.
&lt;/p&gt;
&lt;p&gt;
To make this work for a small business (think 2-500 employees) the cost of a deployment
server license/key must be quite low. A 5 person company might spend 10’s or low 100’s
of dollars by not beyond that. I can see how Microsoft might want the cost to scale
somewhat, so you could envision deployment server licenses working against a “registered
device” model. I honestly think Microsoft would be best served by &lt;em&gt;not&lt;/em&gt; charging
an extra fee, but if they feel they must find a new revenue source perhaps it could
work like this:
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&amp;lt;=100 devices $100&lt;/li&gt;
&lt;li&gt;
&amp;lt;=500 devices $500&lt;/li&gt;
&lt;li&gt;
&amp;lt;=1000 devices $1000&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
MSDN subscribers should get a &amp;lt;=10 device license as part of their subscription,
allowing for software development and testing.
&lt;/p&gt;
&lt;p&gt;
EA/SA customers might get some deployment server license “for free” as part of their
negotiated contract.
&lt;/p&gt;
&lt;p&gt;
Interestingly, Windows Phone 8 already has a corporate marketplace concept built into
the phone, where you can register your phone with a corporate marketplace. They (to
my knowledge) only support one marketplace, but the core idea is there.
&lt;/p&gt;
&lt;p&gt;
To make this work, a server admin must be able to revoke the registration of a client
device (employee leaves, device stolen, etc.), and there should probably be a pre-built
WinRT app users can run to register their device with a marketplace (perhaps based
on access to an appropriate email domain – like WP8 again).
&lt;/p&gt;
&lt;p&gt;
So a Magenic employee would run this WinRT device registration app and enter their
magenic.com email address. Perhaps this causes the marketplace server to send an email
to that address with a confirmation hyperlink. The user clicks that hyperlink to confirm
and the marketplace completes registration of that device, making the apps in that
marketplace available to the end user.
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Conclusion&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
Again, I’m not a licensing expert. I’m simply looking at the competitive landscape
and trying to figure out how to make WinRT financially competitive with h5js and WPF+ClickOnce.
Assuming that WinRT has no incredible value proposition over its competitors (and
I don’t see that it does) then it &lt;em&gt;must&lt;/em&gt; provide a cost-comparable licensing/deployment
model.
&lt;/p&gt;
&lt;p&gt;
Given that h5js and WPF+ClickOnce have a zero licensing/deployment cost, the goal
should be for WinRT apps to have a zero licensing/deployment cost.
&lt;/p&gt;
&lt;p&gt;
At the same time, I surely don’t want &lt;em&gt;public&lt;/em&gt; marketplaces to come into being
without some &lt;em&gt;substantial&lt;/em&gt; recourse and penalty for any such marketplace that
becomes a vector for malware.
&lt;/p&gt;
&lt;p&gt;
I think something along the lines of what I’ve proposed here can achieve these goals,
and can make WinRT into a viable business development platform in the future. My guess
is that Microsoft has a few months, perhaps 18 at most, to make this happen (or at
least to lay out a clear roadmap) before business developers &lt;em&gt;really&lt;/em&gt; start
migrating away from Windows toward h5js in an effort to ensure their careers remain
vibrant and healthy.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.lhotka.net/weblog/aggbug.ashx?id=81b1601f-bce0-42e5-8cc5-2e52de8076c3" /&gt;</description>
      <comments>http://www.lhotka.net/weblog/CommentView,guid,81b1601f-bce0-42e5-8cc5-2e52de8076c3.aspx</comments>
      <category>Windows 8</category>
      <category>WinRT</category>
    </item>
    <item>
      <trackback:ping>http://www.lhotka.net/weblog/Trackback.aspx?guid=a5a34a07-24cd-43a6-a573-42a165b8afd3</trackback:ping>
      <pingback:server>http://www.lhotka.net/weblog/pingback.aspx</pingback:server>
      <pingback:target>http://www.lhotka.net/weblog/PermaLink,guid,a5a34a07-24cd-43a6-a573-42a165b8afd3.aspx</pingback:target>
      <dc:creator>Rockford Lhotka</dc:creator>
      <wfw:comment>http://www.lhotka.net/weblog/CommentView,guid,a5a34a07-24cd-43a6-a573-42a165b8afd3.aspx</wfw:comment>
      <wfw:commentRss>http://www.lhotka.net/weblog/SyndicationService.asmx/GetEntryCommentsRss?guid=a5a34a07-24cd-43a6-a573-42a165b8afd3</wfw:commentRss>
      <slash:comments>6</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
If you’ve followed my blog recently you know I’ve done a lot of research into the
licensing around deployment (side-loading) of business apps on Windows 8 (Windows
Runtime aka WinRT).
</p>
        <ol>
          <li>
            <a href="http://www.lhotka.net/weblog/CostToEnableSideloadingOnAWindows8Device.aspx">http://www.lhotka.net/weblog/CostToEnableSideloadingOnAWindows8Device.aspx</a>
          </li>
          <li>
            <a href="http://www.lhotka.net/weblog/Windows8LOBDeploymentLsquostoryrsquo.aspx">http://www.lhotka.net/weblog/Windows8LOBDeploymentLsquostoryrsquo.aspx</a>
          </li>
          <li>
            <a href="http://www.lhotka.net/weblog/PerspectivesOnWinRTAppLicensing.aspx">http://www.lhotka.net/weblog/PerspectivesOnWinRTAppLicensing.aspx</a>
          </li>
        </ol>
        <p>
As a result of this two things have happened.
</p>
        <p>
First, I’ve had some interesting conversations with a few people at Microsoft. Some
understand the issue, others just don’t get it. If <em>you</em> think this is an issue
I suggest you have conversations with any Microsoft people you know because that’ll
help educate and pressure them to fix the problem.
</p>
        <blockquote>
          <p>
            <em>As an aside, it is hard to talk to the right people at Microsoft because the Windows
Division owns all this stuff and they don’t talk to developers. In fact, they are
almost constantly behind what’s known as the “veil of silence” – essentially unable
to discuss anything interesting without risk of being fired. This unwillingness to
talk to developers on your own platform is pretty ridiculous, and makes it virtually
impossible to generate enthusiasm for building apps on the platform. I have hopes
that Sinofsky’s departure from Microsoft will eventually allow them to come to their
senses…</em>
          </p>
        </blockquote>
        <p>
Second, I’ve had a number of people ask if I think Windows and/or Microsoft is done
for on the client, at least in terms of business software development.
</p>
        <p>
Although I think that’s a very real possibility, given just a bit more maturity in
the HTML 5/JavaScript (h5js) space, I don’t think the Windows client is a lost cause
yet either.
</p>
        <p>
The thing about the licensing/deployment side-loading story is that Microsoft has
it set up to be perfectly acceptable to large enterprises. Those orgs almost certainly
already have an EA/SA and use SCCM and run domain-joined Windows Enterprise machines.
Their Windows RT or other Win8 mobile devices are covered by the SA and/or companion
device licensing. So their only incremental cost is the $4/mo/device InTune cost.
That’s extremely comparable to the cost of MDM products for iPad/Android devices.
</p>
        <p>
Where the Microsoft story falls short is in the SMB (small-medium business) space
where businesses probably don’t have those bigger contracts and IT infrastructure.
That’s where the incremental costs start to add up pretty fast (as per my previous
blog posts and Excel cost calculator). Of course the <a href="http://en.wikipedia.org/wiki/The_Long_Tail">long
tail</a> suggests that there are a lot more SMB orgs than enterprise orgs, so the
poor story for this segment of the market is pretty devastating.
</p>
        <p>
I keep posting and talking bluntly about the licensing/deployment story because I
think we all need to be aware of what’s going on. We all need to know it so we can
make near-term decisions regarding the use of WPF, h5js, and/or WinRT. And because
those of us who enjoy building smart client Windows apps can pressure Microsoft into
fixing the licensing story before it is too late.
</p>
        <p>
Finally, speaking of “too late”, that’s a slippery phrase. 
</p>
        <p>
Businesses are mostly just now upgrading to Windows 7, and won’t go to Windows 8 for
2-4 more years. So in a sense you can argue that Microsoft has a lot of time to fix
the side-loading story, because almost no one is going to care about this for a long
time anyway.
</p>
        <p>
On the other hand, the <em>developer community</em> tends to move a bit faster. We’re
a fickle bunch. If we don’t perceive WinRT as a viable future platform for business
apps then we’ll start retooling our skills to something else in order to preserve
our careers. That won’t take 4 years. I suspect Microsoft has less than 2 years to
get developer buy-in to WinRT or the siren call of h5js will become too much to bear.
</p>
        <p>
At the moment of course, h5js has no rational or consistent smart client deployment
story either. Although its ability to support smart client business development is
maturing pretty fast, the only widespread deployment model still requires a real-time
connection from the client device to a web server. Once the industry settles on a
way to package and deploy “h5js apps” for offline use (and I believe that _will_ happen)
then Microsoft’s ability to generate enthusiasm for WinRT becomes much harder.
</p>
        <p>
I see this as a race. Can Microsoft generate enthusiasm around WinRT in the business
developer world (by fixing the side-loading issue and by <strong>actually talking
to developers at all</strong>)? And can they do that faster than the h5js world can
devise and settle on a reliable smart client story of their own (because they already
have developer enthusiasm).
</p>
        <p>
In short: 
</p>
        <ol>
          <li>
Microsoft has the technical issues pretty much solved, but seems intent on alienating
business developers.</li>
          <li>
The h5js world has a lot of developer enthusiasm, but has yet to tackle or solve some
critical technical issues</li>
        </ol>
        <p>
It’ll be fun to see what happens over the next couple years.
</p>
        <img width="0" height="0" src="http://www.lhotka.net/weblog/aggbug.ashx?id=a5a34a07-24cd-43a6-a573-42a165b8afd3" />
      <xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/RockfordLhotka/~4/NqwdIWeOZXo" height="1" width="1" /></body>
      <title>Windows 8 WinRT sideloading update</title>
      <guid isPermaLink="false">http://www.lhotka.net/weblog/PermaLink,guid,a5a34a07-24cd-43a6-a573-42a165b8afd3.aspx</guid>
      <link>http://www.lhotka.net/weblog/Windows8WinRTSideloadingUpdate.aspx</link>
      <pubDate>Tue, 26 Feb 2013 18:21:15 GMT</pubDate>
      <description>&lt;p&gt;
If you’ve followed my blog recently you know I’ve done a lot of research into the
licensing around deployment (side-loading) of business apps on Windows 8 (Windows
Runtime aka WinRT).
&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;a href="http://www.lhotka.net/weblog/CostToEnableSideloadingOnAWindows8Device.aspx"&gt;http://www.lhotka.net/weblog/CostToEnableSideloadingOnAWindows8Device.aspx&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="http://www.lhotka.net/weblog/Windows8LOBDeploymentLsquostoryrsquo.aspx"&gt;http://www.lhotka.net/weblog/Windows8LOBDeploymentLsquostoryrsquo.aspx&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="http://www.lhotka.net/weblog/PerspectivesOnWinRTAppLicensing.aspx"&gt;http://www.lhotka.net/weblog/PerspectivesOnWinRTAppLicensing.aspx&lt;/a&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;
As a result of this two things have happened.
&lt;/p&gt;
&lt;p&gt;
First, I’ve had some interesting conversations with a few people at Microsoft. Some
understand the issue, others just don’t get it. If &lt;em&gt;you&lt;/em&gt; think this is an issue
I suggest you have conversations with any Microsoft people you know because that’ll
help educate and pressure them to fix the problem.
&lt;/p&gt;
&lt;blockquote&gt; 
&lt;p&gt;
&lt;em&gt;As an aside, it is hard to talk to the right people at Microsoft because the Windows
Division owns all this stuff and they don’t talk to developers. In fact, they are
almost constantly behind what’s known as the “veil of silence” – essentially unable
to discuss anything interesting without risk of being fired. This unwillingness to
talk to developers on your own platform is pretty ridiculous, and makes it virtually
impossible to generate enthusiasm for building apps on the platform. I have hopes
that Sinofsky’s departure from Microsoft will eventually allow them to come to their
senses…&lt;/em&gt;
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
Second, I’ve had a number of people ask if I think Windows and/or Microsoft is done
for on the client, at least in terms of business software development.
&lt;/p&gt;
&lt;p&gt;
Although I think that’s a very real possibility, given just a bit more maturity in
the HTML 5/JavaScript (h5js) space, I don’t think the Windows client is a lost cause
yet either.
&lt;/p&gt;
&lt;p&gt;
The thing about the licensing/deployment side-loading story is that Microsoft has
it set up to be perfectly acceptable to large enterprises. Those orgs almost certainly
already have an EA/SA and use SCCM and run domain-joined Windows Enterprise machines.
Their Windows RT or other Win8 mobile devices are covered by the SA and/or companion
device licensing. So their only incremental cost is the $4/mo/device InTune cost.
That’s extremely comparable to the cost of MDM products for iPad/Android devices.
&lt;/p&gt;
&lt;p&gt;
Where the Microsoft story falls short is in the SMB (small-medium business) space
where businesses probably don’t have those bigger contracts and IT infrastructure.
That’s where the incremental costs start to add up pretty fast (as per my previous
blog posts and Excel cost calculator). Of course the &lt;a href="http://en.wikipedia.org/wiki/The_Long_Tail"&gt;long
tail&lt;/a&gt; suggests that there are a lot more SMB orgs than enterprise orgs, so the
poor story for this segment of the market is pretty devastating.
&lt;/p&gt;
&lt;p&gt;
I keep posting and talking bluntly about the licensing/deployment story because I
think we all need to be aware of what’s going on. We all need to know it so we can
make near-term decisions regarding the use of WPF, h5js, and/or WinRT. And because
those of us who enjoy building smart client Windows apps can pressure Microsoft into
fixing the licensing story before it is too late.
&lt;/p&gt;
&lt;p&gt;
Finally, speaking of “too late”, that’s a slippery phrase. 
&lt;/p&gt;
&lt;p&gt;
Businesses are mostly just now upgrading to Windows 7, and won’t go to Windows 8 for
2-4 more years. So in a sense you can argue that Microsoft has a lot of time to fix
the side-loading story, because almost no one is going to care about this for a long
time anyway.
&lt;/p&gt;
&lt;p&gt;
On the other hand, the &lt;em&gt;developer community&lt;/em&gt; tends to move a bit faster. We’re
a fickle bunch. If we don’t perceive WinRT as a viable future platform for business
apps then we’ll start retooling our skills to something else in order to preserve
our careers. That won’t take 4 years. I suspect Microsoft has less than 2 years to
get developer buy-in to WinRT or the siren call of h5js will become too much to bear.
&lt;/p&gt;
&lt;p&gt;
At the moment of course, h5js has no rational or consistent smart client deployment
story either. Although its ability to support smart client business development is
maturing pretty fast, the only widespread deployment model still requires a real-time
connection from the client device to a web server. Once the industry settles on a
way to package and deploy “h5js apps” for offline use (and I believe that _will_ happen)
then Microsoft’s ability to generate enthusiasm for WinRT becomes much harder.
&lt;/p&gt;
&lt;p&gt;
I see this as a race. Can Microsoft generate enthusiasm around WinRT in the business
developer world (by fixing the side-loading issue and by &lt;strong&gt;actually talking
to developers at all&lt;/strong&gt;)? And can they do that faster than the h5js world can
devise and settle on a reliable smart client story of their own (because they already
have developer enthusiasm).
&lt;/p&gt;
&lt;p&gt;
In short: 
&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
Microsoft has the technical issues pretty much solved, but seems intent on alienating
business developers.&lt;/li&gt;
&lt;li&gt;
The h5js world has a lot of developer enthusiasm, but has yet to tackle or solve some
critical technical issues&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;
It’ll be fun to see what happens over the next couple years.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.lhotka.net/weblog/aggbug.ashx?id=a5a34a07-24cd-43a6-a573-42a165b8afd3" /&gt;</description>
      <comments>http://www.lhotka.net/weblog/CommentView,guid,a5a34a07-24cd-43a6-a573-42a165b8afd3.aspx</comments>
      <category>h5js</category>
      <category>Windows 8</category>
      <category>WinRT</category>
    </item>
    <item>
      <trackback:ping>http://www.lhotka.net/weblog/Trackback.aspx?guid=d63047b7-2c14-4dc5-aefa-c12f50102300</trackback:ping>
      <pingback:server>http://www.lhotka.net/weblog/pingback.aspx</pingback:server>
      <pingback:target>http://www.lhotka.net/weblog/PermaLink,guid,d63047b7-2c14-4dc5-aefa-c12f50102300.aspx</pingback:target>
      <dc:creator>Rockford Lhotka</dc:creator>
      <wfw:comment>http://www.lhotka.net/weblog/CommentView,guid,d63047b7-2c14-4dc5-aefa-c12f50102300.aspx</wfw:comment>
      <wfw:commentRss>http://www.lhotka.net/weblog/SyndicationService.asmx/GetEntryCommentsRss?guid=d63047b7-2c14-4dc5-aefa-c12f50102300</wfw:commentRss>
      <slash:comments>4</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
A short time ago I decided to move the CSLA .NET project off my self-hosted Subversion
server to GitHub.
</p>
        <p>
I’ve used svn for years now, and really liked it a lot. But my server was getting
old in the tooth, and everyone seems totally nutso about git. Apparently it not only
does source control, but makes a mean gourmet meal and will eventually solve world
hunger.
</p>
        <p>
I want to thank <a href="https://github.com/nschonni">Nick Schonning</a> for helping
get a lot of the GitHub stuff up and running. He just jumped in and was a great help,
thank you!
</p>
        <p>
My original run at moving was to just export the latest trunk from svn and add it
to a blank new git repo. Sure I lost a decade’s worth of history, but my wife often
tells me I just need to let go and stop being a pack rat <img class="wlEmoticon wlEmoticon-smile" style="border-top-style: none; border-left-style: none; border-bottom-style: none; border-right-style: none" alt="Smile" src="http://www.lhotka.net/weblog/content/binary/Windows-Live-Writer/Adventures-in-Git-land_117E9/wlEmoticon-smile_2.png" /></p>
        <p>
That worked really quite well, or so I thought. The ultimate problem hadn’t really
surfaced yet, and wouldn’t for a while longer. You see I was the only person using
the repo, and only from a Windows dev workstation, so the (really bad) default settings
for GitHub repos in terms of line termination characters didn’t cause me issues.
</p>
        <blockquote>
          <p>
Here’s some technical detail on the <a href="http://timclem.wordpress.com/2012/03/01/mind-the-end-of-your-line/">background
of the line termination issue</a> if you are curious about stuff that shouldn’t exist
in modern computing…
</p>
        </blockquote>
        <p>
Then Nick kindly ran an svn2git tool and provided me with that decade’s worth of history
I’d lost. Awesome! I added that to the repo and merged in the changes I’d been making.
I think this is where things started to go awry, because Nick ran that tool on a Linux
box, resulting in some files using LF and some using CR/LF line termination characters.
</p>
        <p>
What happens to you at this point is that you change one line in a code file and GitHub
thinks you’ve changed every line in that file. And often random other files too. So
I’d change one file and end up with a few dozen files in my next commit. Total chaos!
</p>
        <p>
Nick added a .gitattributes file, but the merge of his fork failed. People keep telling
me git has flawless merges, but in my brief experience this is far from true… So I
added the .gitattributes file directly. And I followed the instructions on the <a href="https://help.github.com/articles/dealing-with-line-endings">GitHub
page dealing with line endings</a>.
</p>
        <blockquote>
          <p>
            <font style="background-color: #ffff00">WARNING: DO NOT FOLLOW THEIR INSTRUCTIONS
– THEY LEAD TO A BAD PLACE!</font>
          </p>
        </blockquote>
        <p>
I was then referred to a <a href="http://stackoverflow.com/questions/170961/whats-the-best-crlf-handling-strategy-with-git">stackoverflow
post on the topic</a>. Ultimately it appears that this thread (in and amongst the
arrogance and anti-Microsoft sentiment) was what fed into the GitHub help page.
</p>
        <blockquote>
          <p>
            <font style="background-color: #ffff00">AGAIN, WARNING: DO NOT FOLLOW THEIR INSTRUCTIONS
– THEY LEAD TO A BAD PLACE!</font>
          </p>
        </blockquote>
        <p>
See the thing is this: I followed the instructions from these two sources. Several
times. Carefully, because I kept thinking I’d overlooked some minor detail. At no
point was the problem solved. In fact, it turns out that manually adding a .gitattributes
file and following these instructions <em>blocked the resolution of the problem</em>.
</p>
        <p>
Scott Hanselman discusses the issue in his blog post on <a href="http://www.hanselman.com/blog/YoureJustAnotherCarriageReturnLineFeedInTheWall.aspx">the
pink wall (of doom)</a>. Although this post has good info, it still left me confused
– and that’s the reason I’m writing THIS blog post.
</p>
        <p>
What I learned out of all this is that Scott is right: the GitHub for Windows GUI
tool does fix the problem. <em>But only if you haven’t already tried to follow the
manual instructions!!!!</em> (also Git for Windows is not the same as GitHub for Windows,
and you need <em>GitHub for Windows</em>.
</p>
        <p>
The correct overall solution is this:
</p>
        <p>
Create your GitHub repo
</p>
        <p>
Clone your repo to your Windows dev workstation
</p>
        <p>
At this point you will <em>not</em> have a .gitattributes file in your repo (and this
is important!!!)
</p>
        <p>
Add the client-side repo to the GitHub for Windows GUI tool (if necessary)
</p>
        <p>
          <a href="http://www.lhotka.net/weblog/content/binary/Windows-Live-Writer/Adventures-in-Git-land_117E9/image_2.png">
            <img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://www.lhotka.net/weblog/content/binary/Windows-Live-Writer/Adventures-in-Git-land_117E9/image_thumb.png" width="244" height="146" />
          </a>
        </p>
        <p>
Then open the repo
</p>
        <p>
          <a href="http://www.lhotka.net/weblog/content/binary/Windows-Live-Writer/Adventures-in-Git-land_117E9/image_4.png">
            <img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://www.lhotka.net/weblog/content/binary/Windows-Live-Writer/Adventures-in-Git-land_117E9/image_thumb_1.png" width="244" height="146" />
          </a>
        </p>
        <p>
And click the Tools | Settings menu option
</p>
        <p>
          <a href="http://www.lhotka.net/weblog/content/binary/Windows-Live-Writer/Adventures-in-Git-land_117E9/image_6.png">
            <img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://www.lhotka.net/weblog/content/binary/Windows-Live-Writer/Adventures-in-Git-land_117E9/image_thumb_2.png" width="244" height="146" />
          </a>
        </p>
        <p>
This is where I hit the problem. Because I’d already done the manual (and not successful)
steps to address the problem, I already had a .gitattributes file. As a result my
screen didn’t match what I’m showing you here in this blog post. You <em>really</em> need
to see the screen I’m showing here!!
</p>
        <p>
The value of this screen is that the GUI tool will perform magic of some sort. It
adds a .gitattributes file as shown, and when you click the Update button it will
trigger an update to all the files in your repo. 
</p>
        <p>
Commit those updates to fix all the line endings for all your files
</p>
        <p>
Then push the commit to GitHub
</p>
        <p>
From what I can determine this has solved the issue. So after wasting several hours
farting around with cryptic command line tools, the solution was to let a tool do
magic for a couple minutes. If only I’d known to delete the .gitattributes file earlier
(or to have never manually created it) I’d have been infinitely happier.
</p>
        <p>
In summary, git does seem pretty cool. But it clearly is no more of a silver bullet
or super-solution than anything else in our industry. It is a decent tool, but I suggest
taking all the hype about git with a shaker of salt.
</p>
        <img width="0" height="0" src="http://www.lhotka.net/weblog/aggbug.ashx?id=d63047b7-2c14-4dc5-aefa-c12f50102300" />
      <xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/RockfordLhotka/~4/IJVWbuCQOg8" height="1" width="1" /></body>
      <title>Adventures in Git-land</title>
      <guid isPermaLink="false">http://www.lhotka.net/weblog/PermaLink,guid,d63047b7-2c14-4dc5-aefa-c12f50102300.aspx</guid>
      <link>http://www.lhotka.net/weblog/AdventuresInGitland.aspx</link>
      <pubDate>Tue, 26 Feb 2013 02:23:58 GMT</pubDate>
      <description>&lt;p&gt;
A short time ago I decided to move the CSLA .NET project off my self-hosted Subversion
server to GitHub.
&lt;/p&gt;
&lt;p&gt;
I’ve used svn for years now, and really liked it a lot. But my server was getting
old in the tooth, and everyone seems totally nutso about git. Apparently it not only
does source control, but makes a mean gourmet meal and will eventually solve world
hunger.
&lt;/p&gt;
&lt;p&gt;
I want to thank &lt;a href="https://github.com/nschonni"&gt;Nick Schonning&lt;/a&gt; for helping
get a lot of the GitHub stuff up and running. He just jumped in and was a great help,
thank you!
&lt;/p&gt;
&lt;p&gt;
My original run at moving was to just export the latest trunk from svn and add it
to a blank new git repo. Sure I lost a decade’s worth of history, but my wife often
tells me I just need to let go and stop being a pack rat &lt;img class="wlEmoticon wlEmoticon-smile" style="border-top-style: none; border-left-style: none; border-bottom-style: none; border-right-style: none" alt="Smile" src="http://www.lhotka.net/weblog/content/binary/Windows-Live-Writer/Adventures-in-Git-land_117E9/wlEmoticon-smile_2.png" /&gt;
&lt;/p&gt;
&lt;p&gt;
That worked really quite well, or so I thought. The ultimate problem hadn’t really
surfaced yet, and wouldn’t for a while longer. You see I was the only person using
the repo, and only from a Windows dev workstation, so the (really bad) default settings
for GitHub repos in terms of line termination characters didn’t cause me issues.
&lt;/p&gt;
&lt;blockquote&gt; 
&lt;p&gt;
Here’s some technical detail on the &lt;a href="http://timclem.wordpress.com/2012/03/01/mind-the-end-of-your-line/"&gt;background
of the line termination issue&lt;/a&gt; if you are curious about stuff that shouldn’t exist
in modern computing…
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
Then Nick kindly ran an svn2git tool and provided me with that decade’s worth of history
I’d lost. Awesome! I added that to the repo and merged in the changes I’d been making.
I think this is where things started to go awry, because Nick ran that tool on a Linux
box, resulting in some files using LF and some using CR/LF line termination characters.
&lt;/p&gt;
&lt;p&gt;
What happens to you at this point is that you change one line in a code file and GitHub
thinks you’ve changed every line in that file. And often random other files too. So
I’d change one file and end up with a few dozen files in my next commit. Total chaos!
&lt;/p&gt;
&lt;p&gt;
Nick added a .gitattributes file, but the merge of his fork failed. People keep telling
me git has flawless merges, but in my brief experience this is far from true… So I
added the .gitattributes file directly. And I followed the instructions on the &lt;a href="https://help.github.com/articles/dealing-with-line-endings"&gt;GitHub
page dealing with line endings&lt;/a&gt;.
&lt;/p&gt;
&lt;blockquote&gt; 
&lt;p&gt;
&lt;font style="background-color: #ffff00"&gt;WARNING: DO NOT FOLLOW THEIR INSTRUCTIONS
– THEY LEAD TO A BAD PLACE!&lt;/font&gt;
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
I was then referred to a &lt;a href="http://stackoverflow.com/questions/170961/whats-the-best-crlf-handling-strategy-with-git"&gt;stackoverflow
post on the topic&lt;/a&gt;. Ultimately it appears that this thread (in and amongst the
arrogance and anti-Microsoft sentiment) was what fed into the GitHub help page.
&lt;/p&gt;
&lt;blockquote&gt; 
&lt;p&gt;
&lt;font style="background-color: #ffff00"&gt;AGAIN, WARNING: DO NOT FOLLOW THEIR INSTRUCTIONS
– THEY LEAD TO A BAD PLACE!&lt;/font&gt;
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
See the thing is this: I followed the instructions from these two sources. Several
times. Carefully, because I kept thinking I’d overlooked some minor detail. At no
point was the problem solved. In fact, it turns out that manually adding a .gitattributes
file and following these instructions &lt;em&gt;blocked the resolution of the problem&lt;/em&gt;.
&lt;/p&gt;
&lt;p&gt;
Scott Hanselman discusses the issue in his blog post on &lt;a href="http://www.hanselman.com/blog/YoureJustAnotherCarriageReturnLineFeedInTheWall.aspx"&gt;the
pink wall (of doom)&lt;/a&gt;. Although this post has good info, it still left me confused
– and that’s the reason I’m writing THIS blog post.
&lt;/p&gt;
&lt;p&gt;
What I learned out of all this is that Scott is right: the GitHub for Windows GUI
tool does fix the problem. &lt;em&gt;But only if you haven’t already tried to follow the
manual instructions!!!!&lt;/em&gt; (also Git for Windows is not the same as GitHub for Windows,
and you need &lt;em&gt;GitHub for Windows&lt;/em&gt;.
&lt;/p&gt;
&lt;p&gt;
The correct overall solution is this:
&lt;/p&gt;
&lt;p&gt;
Create your GitHub repo
&lt;/p&gt;
&lt;p&gt;
Clone your repo to your Windows dev workstation
&lt;/p&gt;
&lt;p&gt;
At this point you will &lt;em&gt;not&lt;/em&gt; have a .gitattributes file in your repo (and this
is important!!!)
&lt;/p&gt;
&lt;p&gt;
Add the client-side repo to the GitHub for Windows GUI tool (if necessary)
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.lhotka.net/weblog/content/binary/Windows-Live-Writer/Adventures-in-Git-land_117E9/image_2.png"&gt;&lt;img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://www.lhotka.net/weblog/content/binary/Windows-Live-Writer/Adventures-in-Git-land_117E9/image_thumb.png" width="244" height="146" /&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
Then open the repo
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.lhotka.net/weblog/content/binary/Windows-Live-Writer/Adventures-in-Git-land_117E9/image_4.png"&gt;&lt;img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://www.lhotka.net/weblog/content/binary/Windows-Live-Writer/Adventures-in-Git-land_117E9/image_thumb_1.png" width="244" height="146" /&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
And click the Tools | Settings menu option
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.lhotka.net/weblog/content/binary/Windows-Live-Writer/Adventures-in-Git-land_117E9/image_6.png"&gt;&lt;img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://www.lhotka.net/weblog/content/binary/Windows-Live-Writer/Adventures-in-Git-land_117E9/image_thumb_2.png" width="244" height="146" /&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
This is where I hit the problem. Because I’d already done the manual (and not successful)
steps to address the problem, I already had a .gitattributes file. As a result my
screen didn’t match what I’m showing you here in this blog post. You &lt;em&gt;really&lt;/em&gt; need
to see the screen I’m showing here!!
&lt;/p&gt;
&lt;p&gt;
The value of this screen is that the GUI tool will perform magic of some sort. It
adds a .gitattributes file as shown, and when you click the Update button it will
trigger an update to all the files in your repo. 
&lt;/p&gt;
&lt;p&gt;
Commit those updates to fix all the line endings for all your files
&lt;/p&gt;
&lt;p&gt;
Then push the commit to GitHub
&lt;/p&gt;
&lt;p&gt;
From what I can determine this has solved the issue. So after wasting several hours
farting around with cryptic command line tools, the solution was to let a tool do
magic for a couple minutes. If only I’d known to delete the .gitattributes file earlier
(or to have never manually created it) I’d have been infinitely happier.
&lt;/p&gt;
&lt;p&gt;
In summary, git does seem pretty cool. But it clearly is no more of a silver bullet
or super-solution than anything else in our industry. It is a decent tool, but I suggest
taking all the hype about git with a shaker of salt.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.lhotka.net/weblog/aggbug.ashx?id=d63047b7-2c14-4dc5-aefa-c12f50102300" /&gt;</description>
      <comments>http://www.lhotka.net/weblog/CommentView,guid,d63047b7-2c14-4dc5-aefa-c12f50102300.aspx</comments>
      <category>git</category>
    </item>
    <item>
      <trackback:ping>http://www.lhotka.net/weblog/Trackback.aspx?guid=fac037f9-7959-4a90-9315-634b8e9c037e</trackback:ping>
      <pingback:server>http://www.lhotka.net/weblog/pingback.aspx</pingback:server>
      <pingback:target>http://www.lhotka.net/weblog/PermaLink,guid,fac037f9-7959-4a90-9315-634b8e9c037e.aspx</pingback:target>
      <dc:creator>Rockford Lhotka</dc:creator>
      <wfw:comment>http://www.lhotka.net/weblog/CommentView,guid,fac037f9-7959-4a90-9315-634b8e9c037e.aspx</wfw:comment>
      <wfw:commentRss>http://www.lhotka.net/weblog/SyndicationService.asmx/GetEntryCommentsRss?guid=fac037f9-7959-4a90-9315-634b8e9c037e</wfw:commentRss>
      <slash:comments>1</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
First: CSLA .NET has moved to GitHub and has a new home page: <a href="http://www.cslanet.com">www.cslanet.com</a></p>
        <p>
Second, the most recent beta version 4.5.12, is now available for download and through
nuget. There are a couple bug fixes, and some server-side data portal enhancements
to better support the use of IoC containers for creating business objects when using
the encapsulated data portal model.
</p>
        <p>
In summary, you can create an implementation of Csla.Server.IDataPortalInterceptor
where you can implement code that runs at the very start and very end of <em>every
single data portal call</em>. Then you can create an implementation of Csla.Server.IDataPortalActivator
where you can assume responsibility for creating an instance of the requested business
type, and for initializing the object instance (thus supporting property injection).
</p>
        <p>
Along with this, the data portal now allows you to use interfaces instead of concrete
types (assuming you've supplied an IDataPortalActivator of course):
</p>
        <blockquote style="MARGIN-RIGHT: 0px" dir="ltr">
          <p>
var obj = Csla.DataPortal.FetchAsync&lt;IPersonEdit&gt;();
</p>
        </blockquote>
        <p>
In this example, the 'obj' reference might be any type that implements IPersonEdit,
and the actual concrete type is determined by your IDataPortalActivator implementation.
The default implementation is to create an instance of the supplied type, so the supplied
type must be a concrete type. As a result, no existing code is affected by this change.
</p>
        <img width="0" height="0" src="http://www.lhotka.net/weblog/aggbug.ashx?id=fac037f9-7959-4a90-9315-634b8e9c037e" />
      <xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/RockfordLhotka/~4/s77ZjoV8hOU" height="1" width="1" /></body>
      <title>CSLA 4 version 4.5.12 beta released</title>
      <guid isPermaLink="false">http://www.lhotka.net/weblog/PermaLink,guid,fac037f9-7959-4a90-9315-634b8e9c037e.aspx</guid>
      <link>http://www.lhotka.net/weblog/CSLA4Version4512BetaReleased.aspx</link>
      <pubDate>Wed, 20 Feb 2013 23:30:19 GMT</pubDate>
      <description>&lt;p&gt;
First: CSLA .NET has moved to GitHub and has a new home page: &lt;a href="http://www.cslanet.com"&gt;www.cslanet.com&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
Second, the most recent beta version 4.5.12, is now available for download and through
nuget. There are a couple bug fixes, and some server-side data portal enhancements
to better support the use of IoC containers for creating business objects when using
the encapsulated data portal model.
&lt;/p&gt;
&lt;p&gt;
In summary, you can create an implementation of Csla.Server.IDataPortalInterceptor
where you can implement code that runs at the very start and very end of &lt;em&gt;every
single data portal call&lt;/em&gt;. Then you can create an implementation of Csla.Server.IDataPortalActivator
where you can assume responsibility for creating an instance of the requested business
type, and for initializing the object instance (thus supporting property injection).
&lt;/p&gt;
&lt;p&gt;
Along with this, the data portal now allows you to use interfaces instead of concrete
types (assuming you've supplied an IDataPortalActivator of course):
&lt;/p&gt;
&lt;blockquote style="MARGIN-RIGHT: 0px" dir=ltr&gt; 
&lt;p&gt;
var obj = Csla.DataPortal.FetchAsync&amp;lt;IPersonEdit&amp;gt;();
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
In this example, the 'obj' reference might be any type that implements IPersonEdit,
and the actual concrete type is determined by your IDataPortalActivator implementation.
The default implementation is to create an instance of the supplied type, so the supplied
type must be a concrete type. As a result, no existing code is affected by this change.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.lhotka.net/weblog/aggbug.ashx?id=fac037f9-7959-4a90-9315-634b8e9c037e" /&gt;</description>
      <comments>http://www.lhotka.net/weblog/CommentView,guid,fac037f9-7959-4a90-9315-634b8e9c037e.aspx</comments>
      <category>CSLA .NET</category>
    </item>
    <item>
      <trackback:ping>http://www.lhotka.net/weblog/Trackback.aspx?guid=4a9a1e7e-3459-4ff0-8b00-a9759008ef0e</trackback:ping>
      <pingback:server>http://www.lhotka.net/weblog/pingback.aspx</pingback:server>
      <pingback:target>http://www.lhotka.net/weblog/PermaLink,guid,4a9a1e7e-3459-4ff0-8b00-a9759008ef0e.aspx</pingback:target>
      <dc:creator>Rockford Lhotka</dc:creator>
      <wfw:comment>http://www.lhotka.net/weblog/CommentView,guid,4a9a1e7e-3459-4ff0-8b00-a9759008ef0e.aspx</wfw:comment>
      <wfw:commentRss>http://www.lhotka.net/weblog/SyndicationService.asmx/GetEntryCommentsRss?guid=4a9a1e7e-3459-4ff0-8b00-a9759008ef0e</wfw:commentRss>
      <slash:comments>8</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
In a recent email thread I ended up writing a lengthy bit of content summarizing some
of my thoughts around the idea of automatically projecting js code into an HTML 5
(h5js) browser app.
</p>
        <p>
Another participant in the thread mentioned that he’s a strong proponent of separation
of concerns, and in particular keeping the “model” separate from data access. In his
context the “model” is basically a set of data container or DTO objects. My response:
</p>
        <p>
-----------------------------
</p>
        <p>
I agree about separation of concerns at the lower levels.
</p>
        <p>
I am a firm believer in domain focused business objects though. In the use of “real”
OOD, which largely eliminates the need for add-on hacks like a viewmodel.
</p>
        <p>
In other words, apps should have clearly defined logical layers. I use this model:
</p>
        <blockquote>
          <p>
Interface 
<br />
Interface control 
<br />
Business 
<br />
Data access 
<br />
Data storage
</p>
        </blockquote>
        <p>
This model works for pretty much everything: web apps, smart client apps, service
apps, workflow tasks (apps), etc.
</p>
        <p>
The key is that the business layer consists of honest-to-god real life business domain
objects. These are designed using OOD so they reflect the requirements of the user
scenario, not the database design.
</p>
        <p>
If you have data-centric objects, they’ll live in the Data access layer. And that’s
pretty common when using any ORM or something like EF, where the tools help you create
data-centric types. That’s very useful – then all you need to do is use object:object
mapping (OOM) to get the data from the data-centric objects into the more meaningful
business domain objects.
</p>
        <p>
At no point should any layer talk to the database other than the Data access layer.
And at no point should the Interface/Interface control layers interact with anything
except the Business layer.
</p>
        <p>
Given all that, the question with smart client web apps (as I’ve taken to calling
these weird h5js/.NET hybrids) is whether you are using a service-oriented architecture
or an n-tier architecture. This choice must be made _<i>first</i>_ because it impacts
every other decision.
</p>
        <p>
The service-oriented approach says you are creating a system composed of multiple
apps. In our discussion this would be the smart client h5js app and the server-side
service app. SOA mandates that these apps don’t trust each other, and that they communicate
through loosely coupled and clearly defined interface contracts. That allows the apps
to version independently. And the lack of trust means that data flowing from the consuming
app (h5js) to the service app isn’t trusted – which makes sense given how easy it
is to hack anything running in the browser. In this world each app should (imo) consist
of a series of layers such as those I mentioned earlier.
</p>
        <p>
The n-tier approach says you are creating one app with multiple layers, and those
layers might be deployed on different physical tiers. Because this is one app, the
layers can and should have reasonable levels of trust between them. As a result you
shouldn’t feel the need to re-run business logic just because the data flowed from
one layer/tier to another (completely different from SOA).
</p>
        <p>
N-tier can be challenging because you typically have to decide where to physically
put the business layer: on the client to give the user a rich and interactive experience,
or on the server for more control and easier maintenance. In the case of my CSLA .NET
framework I embraced the concept of _<i>mobile objects</i>_ where the business layer
literally runs on the client AND on the server, allowing you to easily run business
logic where most appropriate. Sadly this requires that the same code can actually
run on the client and server, which isn’t the case when the client and server are
disparate platforms (e.g. h5js and .NET).
</p>
        <p>
This idea of projecting server-side business domain objects into the client fits naturally
into the n-tier world. This has been an area of deep discussion for months within
the CSLA dev team – how to make it practical to translate the rich domain business
behaviors into js without imposing a major burden of writing js alongside C#.
</p>
        <p>
CSLA objects have a very rich set of rules and behaviors that ideally would be automatically
projected into a js business layer for use by the smart client h5js Interface and
Interface control layers. I love this idea – but the trick is to make it possible
such that there’s not a major new burden for developers.
</p>
        <p>
This idea of projecting server-side business domain objects into the client is a less
natural fit for a service-oriented system, because there’s a clear and obvious level
of coupling between the service app and the h5js app (given that parts of the h5js
app literally generate based on the service app). I’m not sure this is a total roadblock,
but you have to go into this recognizing that such an approach compromises the primary
purpose of SOA, which is loose coupling between the apps in the system…
</p>
        <img width="0" height="0" src="http://www.lhotka.net/weblog/aggbug.ashx?id=4a9a1e7e-3459-4ff0-8b00-a9759008ef0e" />
      <xhtml:img xmlns:xhtml="http://www.w3.org/1999/xhtml" src="http://feeds.feedburner.com/~r/RockfordLhotka/~4/XUDjQFKPJtk" height="1" width="1" /></body>
      <title>Projecting js code from a .NET business layer</title>
      <guid isPermaLink="false">http://www.lhotka.net/weblog/PermaLink,guid,4a9a1e7e-3459-4ff0-8b00-a9759008ef0e.aspx</guid>
      <link>http://www.lhotka.net/weblog/ProjectingJsCodeFromANETBusinessLayer.aspx</link>
      <pubDate>Thu, 14 Feb 2013 16:39:23 GMT</pubDate>
      <description>&lt;p&gt;
In a recent email thread I ended up writing a lengthy bit of content summarizing some
of my thoughts around the idea of automatically projecting js code into an HTML 5
(h5js) browser app.
&lt;/p&gt;
&lt;p&gt;
Another participant in the thread mentioned that he’s a strong proponent of separation
of concerns, and in particular keeping the “model” separate from data access. In his
context the “model” is basically a set of data container or DTO objects. My response:
&lt;/p&gt;
&lt;p&gt;
-----------------------------
&lt;/p&gt;
&lt;p&gt;
I agree about separation of concerns at the lower levels.
&lt;/p&gt;
&lt;p&gt;
I am a firm believer in domain focused business objects though. In the use of “real”
OOD, which largely eliminates the need for add-on hacks like a viewmodel.
&lt;/p&gt;
&lt;p&gt;
In other words, apps should have clearly defined logical layers. I use this model:
&lt;/p&gt;
&lt;blockquote&gt; 
&lt;p&gt;
Interface 
&lt;br /&gt;
Interface control 
&lt;br /&gt;
Business 
&lt;br /&gt;
Data access 
&lt;br /&gt;
Data storage
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
This model works for pretty much everything: web apps, smart client apps, service
apps, workflow tasks (apps), etc.
&lt;/p&gt;
&lt;p&gt;
The key is that the business layer consists of honest-to-god real life business domain
objects. These are designed using OOD so they reflect the requirements of the user
scenario, not the database design.
&lt;/p&gt;
&lt;p&gt;
If you have data-centric objects, they’ll live in the Data access layer. And that’s
pretty common when using any ORM or something like EF, where the tools help you create
data-centric types. That’s very useful – then all you need to do is use object:object
mapping (OOM) to get the data from the data-centric objects into the more meaningful
business domain objects.
&lt;/p&gt;
&lt;p&gt;
At no point should any layer talk to the database other than the Data access layer.
And at no point should the Interface/Interface control layers interact with anything
except the Business layer.
&lt;/p&gt;
&lt;p&gt;
Given all that, the question with smart client web apps (as I’ve taken to calling
these weird h5js/.NET hybrids) is whether you are using a service-oriented architecture
or an n-tier architecture. This choice must be made _&lt;i&gt;first&lt;/i&gt;_ because it impacts
every other decision.
&lt;/p&gt;
&lt;p&gt;
The service-oriented approach says you are creating a system composed of multiple
apps. In our discussion this would be the smart client h5js app and the server-side
service app. SOA mandates that these apps don’t trust each other, and that they communicate
through loosely coupled and clearly defined interface contracts. That allows the apps
to version independently. And the lack of trust means that data flowing from the consuming
app (h5js) to the service app isn’t trusted – which makes sense given how easy it
is to hack anything running in the browser. In this world each app should (imo) consist
of a series of layers such as those I mentioned earlier.
&lt;/p&gt;
&lt;p&gt;
The n-tier approach says you are creating one app with multiple layers, and those
layers might be deployed on different physical tiers. Because this is one app, the
layers can and should have reasonable levels of trust between them. As a result you
shouldn’t feel the need to re-run business logic just because the data flowed from
one layer/tier to another (completely different from SOA).
&lt;/p&gt;
&lt;p&gt;
N-tier can be challenging because you typically have to decide where to physically
put the business layer: on the client to give the user a rich and interactive experience,
or on the server for more control and easier maintenance. In the case of my CSLA .NET
framework I embraced the concept of _&lt;i&gt;mobile objects&lt;/i&gt;_ where the business layer
literally runs on the client AND on the server, allowing you to easily run business
logic where most appropriate. Sadly this requires that the same code can actually
run on the client and server, which isn’t the case when the client and server are
disparate platforms (e.g. h5js and .NET).
&lt;/p&gt;
&lt;p&gt;
This idea of projecting server-side business domain objects into the client fits naturally
into the n-tier world. This has been an area of deep discussion for months within
the CSLA dev team – how to make it practical to translate the rich domain business
behaviors into js without imposing a major burden of writing js alongside C#.
&lt;/p&gt;
&lt;p&gt;
CSLA objects have a very rich set of rules and behaviors that ideally would be automatically
projected into a js business layer for use by the smart client h5js Interface and
Interface control layers. I love this idea – but the trick is to make it possible
such that there’s not a major new burden for developers.
&lt;/p&gt;
&lt;p&gt;
This idea of projecting server-side business domain objects into the client is a less
natural fit for a service-oriented system, because there’s a clear and obvious level
of coupling between the service app and the h5js app (given that parts of the h5js
app literally generate based on the service app). I’m not sure this is a total roadblock,
but you have to go into this recognizing that such an approach compromises the primary
purpose of SOA, which is loose coupling between the apps in the system…
&lt;/p&gt;
&lt;img width="0" height="0" src="http://www.lhotka.net/weblog/aggbug.ashx?id=4a9a1e7e-3459-4ff0-8b00-a9759008ef0e" /&gt;</description>
      <comments>http://www.lhotka.net/weblog/CommentView,guid,4a9a1e7e-3459-4ff0-8b00-a9759008ef0e.aspx</comments>
      <category>Architecture</category>
      <category>CSLA .NET</category>
      <category>h5js</category>
      <category>Microsoft .NET</category>
      <category>Web</category>
    </item>
  </channel>
</rss>
