WordPress.com and Jetpack should lead the way toward standardizing custom post types
I don’t understand why this is an issue. The “lock-in” is only perceived by the theme user, it’s not real, especially when the content is owned. Any theme could add a very basic option and method to convert post type names. The answer should be to build better tools to convert their prospective customers; to help those that might think they’re locked in. It’s good business for Array and others to help convert than to wait and expect others to follow 1.
The real lock-in isn’t custom post type slug names: it’s post_meta 2!
Update:
We shouldn’t give up control by imposing any standards on a popular plugin. Jetpack shouldn’t be an authority for standards; as well as s2Member should never be an authority on subscription logic (even if it was extremely popular).
As I wrote in my response CPT slug names really isn’t an issue. If these businesses want to help customers (by converting them into buyers) they need to provide tools to help them convert from older themes. Technically a CPT slug name is probably the easiest thing to change and an interface to migrate is a days worth of work–more importantly it’s a business opportunity.
— comment
Notes:
Agree 100%. When people talk about how building custom post types into a theme is a form of lock-in, they’re basically talking out their ass. There is no lock in. I could build a small drop-in right now that would let you convert any non-registered post types to a registered one in about 15 minutes.
Post meta is a different story, especially because I (and many others) tend to serialize data that isn’t going to be queryable. That can lead to compatibility issues and touch migrations (which I’ve done a few of).
I’d love to talk at some point of serializing vs. not, probably not now because I’m still mulling it over. I’d like to be convinced the disadvantage of filling up the post_meta table supersedes not being able to query the meta but meta shouldn’t ever really be queried anyway and a taxonomy should instead be used. Maybe I just convinced myself :/