I hope this isn't too off topic. Having been reading suggestions
for a short while now, one recurrent request that I have seen and share is the possibility to have free text moods with icons. I don't really know enough about LiveJournal to know where to start digging through the code, or learn how the system as a whole hangs together, but with my background I do know just enough to be dangerous.
So far as I understand the small subset of the table structure, the tables are laid out as follows:logtext
---< logprop (logproplist)
Where logprop is in a many to one relationship with the log table, and the logproplist table contains reference data for each property type. Included in this data set are values for current_mood as text and current_moodid as numeric.
What I don't understand appears relatively simple. The logprop table can store any logproplist type for a journal entry including, presumably, both text and numeric values for mood. While I may be oversimplifying it seems that allowing both of these values to be stored would be the most elegant way of allowing free moods with icons to be held, without requiring any changes to the existing data structure or existing entries.
Presumably, the current code when building a page to view looks up either current_mood or current_moodid and constructs the HTML accordingly, replacing current_moodid with both image and text. Would it not be possible to look up current_moodid, and then look up current_mood. If a current_mood is specified, it would override the text string defaulted in current_moodid.
Once the server side was changed, the client interface and the individual clients could more gradually be amended, allowing the submission and storage of both pieces of information. (The web interface specifies either or entry, while client interfaces would need slightly more modification)
It seems to me that for what appears on the surface to be a relatively simple adjustment, allowing two pieces of data currently considered exclusive to both be stored, there must be some information I am missing as to why this could not be done, or reasons why the idea has already been discarded.