Robert
Levy: First off, I'd like to thank you for taking the time to
speak with us and participate in this interview. As the ".NET
Compact Framework Technical Evangelist" what exactly is your
role within Microsoft? What services are you able to provide to
software developers?
Kent Sharkey: The Technical Evangelist
role is always good for a smile. There aren't too many companies
willing to call people that. Basically, our role is to go forth
into the community to introduce developers to technologies that
aren't shipping yet. We are the advance scouts, if you will, preparing
people for changes to come.
RL: In your own words, how would you define
the goals and strategy Microsoft is using to merge existing (and
future) mobile technology with the larger concept of ".NET"?
KS: Good one. If you think of the overall
goal of .NET as helping programs (and people) to communicate better
it becomes clearer. Today, and in the past, this has been fairly
difficult in the mobile space. People needed to be mobile experts,
and used primitive tools to craft apps for Pocket PC or phones.
Microsoft is attempting to make this easier for developers, and
to enable new forms of applications by doing this.
RL: More specifically, how would you define
the .NET Compact Framework and Microsoft's goals in developing
it?
KS: The .NET Compact Framework is a lightweight
version of the .NET Framework, designed to work well with resource
constrained devices. The execution engine and garbage collection
has been tightened up, to help with devices where overall memory
is still measured in MB. In addition, our support for important
standards on the device, such as XML and SOAP support, as well
as strong database support with SQL CE are a first in the industry.
(well, maybe not the strong database support, but hopefully you're
with me) What the .NET Compact Framework is doing is giving developers
a set of tools that span devices through servers with a single,
consistent programming model.
RL: The .NET Compact Framework and Mobile
Internet Toolkit are 2 opposing Microsoft technologies that can
be used to develop mobile applications with .NET. Generally speaking,
what types of applications do you see as best suited for each
of these? What are the key differences between them in terms of
development tools, programming techniques, development costs,
deployment procedures, and end-user experiences.
KS: I wouldn't say that they were opposing,
but complementary. Think of them as the device analogs of Windows
Forms (.NET Compact Framework) and Web Forms (MMIT). They both
have their place, and optimal usage model. In the case of MMIT,
the idea is really reach -- MMIT is great for moving your web
applications out to a wide variety of devices, phones, etc. It
is a great extension to the ASP.NET model. It's problem is the
types of devices it typically targets -- cell phones. They typically
have poor data entry capabilities. As such, I would say that MMIT
is best for apps that don't require a good deal of data entry,
and where the amount of data displayed is relatively small (again,
due to phone limitations). Finally, MMIT is best suited for always
online applications. .NET Compact Framework, on the other hand,
brings a few neat items to the table. First up, through either
the larger memory on the device and/or SQL CE, it has data storage
capabilities. Therefore, .NET Compact Framework is great for applications
that spend part of 'their life' disconnected. SQL CE replication
allows you to merge your data back into SQL Server as needed (when
connected). Second, .NET Compact Framework gives you the richer
capabilities of the device UI. You can use controls such as TreeView,
ListView and (soon), DataGrid in your applications without having
to struggle with a cross platform DHTML solution. The application
could also be faster, as no return time is required to retrieve
data. Finally, the development model of .NET Compact Framework
is just the same as that of desktop Windows Forms, allowing a
developer to move freely and easily between developing for the
device and the desktop. MMIT has a somewhat different programming
model, possibly confusing some.
RL: As a "Technical Evangelist"
you recruit developers to use emerging technology. When doing
this, who is your target audience? In other words, what types
of organizations do you see as being the best candidates for quickly
adopting the .NET Compact Framework? Who do you predict will be
(or currently are) the early adopters of this technology?
KS: I look at the target audience as being
in two main groups. First, there are those groups doing device
development today. .NET Compact Framework gives this group a rich
set of tools and consistency with the desktop that will help their
move forward. Second, there are those who have never done device
development. This is the very exciting group, as .NET Compact
Framework means that they can now extend their existing applications
to the device easily. They no longer have to learn a new programming
environment, with new tools and languages.
RL: Through your interactions with the
developer community, what have you found to be the most compelling
reasons given for adopting the .NET Compact Framework? Conversely,
what reasons have been given for NOT adopting the technology?
KS: The most compelling reason for me is
that it uses the same tool and programming model as you develop
on the desktop. The consistency between .NET and the .NET Compact
Framework means that you already know how to do most things on
the device. You build both in Visual Studio .NET. As for reasons
for NOT adopting the technology, well, I'm just the wrong person
to ask that. There isn't any.
More seriously, some of the companies I've spoken
with have decided not to move to .NET Compact Framework because
they are already working with (and happy with) Embedded Visual
C++ or Embedded Visual Basic. Particularly for small developer
shops, that have already scaled the learning curve to get their
code on the device 'the hard way', the added training time does
not make economic sense.
RL: What advice can offer for developers
who have already created and deployed applications for the Windows
CE platform using Embedded Visual Basic and/or Embedded Visual
C++? What factors should be considered when deciding between maintaining
existing code or rewriting applications with the .NET Compact
Framework?
KS: The answer is easier for the Embedded
Visual Basic people, so I'll start there.
Many of the eVB customers that I've spoken to
have been happy with the product. Others, however, feel that there
is a 'glass ceiling' to the product. If you try to do applications
that go beyond this barrier, it becomes quite difficult. In addition,
the fact that it was limited to VBScript was quite limiting. For
these developers, we have only good news. Now, they have the full
VB .NET language, with the Compact Framework of classes to create
their applications with.
Embedded Visual C++ developers, on the other hand
do have a choice to make. If they need absolute control of the
device, and they're happy developing with eVC, I often encourage
them to continue. Those that want to create Web Services, or otherwise
take advantage of the functionality available with the .NET Compact
Framework, however, should do more than look at .NET Compact Framework.
They will find that C# is an amazingly easy language to learn,
and the framework does make doing a lot of stuff very easy.
RL: One of the more controversial announcements
regarding the .NET Compact Framework is that CEDB (commonly called
"Pocket Access") will not be natively supported. What
effect do you predict this will have on developer adoption of
the .NET Compact Framework? What is the recommended migration
path for developers who have existing applications based on the
CEDB infrastructure?
KS: Good question. We struggled hard with
that decision. However, I think we made the right decision. Supporting
both Pocket Access and SQL CE would have meant us dividing the
resources of an already small group in half, preventing us from
doing a good job with either. Instead, we focused on SQL CE, which
I view as the logical, and superior migration path for CEDB developers.
Now, rather than a relatively primitive database format, they
have access to a powerful, multi-table database, with SQL support.
Also, the replication capabilities of SQL CE are amazing (IMO).
I hope that all CF developers spend some time with SQL CE and
see just how much more flexible and powerful it is.
RL: Currently, the .NET Compact Framework
is in the "Beta 1" stage. Comments from developers who
have experimented with it have so far been very positive and enthusiastic
aside from gripes about certain features of the full .NET Framework
being left out of the Compact Framework's subset. Of these requests
(such as additional controls and support for COM-interop), what
can we expect to find in the final release?
KS: Developing for devices is always difficult,
however the most difficult process is deciding what goes in and
what doesn't. The .NET Compact Framework team really struggled
with a lot of those features. Both with expending the effort to
develop them, but even more importantly, to test them and guarantee
they work. Also, the amount of code required to support some features
would make the runtime even larger than it is. The CF team is
relatively small at Microsoft, with very limited resources. So,
items like COM interop, Remoting, etc. have been left out of v1.
If enough people feel the need to have one feature or another,
we will definitely re-investigate them, however.
RL: The .NET Compact Framework Beta 1 has
a footprint of approximately 2MB. This is relatively large considering
the limited amount of memory built in to mobile devices. Is this
an issue that Microsoft is working on? What can we expect the
footprint to be in the final release?
KS: The footprint is about as small as
we're going to get it. It is an area of active effort, but I can't
see it going below the 1.5MB barrier. If you compare the size
of the Compact Framework vs. other platforms, you will see that
we are not only comparable, but actually present more features
for the same size. On the good news, we are working with a number
of OEMs to get the Compact Framework included in the standard
ROM image. This would mean that the runtime itself would not take
away from the program memory on the device.
RL: What online resources do you recommend
for developers interested in learning more about the .NET Compact
Framework?
KS: We're already beginning to see a vibrant
community forming around .NET Compact Framework. There are discussion
lists, mailing lists and websites appearing everywhere. Some of
the best I've seen have been DevelopMentor's CF list (DOTNET_CF),
the product team's own site on GotDotNet (http://www.gotdotnet.com/team/netcf),
and of course DevBuzz (http://www.devbuzz.com)
RL: The .NET Compact Framework represents
a large step forwards for the developers of mobile applications.
How do you predict that this (and other mobile technologies) will
evolve over the next 5 years?
KS: Wow. First time someone has asked me
to be a fortune teller... I can certainly tell you, from a geek
perspective, I want to see more connectivity. 802.11g, Bluetooth,
GPRS have all got to become more prevalent. Fortunately, this
is happening, but too slow right now. I would also expect Moore's
Law to continue, leaving us with Gigahertz palmtops within 5 years.
Now, from a development perspective. With .NET
Compact Framework being integrated into devices (a boy can hope,
can't he?), developing for devices is as easy as creating a desktop
application. That has to continue, and become even more the case.
More features of the device need to be exposed in code.
So, what does that mean for the device I'll be
craving in 2007? 1+GHz, with about 512MB of ROM and RAM. Survives
for about a week on battery, and I can take applications directly
from the desktop. The apps will be smart about their connectivity
-- automatically caching data when disconnected, and reconnecting
and synchronizing when in some network.
Thank you once again for taking the time to talk
with us. Closing remarks?
KS: Thanks for this opportunity! I hope
that people give .NET Compact Framework a try, and I hope to see
lots of great applications in the next few years.
Robert Levy can be reached at outlook.
|