As HTC Desire (sometimes referred to as Bravo overseas) Owners will know the biggest drawback with the phone is the small internal memory for holding apps.  Even with Froyo's A2SD function it seems that you do not need to install many apps before you get the dreaded low memory symbol appearing and upgrading to Gingerbread did not change this. This was driving me nuts so to get round this problem I did some research on the web and now my Desire is running a gingerbread custom ROM and I have loads of memory. 

I thought my experience might be of interest to others who have this issue and want to do something about it.  Please note this is not intended as a blow by blow description of how to do it, there are plenty of those on the web, but rather a broad description of the process I followed with things you need to consider and with some of the "noob" issues that I had and the answers I had to hunt high and low for.

1.  Rooting your Phone.

When you first buy your phone it comes with a locked down ROM which you cannot change without getting administrative rights to your phone.  Getting administrative rights is called rooting and there are many methods of doing this on the web. The method I used was "Unrevoked". There is a guide here... http://theunlockr.com/2010/09/20/how-to-root-the-htc-desire-unrevoked-method/ or http://hemorrdroids.net/one-click-root-thanks-to-unrevoked/ for example.

Unrevoked also loads your phone with a Recovery image.  This is where you can set your phone up to install new Roms and it allows you to take a back up of you current ROM (called a Nandroid Backup) which you can restore if you don't like your new ROM or things go wrong.  To get to the recovery menu you turn off the phone, then turn it back on by holding down Volume Down and Power until the white bootloader screen comes up and from there choose the recovery option. 

Which ever method you use make sure it is suitable for the Desire and follow the instructions carefully or you could brick your phone. Neither the method developers or anyone else including Geekzone or I take responsibility for that. 

2. Expanding the Desire's memory

Remember how I said the Desire's internal memory sucked?  To use custom roms you need to make better use of your phones memory.  Froyo introduced a method of this called A2SD which moved part of an app to your SD Card but some clever developers came up with another more efficient method called A2SD+ which uses the SD Card to store system files and I believe moves more of your app to the phone's SD card, although not all of it. This means your available internal memory will still go down but not at such a great rate. 

 When you get an SD Card it normally has one partition on it in "FAT32" format which can be seen in Windows Explorer. This is where your phone stores things like your music, data for apps and as noted above part of the apps themselves. 

 To use A2SD+ you need to add an "EXT2" or "EXT3" partition. to your SD card.  EXT is a linux file storage method.  As far as I can tell there is no real difference between EXT2 or 3 but I went with EXT3 as that is what most Developers recommend.  Again there are many ways to do this.  I used a free windows based tool called "Mini Tools" you can find here http://www.partitionwizard.com/download.html. It allowed me to partition my SD Card by wiping the current FAT32 partition and creating two new ones, FAT32 and an EXT3.

 Things to remember:

a) Partitioning your SD Card will wipe the contents so make sure you back your Card up before you start;

b) Make sure you choose your SD Card for this process and not your PC's hard drive as Mini Tools shows all available drives! 

c) Follow the Rom developer's recommendation for how big the EXT3 partition needs to be - some Roms want as much as a 1 Gb or more so you need a fairly big card, I use an 8 gb card.

d) Format your FAT32 Partition first and then the Ext partition.

e) Once the process is complete you can confirm it by downloading "Quick System Info" from the Android Market and running it on your Desire.  If you have done it correctly then you will see "A2SD  Storage"  with a value roughly equal to the size you chose for your EXT partition. 

f) Once done you can copy the files you backed up into your new FAT32 partition.  Windows will think your SD Card has shrunk in size as it only sees this FAT32 partition (EXT is a Linux partition remember?) so don't worry the EXT one has not disappeared.

3. Which Custom ROM?

From here it is easy to install a ROM.  To choose a ROM you can do no better than start with the XDA Developers forum here http://forum.xda-developers.com/forumdisplay.php?f=628  This website is a treasure trove of information, source of ROMs and help if you ever have problems.  This thread is a good starting point for choosing a ROM you want to try http://forum.xda-developers.com/showthread.php?t=809328

As an HTC Desire user you will no doubt be used to HTC Sense.  This is an overlay which HTC put on top of Android to, in their view, improve its usability.  Your first decision then is to choose whether you go with a Sense or non-Sense Rom.   

AOSP Roms

These are ROMS which are based on vanilla Android i.e. they don't have Sense.  The most commonly used from what I have seen is Cyanogenmod 7 (or variants of it like GingerVillian) or Oxygen.  Cm7 & Oxygen are very similar super fast Roms with some additional tweaks but few frills (you can add those) and they are very customisable.  CM7 comes in a stable release and nightly builds.  The nightlies are not necessarily bug free so use them knowing you could have issues.   

Sense Roms.

As a Desire User you will probably know that the Gingerbread release for the Desire was only done reluctantly by HTC and with no changes to Sense because internal memory issues meant they could not fit all the new Sense bells and whistles in.  Therefore the stock Desire Gingerbread Rom looks basically the same as the Froyo one with the Gingerbread changes simply being "under the hood".

 However there are a number of Gingerbread ROMs out there which have been cooked up incorporating these new Sense features (referred to as Sense 2.1 and Sense 3.0) which you can now try if you have rooted and partitioned your SD Card. 

Miui Roms

 For those missing Apple these have an iOS feel to them.  I have not tried one but I understand they are customisable and are regularly updated.

In general mileage seems to vary on Roms.  Some seem to find the one they have works fine others report problems.  I for example tried Gingervillian but then ran into a problem with the WiFi dropping out.  Moral of the story, you may need to try several before you find one you like and/or works for you.

Other terms/issues you may strike in choosing a Rom

Rom Versions.

1. Many Devs have more than one version of a Rom so you have to choose the right one.  If you follow the procedure above in rooting your Desire and partitioning the SD Card, your Desire will be Stock HBoot/A2SD+ compatible so that is the one to choose.

2. Stock HBoot refers to the standard internal memory partitions in your Desire when you buy it.  It comes with System 250mb, Cache 40mb, Data 147mb.

3. Again some clever guys have come up with a way to change those partitions so they could develop their Roms and data to fit onto the Desire's internal memory more efficiently.  So for example if you see a Rom which is expressed as being for HBoot  "CM7 r2", this means it is compatible with a Desire what has had its internal memory changed so it is System 145mb, Cache 5mb, Data 287mb.  To change your partition you need to be "S-Off".

4. S-Off means "security Off".  When you hold the volume down button on your Desire when you turn the phone on this brings up a white screen.  At the top you will see your Bootloader's HBoot number and security status.  This will be something like S-On 0.75 or S-On 0.83 or the like.  The Desire's internal memory partitions are held in the Bootloader which is locked down (S-On) so to change them you need to unlock it (S-Off). To do this you need to use the AlphaRev 1.8 reflash utility here http://alpharev.nl/

5. The AlphaRev utility can be downloaded, burnt onto a CD and then you run it from direct from the CD when you turn your PC on (assuming you have set your PC up to check the CD first on boot up).  Like rooting there is a risk you can brick your phone if it goes wrong as you are messing with the Desire's bootloader so you are doing this at your own risk.  Saying that I did it (for reasons I will set out below) and I had no problems. It is a very straight forward procedure although it is recommended you load a rooted stock Froyo Rom on your Desire first, which you can find on XDA Developers site (luckily I had a Nandroid backup of one) so don't use a Gingerbread one.  There is a good description of how to do it here... http://www.htcdesireforum.com/htc-desire-updates-and-rooting/guide-on-how-to-apply-apharev-on-an-htc-desire/

6. If you want to change your partition the AlphaRev site has a list of images you can burn and load onto your phone.  I haven't done it so can't comment on how it works.

7. Note you don't necessarily need to be S-Off. Many Roms offer the Stock HBoot/A2SD+ option for which you don't need to be S-Off to use.  The Developer will say in their installation instructions if S-Off is required.

HBoot Problems.    

1. My Desire came from Telstra with HBoot version 0.75 and I rooted it long before Telstra's Froyo update became available.  This was fine until I decided to try LeeDroid's custom Sense Rom with Sense 2.1/3.0 and found out that people had had issues with getting it to load using this version and 0.80 (I had not had this problem with the GingerVillian Rom I had tried) so I needed to upgrade to 0.93.

2. To do this I found I had two options: Load a non-rooted manufacturers Froyo rom thereby losing root, and then root my Desire again, or use the AlphaRev method referred to above which apart from giving me S-Off also changed my bootloader to 0.93.  I chose the latter as it seemed easier.  If you have not already rooted your Desire and have the manufacturers Froyo rom still on it, then this should not be an issue for you as I understand the manufacturers update upgraded your bootloader to 0.93.  You can check on the white screen by holding the down volume button when you turn your phone as noted above.                    

3. I can't say if this is an issue for other Sense Roms but it would not surprise me if it was.  Read/search the Rom developers XDA thread first.

MD5sums.

1. When looking for Roms I noticed they had MD5sums which was a pile of numbers and letters under the Rom link.  I found out the hard way what these were for when I could not flash a Rom I had downloaded onto my Desire.  It turned out the download although it seemed to happen properly didn't and when I compared its MD5sum with the one on the Dev's webapge they were different.  I downloaded it again and checked it again and this time they were the same and the download worked.

2. There is a free utility here http://www.winmd5.com/ that compares MD5sums.  Just point it to your download and then copy and paste the Dev's MD5sum into the program and it will tell you if they match.  This is very important for the likes of AlphaRev because if they don't match you risk bricking your Desire.

Installing a Custom Rom

Once you have chosen your Rom make sure you follow the developers instructions for installation.  Some give more detail than others about how to do this but again there are heaps of How to's on the web like this one http://myhtcdesire.com/modding/how-to-install-a-custom-rom-on-your-htc-desire

The main points to note are:

1.  Do a Nandroid back up so if it all goes wrong you recover your current ROM (see above) i.e. if the new Rom fails to load or the phone stops working you can pull the battery, turn the phone back on in recovery mode and restore your old Rom;

2. Back up your apps and files using Titanium Backup from the Market so you can restore them afterwards.  You don't want to lose the level you were up to on Angry Birds!

3. Back up your calendar and contacts to Google.  They are easy to restore from there.

4.When a developer says do a full wipe this means in the recovery menu choose "wipe cache partition", "wipe data/factory reset" and "advanced/wipe Davlik Cache".

5.  Choose the right Rom for your set up.  Unless you are S-Off and have changed your Desire's internal memory partitions this will be Stock HBoot/A2SD+

6.  There should be a method to move your Davlik Cache from your Desire's internal memory to your SD Card.  This frees up about 40mb on your phone. Some Roms do it automatically for you, others give you a separate zip file to run or a manual process.  It is well worth doing.

In case you are interested I am currently running LeeDroid 3.3.3 Gingerbread Sense Rom with a 1Gb Ext3 partition on my SD Card and Stock HBoot.  With all the apps I had pre-upgrade and a couple of new ones and I have 106mb free internal memory instead of the 15mb I had before.  It is running extremely well to date. 

If you have made it this far then sorry this has turned into the mother of all posts but hopefully you have found some useful information here.  This post is by no means an exhaustive list but simply things I had to figure out as I went along.  There are a lot of experts on this forum so no doubt they can add anything important I have forgotten or haven't struck.  I will be happy to edit this post with the appropriate credit.     
Cheers