I like WURFL, but I also very much like the idea of the manufacturers themselves keeping their own handset profile XML files up to date. I ran across this again while looking at a Nokia XHTML-MP document and did a Google and found this great UAProf resource over at Source02:
A list of the locations of all the available Nokia Devices'Â UAProfs is at http://nds.nokia.com/uaprof/uaprof_list.txt
Available at http://mobileinternet.panasonicbox.com/Uaprof/<dev number>/<release number>.xmlÂ eg http://mobileinternet.panasonicbox.com/UAprof/GD87/R1.xml for the Panasonic GD87
Sagem UA Profs are stored at http://extranet.sagem.com/UAProfile/<id>.xml eg http://extranet.sagem.com/UAProfile/823252.xml is UA the UAProf for Sagem-X3
All the available profiles are listed at http://wap.samsungmobile.com/uaprof/SUWON.xml and http://wap.samsungmobile.com/uaprof/GUMI.xml
Stored at http://sharp-mobile.com/UAprof/device.xml for example Sharp GX-10: http://sharp-mobile.com/UAprof/GX10.xml
Stored at SiemensÂ http://communication-market.siemens.de/UAProf/<device>.xmlÂ Â For example, Siemens S55:Â http://communication-market.siemens.de/UAProf/S55_00.xml
Other Resources (you may need to register at some of thes sites)
Introduction to User Agent Profile from NokiaÂ Â Â
Openwave developer resource about UA Prof.
DELI it is an open source project available from http://delicon.sourceforge.net/ that that allows Java servlets to resolve HTTP requests containing delivery context information from CC/PP or
Technical Report from HP about technical detail of UA Prof and C/PP
These sites seem very up to date. Here's an example of Nokia's 7610 profile document. It's in RDF (urgh) but it seems quite complete and very accurate. I know that Cocoon uses DELI, and I know that Cocoon is used in production at Vodafone and other big mobile carriers, so this is something to take seriously. The combination of real-world usage and the fact that the manufacturers themselves are maintaining these documents is really quite compelling, no?
Now the question is, "How do you use these damn things efficiently?" Think about a website getting hammered by thousands of handsets per minute. I'm going to have to have some big-honkin data-structure in memory and check against it for every request - or at least per session. It seems like a great way to slow your mobile website down to a crawl. I guess I'll have to look at how Cocoon uses DELI and see if there's any secrets to learn there.