[Epic 4G Android Development] DRockstar:
HOW TO GET YOUR ROM/KERNEL/THEME LISTED IN ROM MANAGER:

first, go to www.clockworkmod.com, and click the Developer Portal link on the top of the page.

Sign in with your google login, and give it permissions on your google account.

Once you have done that, sign into the portal, and click link Developer Settings, and edit your developer profile.

After that, you can submit ROMs to ROM Manager in one of 2 ways:

UPLOAD USING ROM MANAGER HOSTING:

Go here:

http://developer.clockworkmod.com/developer/upload

This is the easiest method, you just use the developer portal to upload your ROM, and specify which phone your ROM is for. You can upload screen shots, etc after your ROM is uploaded. This is easy, but there's one caveat: your ROMs will be hosted with ROM Manager hosting, and will only be seen by premium ROM Manager users on the weekends. If you want your ROMs to be seen by free ROM Manager users at all times, see the following section on how to use your own hosting and enable advanced ROM install options.

USING YOUR OWN HOSTING AND ADVANCED FEATURES OF ROM MANAGER:

OK, this is for developers that have their own hosting, and don't mind doing a little bit of extra work for a whole lot of benefit. The code examples here are taken from the following link:

ROM Manager and Third Party ROMs

First, you'll then want to get yourself listed in the list of developers in ROM Manager by updating your developer settings.

Make sure that the URL you provide for your ROM list above will not ever need to change. Now go to http://developer.clockworkmod.com/developer/settings and check the box for "Manual Manifest URL (Advanced Developers Only!)" and paste the link to your manifest.js file.

Now, you'll want to describe your list of ROMs that the user sees when they click you.

To do that, you need to create a JavaScript file that will live at the URL you provided. It should look something like this:

{
// The version of the manifest, so ROM Manager knows how to load it
"version": "1",
// The homepage for your ROM, if you have one.
"homepage": "http://www.cyanogenmod.com/",
// The donate link for yuor ROM, if you have one.
"donate": "https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=3283920",
// Your list of ROMs
"roms":
[
{
// Display name of the rom
"name": "CyanogenMod 5.0.5",
// Display summary of the rom
"summary": "Stable",
// Device that this rom runs on
"device": "sholes",
// A screenshot to show off what the ROM looks like! (This is optional)
"screenshot": "http://www.droidaftermarket.com/koush//motorola/sholes/screenshot2.png",
// This is the download URL of your ROM.
// These URLs should have unique filenames per version!
// Ie, don't use a zip with the same name
// as that of a previous version with a new version.
// Otherwise ROM Manager will continue using the
// old cached zip on the SD card.
// This must be a direct download,
// and not a Mediafire type link.
"url": "http://www.droidaftermarket.com/koush/motorola/sholes/cyanogen_sholes-ota-eng.koush_5.0.5.zip"
},
// Antother, older ROM!
{
"name": "CyanogenMod 5.0.4",
"summary": "Stable",
"device": "sholes",
"url": "http://www.droidaftermarket.com/koush/motorola/sholes/cyanogen_sholes-ota-eng.koush_5.0.4.zip"
}
]
// Remember to delete all comment lines for JSON compliance, and the blank
// lines that some editors stick at the end of files. Finally, be sure to
// run your file through www.jsonlint.com to catch any whitespace or syntax errors.
}

And that's it! Your ROM is now listed in ROM Manager!

But, if you want to use the more advanced features of ROM Manager, such as download mirroring, and ROM customization, check out this manifest:

{
// The version of the manifest, so ROM Manager knows how to load it
"version": "1",
// The homepage for your ROM, if you have one.
"homepage": "http://www.cyanogenmod.com/",
// The donate link for yuor ROM, if you have one.
"donate": "https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=3283920",
// Your list of ROMs
"roms":
[
{
// Display name of the rom
"name": "CyanogenMod 5.0.5",
// Display summary of the rom
"summary": "Stable",
// Device that this rom runs on
"device": "sholes",
// Product name of the mod. Product names should stay the same between versions of the mod.
"product": "CyanogenMod",
// The "modversion" is the value of ro.modversion in /system/build.prop. Your ROM should set this
// in that build.prop so that ROM Manager can figure out what ROM is currently running.
// This is optional however, you don't need this line here or in /system/build.prop
// if you don't want to use OTA updates.
// ROM Manager then uses this modversion to compare it to other modversions in the list of
// ROMs, and determine which is the newest version by using an alphabetical sort.
// For example, if the user is running "CyanogenMod-5.0.5-Droid" and there
// are roms with modversion "CyanogenMod-5.0.7-Droid" and "CyanogenMod-5.0.6-Droid",
// ROM Manager will upgrade the user to "CyanogenMod-5.0.7-Droid".
// Please note, that "CyanogenMod-5.1-Droid" would be considered a DOWNGRADE
// to "CyanogenMod-5.0.5-Droid" due to how it is sorted alphabetically.
// The proper version for such an upgrade would be: "CyanogenMod-5.1.0-Droid".
"modversion": "CyanogenMod-5.0.5-Droid",
// Some Screenshots that show off the ROM!
"screenshots":
[
"http://www.droidaftermarket.com/koush//motorola/sholes/screenshot.png",
"http://www.droidaftermarket.com/koush//motorola/sholes/screenshot2.png"
],
// This is a list of mirrors for your ROM. These URLs should have unique filenames per version!
// Ie, don't use a zip with the same name as that of a previous version with a new version.
// Otherwise ROM Manager will continue using the old cached zip on the SD card.
"urls":
[
"http://www.droidaftermarket.com/koush/motorola/sholes/cyanogen_sholes-ota-eng.koush_5.0.5.zip",
"http://koush.romraid.com/motorola/sholes/cyanogen_sholes-ota-eng.koush_5.0.5.zip",
"http://alldroid.org/roms/motorola/droid/koush/motorola/sholes/cyanogen_sholes-ota-eng.koush_5.0.5.zip"
],
// Optional addons (you don't need this if you dont have any)
"addons":
[
{
"name": "Google Apps",
"url": "http://goo-inside.me/gapps/gapps-passion-EPE54B-signed.zip"
},
{
"name": "Modules",
"urls":
[
"http://koush.romraid.com/motorola/sholes/bekit-modules.zip",
"http://alldroid.org/roms/motorola/droid/koush//motorola/sholes/bekit-modules.zip",
"http://www.droidaftermarket.com/koush//motorola/sholes/bekit-modules.zip"
]
}
]
},
// And here's another, older ROM!
{
"name": "CyanogenMod 5.0.4.2",
"summary": "Stable",
"device": "sholes",
"product": "CyanogenMod",
"incremental": "5042",
"modversion": "CyanogenMod-5.0.4.2-Droid",
"urls":
[
"http://koush.romraid.com/motorola/sholes/cyanogen_sholes-ota-eng.koush_5.0.4.2.zip",
"http://alldroid.org/roms/motorola/droid/koush/motorola/sholes/cyanogen_sholes-ota-eng.koush_5.0.4.2.zip",
"http://www.droidaftermarket.com/koush/motorola/sholes/cyanogen_sholes-ota-eng.koush_5.0.4.2.zip"
],
"addons":
[
{
"name": "Modules",
"urls":
[
"http://koush.romraid.com/motorola/sholes/bekit-modules.zip",
"http://alldroid.org/roms/motorola/droid/koush//motorola/sholes/bekit-modules.zip",
"http://www.droidaftermarket.com/koush//motorola/sholes/bekit-modules.zip"
]
}
],
"choices":
[
{
"name": "Kernel",
"options":
[
{
"name": "Overclocked",
"url": ""
},
{
name: "Stable",
"url": "http://clockworkmod.s3.amazonaws.com/motorola/sholes/kernel_nooverlock_1.0.2.zip"
}
]
}
]
}
]
// Remember to delete all comment lines for JSON compliance, and the blank
// lines that some editors stick at the end of files. Finally, be sure to
// run your file through www.jsonlint.com to catch any whitespace or syntax errors.
}

Note that you can do cool things that install a sequence of installation zip files. "choices" makes a user choose between several zips (use a URL of "" for no action). Only one of those choices will be installed. You can also have multiple choice selections. And "addons" lets the user choose any number of additional zips to install. You can view my manifest for a full sample.

Finally, to register your ROM for OTA updates, you need to edit your /system/build.prop in your ROM to include your Developer ID ro.modversion (as mentioned above) so ROM Manager can identify the version of your ROM. This is optional as well, but why not get OTA updates if it's just a couple lines of settings!

ro.rommanager.developerid=cyanogen

ro.modversion=CyanogenMod-5.0.5-Droid

And that's it! Once you upload that file, your ROM will now be available to other ROM Manager users! Good luck, and let me know if you encounter any bugs or need help!

ROM MANAGER WEB CONNECT FEATURE FOR PREMIUM USERS

The ROM Manager Web Connect feature is a way for Premium users to be able to flash a ROM directly to their phone, just by clicking a forum link. This link can be clicked even on a desktop PC, and it will download and prompt to install directly on the phone.

For users to use Web Connect:

In ROM Manager, hit the menu key, an click on Web Connect. Sign in to whatever google account you want Web Connect tied to. When you click a Web Connect link, simply sign in to your google account, and it will immediately download the ROM to the phone, and prompt to install it. The install can be cancelled if desired.

For developers to create a Web Connect link to your ROM:

Go here:

http://www.koushikdutta.com/2010/09/new-rom-manager-feature-web-connect.html

and put in your name/url, and create a bit.ly url for your ROM link.