http://qntm.org/gay (entitled “Gay marriage: the database engineering perspective”) is an interesting article on the issues around programming changes necessary to accommodate same-sex marriage.
It is not simply a matter of allowing anyone to marry anyone. There are still laws against incest. But what of two brothers marrying? There is one complication that does not occur when one of the marriage partners must be from one category and one from another, namely, that there was no need to test if some was trying to marry himself. You think this a silly case? There are tax breaks for people married.
The cases in the previous paragraph are only some of those mentioned in the article.
If you have ever wondered how complicated a “simple” system can be, read this article. If you have ever wondered how a “simple” change to a program can be so complicated, read this article.