What method do you use to instantiate a Content Type?
This subject came up on a project I'm working on, and it seemed to me that a list definition is a lot of unnecessary work. I don't have any custom rendering requirements, so the Views and Forms elements of the List Schema would just be a productivity black hole.
At first, I turned to the SharePoint Guidance from the patterns & practices group. Their Training Management reference implementation is similar to my requirements – store data is a few lists and use a custom page / web part to show the data in a specific way. The method for creating a list with the content type in their implementation is via a List Definition (which is part of a Site Definition). Let's call that method "#1 – List Definition"
At the Best Practices Conference, Mark Ferraz discussed his approach of using 100% code to manage content types. While this is the most flexible approach, it also has some serious planning/design/coding work required to get started. I don't have that time at the moment. But, we'll call this method "#2 – All Code"
For my project, I was modeling the data using lists created in the browser. (A custom list with columns added as they are identified.) Once that was complete, I grabbed the XML required for the Content Type via the CTExplorer tool. It then occurred to me – why not just bind the content type to a custom list? This is method "#3 – Bind to a Custom List"
So, I'm going to start a series of posts that discusses these methods, along with any other interesting ones that come my way via comments or email. I know I am not the first to go down this path, but I can't think of a better way to understand than to implement, write and document that process. I hope you'll stay tuned!
*UPDATE* -- Turns out that Andrew Connell posted today about creating a simple list definition based on a Custom List. This is implementing #3 using #1. I'll get my description of #3 posted soon so you can compare.