Just to get an interesting discussion going: the best explanation that I have ever seen about native components came from one of the joomsuite devels (mind you I am not affiliated to these guys in any way) explaining what joomla native meant to him; if jomsocial would just follow that concept, then probably everybody would be much more satisfied. I have taken the liberty to quote from their site:Joomla 1.5 getting more and more popular and more and more components supports is. Some of them in obvious legacy mode and some of them claim as Native. But what this word really means. We discoverer that just the fact that component works without legacy mode turned on does not means it is native. Below is a list of definitions that we believe can help developers create more compatible and standard extensions.
Joomla Nativity Standards (JNS)
Designing DB
1.Every table should contain published field where it is applicable
2.Every table should contain checked_out and checked_out_time fields if this table records managed in backed.
3.Every table should contain access field where it is applicable
Development
1.Component should be developed in complete MVC model of Joomla 1.5 taking in account all Joomla MVC standards
1.MVC implementation should be done through core Joomla JController, JView, JModel classes.
2.File structure should conform
2.In administration component should use Joomla core Toolbar to create Functional buttons
3.Every list of records have to have checkin and checkout functionality implemented to prevent double editing record at the same time.
4.Every list of records should have published/unpublished opportunity
5.Every list of records should have access column where it is applicable and its implementation should work in frontend.
6.All error messages should be outputted through JError class
Styling Admin
1.All standard toolbar buttons functions like publish, unpublish save, apply, close, edit, etc should use template images
2.Custom button icon should be in the same style
3.You should think out interface using Joomla interface elements like Sliders, Tabs, Toolbar, ... as much as possible
4.Generating tables and forms standard CSS classes like admintable, adminform, ... should be used
5.Everything component generate and display either in back-end or front-end should be formatted with appropriate core Joomla classes that should guaranty best outlook with any template.
6.Personal formatting may be used but it should not format colors and borders
By one word all this above tells that your component in admin should looks & feel like core Joomla component. When users use it, they should intuitively understand this except where it is very specific. I mean at least ow to create new item or delete it, should not be the question.
Styling Frontend
1.All elements rendered on frontend should be formated by core Joomla CSS classes. For example main title: .componentheading, subtitle: .contentheading, data/time: .createdate, .modifydateand so on.
2.Special attention to format tables that list items. Do not forget table classes like .sectiontableheader, .sectiontableentry1, .sectiontableemtry2. I noted that many ignore that.
3.Elements should be placed on the page in general Joomla style.
By one word, user should not think a lot how to adopt component to looks great in his currect template but jut inastall component and use it. I mean that even if user need to edit template just to change positions and order of elements but not color and font size.
Gives some ideas to think about, eh? I like jomsocial, I've invested in it and in addons, but I am unsure whether I will ever use it.