Quoted By:
A little while ago I was programming a pokemon fan game from scratch. I had no plot, but I got the basic engine down. Anyway, in it, I replaced all HM's with items. Surf was a surfboard, flash was a flash light, cut was an axe, etc. Fly was difficult, so I ended up making it a mobile teleporter that could only teleport you to another teleporter. This made sense in single player, because it would teleport you to a teleporter in any Pokemon Center that you had visited prior. It made sense in the co-op multiplayer I had planned out, because then you could teleport directly to your friend.
I guess my point is that HM's shouldn't exist but their functionality is cool. They should be replaced with items.