Microsoft and the UWP for Enterprise Delusion
deanchalk.com
deanchalk.com
I disagree that UWP is synonymous with mobile and the author has used the two interchangeably incorrectly. UWP, in theory, runs on all devices but - newsflash - Windows mobile is completely dead. It's exactly like having a go at Linux because it supports DEC.
All UWP is, is a more modern version of WPF that supports more than one execution target (CLI, JS or native). It so happens to run across many devices. I can't see why you wouldn't develop your enterprise software using it (apart from the horrific store) because it's no different from any other stack. If you don't care about it working on mobile, don't deploy to mobile. If you don't care about XBox, don't care about XBox. If you care about one platform only, support that one platform only.
The bonus is that if you aren't enterprise, and do care about the platforms you support, you can carry your skills there. Now, you'd be utterly mad to actually use it (as you would depend on users mad enough to use the store) - but that's the idea behind it.
For them, official support from MS is not a major factor in their decisions.
Whether it should be or not is another matter, but in talking with them, availability of patches really doesn't move the needle as much as you'd expect.
An operating system will run as good as it did 10 years ago (just not as good as those released 10 years later)
Maintaining a UWP head and WPF head with .NET Standard libraries shared between them is a reasonable option in some circumstances.
But better still, maybe encourage your employers not to death race upgrades versus exploits all the way to the bitter end in April 2020 like they did with XP's extended support period.
Ikr, but we can't expect all our customer to upgrade just because our product is in UMP. When we looked at one of our products user base, we could see that over 50% used Windows 7. That ruled out UMP for the subsequent project.
Enterprises who would think of building apps with functionality that can be delivered with a UWP app are more likely to just build a web app - its cheaper and requires less maintenance.
I've seen some great power user experiences with UWP, even ones that are happy being "mobile first" and "touch first". "Touch first" is still great for mousing (especially as screen DPIs keep rising and more setups involve monitors in multiple DPI resolutions), even if you think it leads to lower information density (there are tricks to that).
At least in Enterprise environments I've worked "mobile first" is incredibly useful because people are happy being able to work from the device they already carry around at all times. It's to my sadness there isn't more Windows mobile devices as Cordova and/or Xamarin continue to eat up more and more of my development time I could be spending more directly on the applications themselves.
WPF is based on vector graphics just like XAML, and high DPI is available for a long time. Per-monitor DPI support is also available for more than a year, they did that in .NET 4.6.2 released in 2016.
The classic 16px-by-16px/32px-by-32px "toolbar icon" of the Win32 era is now far smaller than most FPS's "headshot" hit boxes on current monitors/DPI settings. Enterprise users shouldn't need to score headshots every time they try to accomplish a task.
Edit to add: …And yes, you could do all of that in WPF too, there are some great "touch first" WPF apps I've encountered over the years. The difference between WPF/UWP here is mostly default stylesheets. But the argument here being replied to is that "touch first" doesn't matter, which I think is incorrect, "touch first" is huge, and does matter, even for (maybe especially for) "Enterprise".
I’ve programmed both for years but never heard about these differences. Do you have a link?
> The difference between WPF/UWP here is mostly default stylesheets
Right, but in my experience when I don’t care about UI design, I can use anything, even win forms. When I care, and have a professionally made UI design on input, default styles & templates are not that relevant for both platforms. I need to create my own ones anyway to implement what the UI designer wants.
https://en.wikipedia.org/wiki/Hick%27s_law
https://en.wikipedia.org/wiki/Steering_law
https://en.wikipedia.org/wiki/Crossing-based_interface
---
https://blog.thepapermillstore.com/design-principles-white-s...
---
Especially:
https://docs.microsoft.com/en-us/windows/uwp/design/input/mo...
https://docs.microsoft.com/en-us/windows/uwp/design/input/to...
https://docs.microsoft.com/en-us/windows/uwp/design/input/to...
---
> When I care, and have a professionally made UI design on input, default styles & templates are not that relevant for both platforms. I need to create my own ones anyway to implement what the UI designer wants.
A good UI designer may not realize that they desire some of the same ideals as the platform defaults, especially with something like the Fluent Design System. It may not be your job to second guess a UI designer you are working with, but there are times where it makes sense to encourage a UI designer to know/understand the defaults of the platform, and especially the reasons for the defaults of the platform. I've been especially glad since the Fluent branding attempt that Microsoft has been doing a much better job documenting it and the reasoning behind it, as you can see in the links above.
> Right, but in my experience when I don’t care about UI design, I can use anything, even win forms.
In my mind, that is when defaults matter most, when you don't care. If you can get a lot of niceties for free, with no extra work on your part because they are the default, on a platform like UWP, then why not take advantage of that?
The software world and especially the enterprise software world is full of programs built by programmers that could care less about UI design and it shows, and it makes users miserable, even when those users are our future selves sometimes. So many papercuts that could have been avoided by choosing a platform with better defaults to begin with. (Friends don't let friends choose WinForms in 2018.)
> there are times where it makes sense to encourage a UI designer to know/understand the defaults of the platform
Did that sometimes but it was mostly about less obvious stuff, like controls behavior or animations. I was lucky to work with professionals who didn’t try to bring foreign-looking stuff to Windows.
> Friends don't let friends choose WinForms in 2018
For enterprise software I probably wouldn’t. But for e.g. internal tool for a couple of users and with very simple UI (such as a single dialog application with a couple of edit boxes) WinForms still works OK. It’s simpler to use, integrates with older lower-level technologies better (Win32 API, ActiveX, windows shell, terminal services a.k.a remote desktop), and often consumes less resources (Win32 API is decades old and hence designed for ancient PCs).
From a .Net perspective, the article authors, it's the debugging challenges that are the major salient difference between WPF and UWP. Considering the demands those frameworks place on developers who are making 'innovative' GUIs there are numerous things that can go terribly wrong at run-time. A lack of relevant debugging tools and a hop between technologies could be a showstopper for some.
COM + .Net competence, like competence with the Win32 API, is somewhat generational. Younger .Net developers are not versed in these things, and those who are command significantly higher salaries and are increasingly less likely to be doing front-end work over time.
If you're dealing with Enterprise customers, or development in the Enterprise, there are real costs associated with moving your baseline developer requirements into specialist territories.
BUT ... it's not clear to me that the majority of enterprise software development falls into this category. I think the vast majority is quite likely old VB apps that work perfectly well as web apps.
Most information workers don't have the density or latency constraints that the finance space does.
And where they do, I think in most cases their needs are satisfied by a small-ish set of applications: Excel, AutoCAD/ProE/Solidworks/etc, Photoshop/Illustrator/etc, VisualStudio, and so on.
I do think Microsoft (and Windows) needs a story for the development of "professional" apps like these. And UWP doesn't work for them. I'm not sure C# and WPF does either: how many of even Microsoft's own professional apps are written (or being rewritten) in C#?
Perhaps banking/trading is just too small a market to make it worth Microsoft's while to care about? Perhaps it's a market best served by a third-party stack/tools?
What about store managers restocking product?
What about developers working on complicated projects?
What about data scientists staring at spreadsheets?
What about power users?
What about anyone with the kind of intelligence that doesn't shy away from large amounts of information?
Do most designers ever think about ANY of these people? Modern app design doesn't even TRY to throw any of these types a bone. No "Advanced >" menus anymore, no pages of options anymore, nothing. It's all just 'sit down, shut up, push the button like a good stupid little user so we can all get paid.'
If the UX and latency requirements can be met with a web app, it doesn't support WPF/.NET maintenance/enhancement.
Web apps can do density so long as the latency requirements aren't too tight. There's where the banking folks spend their IT money.
they're generic applications, and their development
doesn't justify Microsoft investing in an entire stack.
Seems to me there's one or two applications for every profession, and they probably mount up.I mean, I'm sure if you look at the statistics only 0.1% of users use Photoshop, or Premiere Pro, or AutoCAD, or SolidWorks, or Altium, or Matlab, or whatever - but if you drop support for all of them, what are users going to do?
Specifically, when WPF was launched all they could talk about were the cool 3D possibilities for doctors, researchers, and such... The reality has been less "Minority Report" than we had hoped, but those kinds of demands are growing, and very often will require the level of control over hardware that demands a desktop app.
In theory a lot of this is solvable with webapps, in practice there is a reason desktop computing environments exist :)
The question is whether there's enough of a market between broad-based professional apps and web apps to justify maintenance of the WPF/.NET stack.
I can understand a "Is it worth the maintenance?" question...
but I would bet .Net has better longevity and Enterprise support compared to the rapidly evolving landscape of HTML/CSS/Javascript.
(Visual Studio for Mac is, of course, an entirely different product and codebase).
The new plugin architecture, replacing the COM one, is implemented in .NET.
Visual Studio for Mac has many new features that weren't present in Xamarin Studio, like .NET Core support, ASP.NET types of workflows. And all new Xamarin.Forms improvements are shared between both IDEs.
The brand name has been re-used for other software. Visual Studio for Mac is Xamarin. Visual Studio Code is on the Electron platform.
”For a long time now developers have been asking why Visual Studio hasn’t made to switch to 64-bit. Rather than effort or opportunity cost, the primary reason is performance.” https://www.infoq.com/news/2016/01/VS-64-bit
UWP apps can't be closed by the user. The system manages the lifecycle and there's no way for a developer to know when the app will be terminated and when to save data.
To save your app's data you have to:
- Register for a suspend event
- Ask for an extended execution so that your app is not terminated within a few seconds
- Save your data and cross your fingers that the system does not terminate your app anyway and your data is lost
I recently ported a document-based macOS app to UWP and this was the BIGGEST pain point (aside from the fact that there's no easy way for an app to have more than one window, ouch).
An ExtendedExecutionSession with a SavingData reason, should be more than enough for any kind of data.
The enterprise didn't care about minicomputers, until it did.
The enterprise didn't care about PCs, until it did.
The enterprise didn't care about Web applications, until it did.
In each of the above cases, there were people insisting that The Enterprise would never follow the general market. The Enterprise has special needs, they said. The Enterprise needs things the new tech can't provide, they said. They kept saying that right up to the moment The Enterprise finally moved and made their objections irrelevant.
Enterprise customers see the hot new stuff general consumers have access to. They want it. And they command big enough budgets that someone will eventually get the hot new stuff up-armored and Enterprise-Readied so they can use it to peel off a share of those budgets. By the time this actually gets deployed the hot new tech isn't hot or new anymore, but that doesn't matter. Once the first enterprise domino falls, the rest tend to fall pretty predictably.
You can make a good living for a long time selling legacy tech into the enterprise market. But "a long time" does not mean forever. Enterprise software buyers move slowly, but they do move.
> The few mobile enterprise apps currently out there are more about productivity triage — a quick glance while your getting a latte — nothing more.
Do you disagree with that assertion, or just his general statement?
Therefore most of the time a simple mobile-friendly web app works fine for enterprises.
I doubt that will happen, as MS is seemingly embracing the whole web-services/HTML/JS model. VS Code might be the nail in the coffin - possibly an Electron test-case to see if the entire VS proper can be ported over.
WPF is for pre-Windows 10 desktops.
Given that, I can't really see it ever becoming competitive.
[1] https://blogs.msdn.microsoft.com/visualstudio/2017/09/11/a-s...
WPF wasn't really adopted the first time around. WinForms kept being used for years (till this day) after WPF was the official guidance.
And now, after WPF was abandoned for UWP there is very little chance Microsoft is going to resurrect it.
Then Microsoft just...abandons it. Many were annoyed by that.
UWP would be reasonable if they didn't require giving up so many .net features, I'm particularly disappointed that they killed off the DLR for it, and made reflection more costly (because it is supposed to be ahead of time compiled only). It also reminds me of Silverlight in the number of arbitrary things left out from WPF.
So rather than switching from WPF to UWP, I've gone from WPF to...Javascript/DOM/Canvas.
So I am definitely betting on them, even though I also suffered some delusions since Windows 3.x days.
> The Enterprise doesn’t care about mobile — it really doesn’t.
I guess I can't speak for The Enterprise, but only as someone who works in an enterprise. We recently switched to a new service desk system with very strong mobile support, from one with none. Responding to support tickets is a significant aspect of my role, and this has been a huge workflow boost to me. Pretty much anything else we roll out to expand user's access in the mobile space is being gobbled right up. I don't know what rock the author's been living under but a statement like "The few mobile enterprise apps currently out there are more about productivity triage [...]nothing more" is crazy sauce. This space is exploding right now, although falling on their face in that platform race does mean MS and UWP are playing a pretty minimal role in it.
> enterprises do not buy their employees touchscreen laptops, unless there’s a really niche requirement — which is very rare.
Enterprise doesn't buy touchscreens laptops? We've bought hundreds of laptops in the past year and almost all are touchscreen -- not because we give a shit about that, but because they are cheaper than spec'ing a custom order from our vendor to get one without. I agree with the core tenet that touchscreens on laptops are likely never going to be useful, but MS seems to be responding to actual market conditions the author is ignorant of.
> we cannot take advantage of the super-accurate mouse and keyboard input devices that have been so amazing for so long.
I would posit the mouse is super accurate for pointing at fixed targets, but has dreadful accuracy for drawing or any sort of path-based input. There's a reason artists don't use them, and considering a broader range of input paradigms is a decision I would not so quickly fault an OS developer for making.
> Adobe have just release at design tool called XD that’s a UWP app. Compare its usability with its main (proper desktop) rivals like Photoshop and Sketch. The comparison is startling. XD feels like a small mobile app with limited capability, and its because that’s exactly what it really is.
XD is a specialty app with an extremely limited feature set. It is, by design, vastly limited compared to PS because it's trying to compete with more stripped-down successful prototyping platforms from competitors. This is a complete red herring example.
Forms uses GDI+, while XAML uses DirectX.
Both of which are abstraction libraries, so I don't understand your point ?
Yes DirectX is more powerful than GDI+, but I challenge that it's 'closer to the metal'.
"Comparing Direct2D and GDI Hardware Acceleration"
https://msdn.microsoft.com/en-us/library/windows/desktop/ff7...
Also, XAML has been fully rewritten in C++ for UWP, consumed by .NET Native as UWP components.
The re-written XAML is only for UWP apps.
Of all the main code platforms that MS push, I'm still pretty much tied to WinForms - I prefer it, and it feels more intuitive to the way I think. It's also been around over 2 decades now, and you can pretty much do ANYTHING with it.
I skipped the WPF revolution, and am just about to dip my toe into UWP apps (I'm not a professional coder). I think I'm going to find it a steep learning curve :(
What I'd LIKE to see, is UWP running on Linux? That would really cement MS's 'run anywhere' concept.
Segoe UI Font:
- Standard usage: 11pt Regular
- Sub Headings: 14pt Semi-bold
- Headings: 20pt Regular
WinForms in Visual Studio still defaults to MS Sans Serif 8pt - so you have to change that at the form level before you even start. Plus all the controls have NO padding around them, so you have to add padding manually or use panel controls to space stuff. It's a pain, but not insurmountable.
I miss the thick client days...
Reading through the Insider blog posts shows a long thread of disconnecting Win32 from Windows as a part of the OneCore efforts.
Win32 may remain mostly performant (the word on the street is that the ARM emulation is very performant), but the days when it was the most "blessed" API set for Windows have passed.
Hosting a corporate store is azure only which is a no go, so we're stuck with the god awful click once.
There are no push deployments, when we release a new version we want everyone to be on that version, not waiting for the app store to get around to it.
The store may have caught up in this regard, but we also need to control which users get which version of the software for deploying preview builds.
The enterprise is MS's bread and butter and I always thought that they understood it well, I increasingly think that they never understood it and they just got lucky that for a time enterprise needs aligned with MS capabilities.
*There is a project to replace many of our winforms apps with react, can't wait to see this crash and burn.
I can't wait to see the projects falling apart when in two years G/Fb comes out with The Next Big Thing.
I still hate the webclients for major brand tools like SAP and Successfactors where they still don't know about async calls...
I was skeptical about WPF at first, as I didn't like XAML at all. I'm happy I stuck with it. Under XAML is a really elegant engine that you can interface with directly (few of my WPF projects have any XAML in them at all).
I skipped UWP for the same reasons as OP, and because you can't (as far as I have been able to figure out) distribute windows services with it. Win2D looked like an answer to a lot of my design issues, but I got a sense that the team building and maintaining it was smaller than mine.
If Microsoft heavily re-invested in the desktop I would be very happy.
I found interfaces a lot easier to build when I ditched the declarative markup and interfaced with the control system directly. XAML as far as I can tell was introduced as an attempt to woo web developers; but it's a thin layer ON TOP of WPF. It seems like a lot of people believe it IS WPF. WPF goes very deep.
Elsewhere the docs talk about registering background tasks through another interface, but it seems like proper integration with services is a legitimate use case for people trying to embrace the blessed desktop path.
That is the workflow all Microsoft sessions about it focus on.
WPF was built on older non .NET Standard/Core that doesn't work for Microsoft anymore, Windows lock-in is dead and that is what the WPF/Silverlight game was. They tried to platform lock in at the Windows layer with WPF but it was too late, mobile hit soon after.
Microsoft has to be cross platform now and the lock-in has been moved up to Azure, their new OS for developers essentially.
I think UWP is a better platform than WPF even with less maturity. Lots of people liked WPF as it was better than the previous iteration in Winforms, and probably grew a liking to it, but UWP is now and trying to keep old Microsoft platforms alive is a lost cause. Devs must move to what Microsoft is pushing just as you do with Apple, if not, feel the wrath of the future.
All of them were awesome vector based rendering platforms that had great data/web integration. They were also complete packages but thrived when plugins thrived until mobile and Chrome killed plugins.
Flash/Silverlight still have some advantages over html5/webgl/canvas/svg (much of if by Khronos, funded by Apple initially) but those have essentially taken their place and WebAssembly that came from Emscripten/asm.js from Mozilla will eventually be another option.
I do miss the vector nature of Flash/Silverlight but both are gone, especially the latter. There are better options like Haxe, OpenFL/lime, Adobe Animate (Flash successor in web standards) if people still want to use Flash like platforms.
This is one of the reasons why I am deeply skeptical of UWP. It looks like a Microsoft-only show, and Microsoft frequently strongly support a platform right until they change direction and flip it into maintenance mode to pursue the Next Big Thing. Why invest in it if you don't need to?
Windows Mobile is dead, so UWP is really just for desktops and Xbox (and Hololens, but no one cares). How many apps are going to be used on both desktops and Xbox? Maybe some trivial ones, like a weather app. So, realistically, UWP is for desktop apps, and it's just not as good as WPF for that. It doesn't even come with a multi-column list control!
Surface Pros are desktops but closer to tablets/iPad style. So it is like a desktop on mobile platform really. Lots of business apps are going to the Surface for control reasons like that. Who knows, maybe one day Microsoft returns to mobile phones not just tablets, Surface Pros are making inroads and Windows Ink is solid. Bill Gates tablet vision was too early, Microsoft has a valid competitor, but yea it is technically 'desktop'.
Big reasons Microsoft went UWP: Surface/tablets, AOT compiling, Windows Store and building compat with .NET standard/core 2, touch inputs + mouse input, none of which WPF offered. UWP will evolve but it is going to closely match iOS/Android more than Windows desktops of the past.
This statement is in total contradiction with what UWP is: a platform so OS-locked it doesn’t even run on Windows < 10. On the other and both WPF & Silverlight runs on multiple Windows versions and Silverlight was supported on Mac OS.
True on the Win 10 point but they had to make a change, they do similar with new platforms all the time, WPF was pushed on Vista.
Basically UWP matches up nicely with other platforms under Xamarin especially. Though most of Xamarin is iOS/Android focused probably because of the market, it closely mirrors those so that it is easier to make a UWP app from one of those apps. Many business apps are going Android, Surface or even iPad/iPhone Apple focused.
Microsoft had to make a hard change for this, UWP is actually a joy to work with on new projects but porting a WPF app may be difficult and you may have to make many custom controls outside touch friendly interfaces.
> WPF & Silverlight runs on multiple Windows versions and Silverlight was supported on Mac OS
True but not for long, Silverlight also no longer runs on any browser but IE.
UWP will evolve, WPF and Silverlight were very rudimentary on their first iterations. Silverlight was solely js based on Silverlight 1 even. Winforms was more supported at the time when WPF came out as well, WPF was only for Vista when it launched, XP it runs slow.
Before .NET and Winforms it was Visual C++/VB apps, MFC, COM+ etc.
Every once in a while things change enough that the old must be thrown out. WPF was a pre-mobile toolkit and Silverlight was for the age of Flash, those times are in the past.
Or maybe it will be replaced with something completely new next year.
I interact with those type of devices in totally different ways. In many cases, you could share some core logic, but the UI should be drastically different. For some types of apps, the core assumptions of the different platforms are so different, it's hard to share anything.
Regardless of that, UWP has poor teach for Microsoft desktop and Microsoft mobile. Somewhere along the way, Microsoft forgot that they won't let most people upgrade from windows phone 8 to windows mobile 10, and that there are a lot of holdouts on desktop too.
Solved it by switching to Qt. It's excellent even if you just use it for Windows development, i.e. never use any of its crossplatform abilities.
One if the ways that Microsoft proved WPF could be used for real apps was that they wrote visual studio with it. you cant build visual studio witb UWP.
i hope that the platform gets there...but right now if i started a new windows app i would use the centennial bridge.
But: I also see where Microsoft are coming from. There is no need to innovate in this space. Microsoft want people to run mobile, touch, store... and those of us doing heavy desktop can use third party tooling or just stay with the mature tools we already have. Microsoft will never sunset the legacy win32 stack, and enterprises of the kind the author describes will never choose a windows that doesn’t allow the standard win32 stack.
1) UWP apps are absolutely horrible to debug. They use some kind of COM broker layer to deliver the majority of very cryptic framework level exceptions. Almost everything IS an exception. There's also no way to get proper stack traces in compiled applications and worse, only apps delivered through the store will symbolicate the final crash point, so good luck trying to find the root cause if it's not immediately obvious.
The level of absurdity here is, if you drop a file in a UWP app's drop target that doesn't have foreground focus, the data broker will throw an exception that you can't do that. There's no realistic way to manage that exception, so if you're not diligent it'll crash your app.
2) Then there's the whole XAML interface framework. (Though they seem to slowly be moving away from this to a more reasonable flexible framework, sort of like iOS CoreAnimation, called Composition.) Originally it was meant to be freely styled by "designers", but as the original WPF and Silverlight proved, this flexibility resulted in terrible designs and apps looked cheap and crappy. So the UWP XAML team instead built a completely stylized framework and all the controls have hard-coded baked in assumptions about those styles remaining unchanged. So in that aspect, even if you wanted to push UWP XAML to allow for more information density, you would run into all kinds of show-stoppers.
Azure is where it's at now for Microsoft, and WPF/desktop apps don't run on Azure.
The juicy backend bits could run just fine in Azure.
I don't buy that. If the argument is that "the Enterprise" doesn't care about mobile for this last decade, then it certainly didn't care about usable and powerful desktop apps the decade before.
Full stop.
Of course, the second they abandoned Windows Mobile, it made UWP irrelevant (not that it was terribly relevant anyway).
Absolutely no one* wants to build an app that works only on Windows 10 desktops, Xbox and IoT devices. There's no use for that.
*Obvious hyperbole.
The right solution is to make it so what can be shared is shared and what needs to be specialized can be specialized.
Neither are well suited to enterprise, and one of which has been canned.
Even things like slack run better in the browser than outside as an independent app, because they anyway use a browser engine to run for compatibility.
I use vim and VS code for editing. Vim doesn't need a new framework, and VS code bundles an entire web browser engine within it (electron), again, for cross platform compatibility.
All the internal company tools like code review, ticket management, etc. which used to be native apps, now run in the browser, too.
So let me ask again, why do we need a new app framework at all? What we have with WPF is good enough for the rare app that actually needs to run natively. Everything else is a web app already.
Yes, Web is a damn good technology for distribution, consumption and communication, but I vaguely imagine a situation when a professional relies on Web to do the real manufacturing job on a daily basis with guaranteed, stable and reproducible outcomes.
Please note that enterprise is a huge paying market. You cannot ignore it, as it lies behind everything you can buy in this world.
I mean, if an application is well suited for UWP, then it's probably better off as a web app.
https://www.microsoft.com/en-us/store/p/easypower-onsite/9nb...
And it also extend to updates: if a webapp make an update that's breaking productivity for some reason, you're screwed. On the other hand, you can ignore them on desktop and work like you always do.
Also there is the data ownership, privacy and professional secrecy problematics. Why should I give every bits of my data to an external entity who can then do everything with it when I can do the processing on my own hardware? This is a total none sense.
So there is many reasons for desktop app to be still relevant.
The Store publishing latency is probably acceptable for free B2C apps, but not for B2B applications.
With Windows 10 you can just distribute the .appx and install it with a double click (given you've installed its certificate or if its CA is already trusted, which is common in enterprise environments). No Store required.
Many business don't want anything browser related, or need applications working in disconnected environments.
Enterprise has many special needs.