# Visual Basic > Slow Chat with the Microsoft Visual Basic team >  A smaller Framework...

## techgnome

Something I see a lot of complaints about is the size of the Framework download. For people like me who work on Enterprise type of applications, it's not a big deal, our clients are used to such things. But I hear this complaint mostly from hobby developers, or those who are writing Free/Shareware. They feel put out by asking their prospective users to also download this huge framework install, in addition to their "400k" app. 

Has there been any thought by anyone to have the ability to introduce a "FrameWork Light" or FW Express? I know there's a Framework CE for mobiles, but it's my understanding that it will not run a Windows desktop app. Despite .NET being available for sometime now, that seems to be the #1 reason some people actively refuse to upgrade their skills, knowledge and apps to .NET. 

I'm not even sure this is something that can be answered in this forum, but I figured I'd at least throw it out there and see what sticks.

-tg

----------


## Paul M

Yea not sure how it will go in this particular forum, but i have developed 2 freeware applications in .NET 2.0 and had to ask a number of people who were still using 1.1 to download 2.0. In the end they just searched for an alternative  :Frown:

----------


## mendhak

I might be wrong because I gave the .NET Framework 3.5 page a cursory glance, but I think the framework now supports 'dynamic' download.  In other words if your application, deployed on the 3.5 framework only needs 6 namespaces out of 900, just those 6 get downloaded.

----------


## PaulYuk_MS

Thanks for raising this feedback.  This is a pain point we hear a lot about from our smart client developers.

There is a lot of thinking going on here in MS how we can improve this.  Unfortunately I can't tell you exactly what we're thinking yet.  Stay tuned.  

You could spend some time telling us what requirements of the FX and experience you'd want.  How big is too big, how big is just right?  Should this work in concert with ClickOnce?  Is drizzle download an option for you?  Your feedback is welcome!  

Also, have you checked out Silverlight?  This is more about Rich Internet Apps than smart client, however it's an example of how MS delivered on a much smaller, but still meaningful Framework.

thanks,
Paul

----------


## RobDog888

But with a smaller or dynamic download of the framework would mean that you will always need a internet conection in order to install your app in case there is something additional to download in the framework. I think smaller is better but having it all installed once and never having to download any more of it upon each app installations (of the same targetted framework) IMO is much better and a small price to pay for a larger initial download.

----------


## techgnome

I think it depends on your prospective. Like I said, I deal in Enterprise style apps, so the FW d/l is a no brainer.... but I've seen gee I don't know how many "I can't ask my potential users to down load a XXX M framework install for my puny 400k, simple application."

Even in my own case, when I was evaluating code generation tools for use here at work, I ran into a couple that I dumped right from the get-go.... one wanted to install FW1.0...... and the other MDAC2.7... Not wanting to deal with that, I put them into the "never mind" stack.

-tg

----------


## JuggaloBrotha

Here's my take on this:
  I like the large/complete framework download, you download it once and that's it.  I include the downloaded framework installation file on the cd's I give to people for the .Net programs. No one ever has a problem with the framework size and for the VS 2005 apps, the client has the 2.0 framework installed without an Internet connection.

  I can also see the flip side of this, downloading a VS 2005 application from the Internet (400 K) that requires the 20 some megabyte framework and doing this on a 24k dial up connection would be, well painful.

  Question for the VB Team: Would it be possible to use both distribution methods for the framework?  Right now the one time download is the only option and I believe this option should stay, but would it be possible to include the "Trickle Download" method mentioned above? Mainly for those who still rely on the poor performance phone line's for internet.

----------


## timeshifter

How long have we been developing on the 2.0 framework now? Almost three years? Why is it not a required download from Microsoft Update? I realize it isn't important to the operation of XP, but with so many developers working in 2.0 because of the huge improvement over prior generations, how much of the distribution base is wiped out because people don't even know what a framework is? It really bugs me that it's still so optional. Legacy code is still around BECAUSE the framework isn't a required download. If everybody had 2.0, what would be the point of writing with outdated code? Everybody could run the latest and greatest, so the next generations of OS wouldn't have to cripple themselves with legacy support. XP supports VB6 because it had darn good reason to. But what's the reason now? We've seen 1.0, 1.1, 2.0, 3.0, and 3.5 since VB6, and people still use it because it's still supported.

Sorry for the rant... I guess I'm just tired of potentially great things partially failing because they have to support the past. It's time to move on.

----------


## techgnome

Some of us still use VB6 because our 10 year old application with over a million lines of code can't be converted over night.... And supporting older apps was not the point of my question in the original posting. But if you want to come on over and convert our app for us, great, just be warned there's no money in the budget for a full time VB->.NET Developer. Otherwise, please don't hijack the thread with rants and arguments that have been beaten to death many times over. Do like I do in these case and sit on your hands ... or just one.. you will need the other hand to move the mouse and click to another thread. 

Back on tpoic... All I was asking was, if I create an app that uses just a small part of the framework, why can't I just include those bits, and no more in my install. If the user already has those bits, in part or in total, then that's OK, don't install it. But if they didn't... then they would have to d/l the framework, the install would install the bits it does have and the user would be none the wiser. My theory is that if SQL Server could be stripped down to its bare bones (ala SQL Server CE), then why can't the framework as well? And as I think about it, this has already been done with the Framework CE. So, let me ask it this way: Why can't FW CE be used on a desktop?

-tg

----------


## timeshifter

My apologies if it seems like I tried to hijack the topic. That was not my intent... I've been coding JavaScript for the past four hours, and my brain hurts...

My point is that the problem would be eliminated entirely if it became a critical Update. XP is set to download and install updates automatically by default, so most people probably wouldn't even know that their computer just downloaded 116 megs of modern programming support. What's the point of breaking 2.0 into small pieces when 3.5 is emerging, and in my humble opinion, should have been a required element of Windows long ago?

----------


## si_the_geek

While that makes sense timeshifter, you are thinking from the point of view of a developer and/or a user who has a reasonably fast (and non-restricted) internet connection, and a decent amount of hard-drive space available.

Even now, many people do not have any need for that version of the framework, and many do not have particularly good internet connections (either in terms of speeds, or monthly download limits).

As the amount of users far outweighs the number of developers, it doesn't really make sense to push software out to them (especially when it could cause them problems), just to potentially save us a bit of effort for our installations (which we would still need to do anyway, in case they have disabled updates, etc).


For those who have limited internet connections and/or drive space (or just don't want to download a large support package to run a simple app), having a reduced size or  "piecemeal" download would definitely be useful, but of course others will want to download the entire framework in one go to save hassle later (particularly if they need to get an Admin to install it for them).

I think it would be nice to give the user the option of "_download and install just what this program requires (x MB)_" (which could perhaps be something like the compact framework) and "_download and install the whole framework (y MB)_".

----------


## Phill64

> My apologies if it seems like I tried to hijack the topic. That was not my intent... I've been coding JavaScript for the past four hours, and my brain hurts...
> 
> My point is that the problem would be eliminated entirely if it became a critical Update. XP is set to download and install updates automatically by default, so most people probably wouldn't even know that their computer just downloaded 116 megs of modern programming support. What's the point of breaking 2.0 into small pieces when 3.5 is emerging, and in my humble opinion, should have been a required element of Windows long ago?


I thought this myself, because this would also mean that when releasing software for download we can simply say: "Do a windows update"
or hopefully, it's already done.

----------


## Paul M

Aren't all the .NET versions being distributed with the OS now?

Not that it would eliminate the problem for clients who have not currently updated but this won't occur in a couple of years time if it is  :Smilie: 

Some solutions for a smaller framework (tell me if they are feasible or not):
*1)* Separate packages, so have the generally used libraries packaged together as one download, then the other libraries packed together for a different download.
*2)* A download page that allows the user to select which libraries he/she needs and then they can distribute it with there very own program.

Just wondering the Compact framework used for Mobile Development, how exactly is it smaller? Or more to the point why? Some libraries were removed?

----------


## Kasracer

The .Net Framework shouldn't become a required update because it's not required. You don't _need_ the .Net framework like you need a security update. Applications should take care of their own dependencies otherwise you'll have to make the XNA redistributable, the C++ 8 and 9 redistributables, DirectX, etc... all required updates.

.Net 2.0 is coming installed on all versions of Vista. You have 1.1 installed by default on many preinstalled versions of XP SP2, I believe, and I imagine the next version of Windows will ship with at least 2.0.

I don't think getting it to the people is so much an issue as backwards compatability. The CF is awesome because 1.1 applications run on version 2. What about desktop versions of the .Net framework? Can you run 1.0 and 1.1 versions on 2.0 in the desktop world? I've heard you can do it and I've received error messages saying otherwise so I don't even know if it's possible.

I want my application to run on 3.5. I want it to run just fine on 2.0 too. If I use a feature specific to 3.5, I want an Exception thrown regarding a versioning issue with the .Net framework so I can handle it myself.

I think it's great that new versions of the Framework are coming out about every 3 years as this adds new features and makes my life easier... in the corporate world. Developing applications or games for users not connected to a corporate network is another story. I want to upgrade and use the latest and greatest, but what will Joe Sixpack say if I issue an upgrade to each new version of the framework? Why would they want to download a 20-30MB upgrade every 3 years that, to them, isn't directly related to the application?

For at least the next 10 years, I believe it's estimated that there will still be some users on dial-up due to either living in a developing country with no infrastructure support or just no access due to living in a remote location. While it's understandable that they cannot watch streaming media very well if at all, they still expect to be able to download and run an application and not have it be a large size (especially if it's a small game or applications; we're not talking about MS Office size here). While I think the .Net framework is a great framework and development platform, it has two hang-ups that prevent it from being used in hundreds, if not thousands of applications and those are:
Large download size for many usersOnly available in WindowsOS X's userbase has grown quite a bit and Linux is used in, I believe the last estimate was, almost half of all webservers. I believe Microsoft is missing out of a huge opportunity to get ASP.Net running on Linux and Windows Form applications running OS X but that's for an entirely different thread.


> I think it would be nice to give the user the option of "_download and install just what this program requires (x MB)_" (which could perhaps be something like the compact framework) and "_download and install the whole framework (y MB)_".


I agree, this is a great idea for the current state of the .Net Framework.



> Aren't all the .NET versions being distributed with the OS now?


Unfortunately no. Vista includes 2.0 but XP SP2 does not include any versions (though, it typically is included on all preinstalled versions of Windows XP SP2)



> Separate packages, so have the generally used libraries packaged together as one download, then the other libraries packed together for a different download.


I think the "only what you need" would be a better approach as your approach still may include libraries they do not need nor want.



> A download page that allows the user to select which libraries he/she needs and then they can distribute it with there very own program.


This would be very difficult to support for Microsoft (or any company). There are some applications that can do this already but doing this makes it impossible for Microsoft to update the pieces of the framework for security or functionality issues. This also takes up additional space once you have 10 applications installed that all include their own versions of the .Net framework.

It's a good idea for static libraries and DLLs that won't be used in other applications but for the platform it just doesn't work.



> Just wondering the Compact framework used for Mobile Development, how exactly is it smaller? Or more to the point why? Some libraries were removed?


The compact framework is vastly different to not only make it small enough to run on a mobile device but functionality had to be removed / reworked because they just work differently. It's a very different platform and I don't think including everything the full, desktop version includes would work.

----------


## techgnome

> I think the "only what you need" would be a better approach as your approach still may include libraries they do not need nor want.
> 
> This would be very difficult to support for Microsoft (or any company). There are some applications that can do this already but doing this makes it impossible for Microsoft to update the pieces of the framework for security or functionality issues. This also takes up additional space once you have 10 applications installed that all include their own versions of the .Net framework.
> 
> It's a good idea for static libraries and DLLs that won't be used in other applications but for the platform it just doesn't work.
> 
> The compact framework is vastly different to not only make it small enough to run on a mobile device but functionality had to be removed / reworked because they just work differently. It's a very different platform and I don't think including everything the full, desktop version includes would work.


For the most part, that's probably one of the best posts I've seen on this. 

Now, as for the quoted piece above. 
Yes, if each installer put their own pieces of the FW into its own sandbox for the app, updates from MS would be difficult. So, let's expand on that, what if it doesn't go into a sand box? What if it goes where it needs to? Then it could be updated as the framework is updated. 

Or, let me make that choice. I have that option with SQL Server CE. I include 7 DLLs in my install. It's my option to say, install these with the app. MSDN makes it painfully clear that I can do this, but because of that, it will not be subjected to updates. OK, I buy off on that and take the risk. OR, I can have it install into the GAC, where it will get updated, but that makes my install a little more difficult. It's up to me to make that conscientious decision. 

As for the Compact FW, not sure if you misunderstood what I said, or if I misunderstood what you said. What I *meant* was that if we can have something a feature rich (such as it is - and yes, limited) as the Compact FW, why isn't there a desktop version? A compact desktop.... FrameWork Lite? Let it be able to create forms, use some basic functionality and basic controls. Include the OLEClient for db accessability, and boom, that's it. No networking, no third party controls, no reporting, nothing fancy. Stripped down to the studs, bare bones framework.

Or is it a pipe dream?

-tg

----------


## Kasracer

> Yes, if each installer put their own pieces of the FW into its own sandbox for the app, updates from MS would be difficult. So, let's expand on that, what if it doesn't go into a sand box? What if it goes where it needs to? Then it could be updated as the framework is updated. 
> 
> Or, let me make that choice. I have that option with SQL Server CE. I include 7 DLLs in my install. It's my option to say, install these with the app. MSDN makes it painfully clear that I can do this, but because of that, it will not be subjected to updates. OK, I buy off on that and take the risk. OR, I can have it install into the GAC, where it will get updated, but that makes my install a little more difficult. It's up to me to make that conscientious decision.


I think what you're getting to is basically the samething as the piece where you download only what you need, except what you're saying is you include only what you need rather than the user making a seperate download in the install process. Is that what you're suggesting? If so, I think that could be a great way to supplement the downloading only what you need via the installer.




> As for the Compact FW, not sure if you misunderstood what I said, or if I misunderstood what you said. What I *meant* was that if we can have something a feature rich (such as it is - and yes, limited) as the Compact FW, why isn't there a desktop version? A compact desktop.... FrameWork Lite? Let it be able to create forms, use some basic functionality and basic controls. Include the OLEClient for db accessability, and boom, that's it. No networking, no third party controls, no reporting, nothing fancy. Stripped down to the studs, bare bones framework.


Yup, I misunderstood you. Sorry about that. I think a compact version for the desktop could be a good idea though I would imagine it would limit our development capabilities. How would you decide what should be removed?

----------


## szlamany

Although the CF is great - and developing for the pocket PC was a good experience overall...

The limitations and reductions in functionality in the CF was painful.

Finding the App path - where the .exe was installed...

Missing this namespace - System.IO.Compression.GZipStream - which means no native way to encrypt files on the device.  Yet it is a mobile device where encryption is kind of a requirement.

No App.Config in the CF - now you have to develop and test your own class to store app settings - that means a day of work compared to minutes using existing FW functionality.

And many, many minor differences - missing methods and properties that require twice the code to get around...

Granted these were removed from the CF because of what the devices can handle.  And the CF needed to have some minimal list of functionality...

My point being that determining what functionality to remove from a "Framework Lite" for the desktop would be a daunting task.  As soon as you crashed into the requirement for something that FW-Lite didn't offer you would be downloading the whole FW.  Or coding around the issue - which I think is counter to the idea of rapid development with a feature-rich function library at your disposal.

----------


## Kasracer

> Missing this namespace - System.IO.Compression.GZipStream - which means no native way to encrypt files on the device.  Yet it is a mobile device where encryption is kind of a requirement.


I think you mean the System.Security.Cryptography namespace although System.IO.Compression was missing in 2.0 of the CF (not sure if it's in the latest version).

Though I agree with you fully and I believe once our mobile devices mature and we start creating such devices with more ram and space, I think eventually we will have the full framework on a mobile device (after all, the CF was created rather than the full being ported due to size and processor constraints).

----------


## Lord Orwell

all versions of windows xp come with the 1.0 framework.  They just don't all have it installed by default.  

Here's a novel idea?  How about making available in stores on cds the service packs?  It could be updated every month or so, and only be the huge stuff such as the .net frameworks or media player 11.  I would personally pay $10 to not have to spend a week downloading about 600 meg of files.  I am one of the guys who lives in the middle of nowhere and doesn't have access to high-speed internet.

----------

