It would be useful if we can attach a message to monero transactions for reference. Is there any future features in the works to do something like this? Bitcoin has OP_RETURN with 40 byte limit.
Well, a transaction id is already a 32 byte field that you can put whatever you want in there.
Payment id is actually in a part of the transaction field called "tx extra", which I believe supports arbitrary length data (as long as the tx for in a block, I guess). However, the default client does not support putting arbitrary strings on that field, and I don't think other nodes will relay what they see as a malformed tx. So, you'd have to modify the source code and then mine your own block at this point (or work with a pool).
Current software supports embedding arbitrary 256-bits or 64-bits into a TX. The 256-bit "payment ID" will be unencrypted on the blockchain (unless you encrypt before submitting). The 64-bit "payment ID" will be encrypted with the "shared secret" before bein written into the TX. This can easily be decoded by the recipient as it uses a scheme similar to how outputs are made (ECDH).
Since it allows any "hex" string of 64 or 16 chars, you could use this functionality today.
As TX-extra field is not subject to consensus rules (it's fundamentally a message field - it can be anything), you could make your own wallet implementation to put whatever you want in there. It would, however, be restricted by the max TX size and the receiving wallet would need to be able to recognize it as well.