Topic: Design Goals Suggestions -> make it easy to integrate

I don't have a lot of time right now but I wanted to start this thread and see if it get some user attention or perhaps some attention in general from the team writing punbb.net.

I will suggest that most people looking for .net based forums are likely to be developers or at least semi-developers.  As well, there may be hosting sites that will install forums for their clients.  And equally likely, developers will want to do some customization and integrate the forums into their existing web site that may or may not already have users, roles, etc.

So why not write these forums from that perspective.   It would be something more or less unique in the opensource and commercial market place  as well and as a great way to promote the PunBB  "The Integratable Forum" (is integratable even a word? roll ).  Doing it would take more attention to architecture, but shouldn't be a major design contraint (well maybe wink ).

I've done integration with YAF.  It is possible but it is hard to learn and hard to customize.   I won't say anything bad about YAF because it was never written from the perspective (although partially) of being used as anything more than stand alone forums (IMHO).  As such, their code base is very specifically organized around the needs of 'however they wanted to organize their forums' making it complex to learn and equally complex to modify.

I would suggest something like the following:

Put PunBB in its own directory, in both the app_code and the aspx pages.  It only needs to be done once and would save other developers a ton of time.

Make the profile, role providers, etc, so they can be inherited by an existing site's providers and still work. (YAF does this with the profile provider).    For example if the profile inherets from profilebase, an existing project can inheret from the  PunBB profile provider thereby adding to the existing site's custom provider without breaking anything.

Separate the asp.net roles from the PunBB security roles, so that any role can be assigned a security level in PunBB.  For example, I could assign "administrator" in  PunBB to any role from asp.net that I choose.

Use a Business Logic Layer / MVC type of architecture.  If I want to customize functionality (or hide functionality), I should be able to write my own UI, and make calls to the PunBB  BLL objects.   From this same perspective.. try to keep the UI separated from the business logic.

Be able to  turn on/off the site login, with the ability to (in webconfig?) specify a redirection URL for login.  This would allow an existing site  to make use of its own login/logout functionality.

Allow the forum to be a big 'user control' for embedding in a master page.  Something so that it doesn't look/feel like "okay you are now in a totally separate program".

Okay.. I'll stop at this point .  I don't want to waste a lot of time presenting this idea if no one is interested.  If there is interest I'll try to put together some more solid ideas.

Re: Design Goals Suggestions -> make it easy to integrate

Sounds like a good way to go with the software design IMO. Personally I interested in PunBB.net because I need a software I can fully integrate with my current site. I haven't look too much into the code yet (will be a few day until I have time) so I don't know how that goes yet. Of the other things you mention, ssp. the lack of a business layer is concern for me.

Btw. I hope to see some more development on this project. I can see SVN is "active" again, but I haven't found any where that says anything about the future plan.

Re: Design Goals Suggestions -> make it easy to integrate

Another one... it would be nice to be able to have a forum area that can be hidden and protected using roles. 

There may be discussions that are paid content, etc that only certain people should see.   You don't want an aggressive search engine finding and caching all 'hidden content' or regular users from finding the content.

This sort of conflicts with what I was saying about separating the Forum roles from the Asp.net roles ... depends on the implementation.  Using IIS to protect the content would great security and it wouldn't be that hard for an existing site to combine roles.  I think the main thing is not to blindly expose the roles of users of an existing site.  When looking at  the profile of someone in the forums, it might be tempting just to spit out their role as 'guest, user, administrator', etc, but if that is not filtered, you'll be spitting out additional roles, assigned by the parent site.

Re: Design Goals Suggestions -> make it easy to integrate

To give an idea of using inheritance in the roles.. to use yaf with an existing provider, I need to make an entry in the webconfig

<profile enabled="true" defaultProvider="AspNetSqlProfileProvider" inherits="YAF.Providers.ProfileProvider">

[note that is not the correct class name used in yaf so don't copy it if you are a yaf user! its just an example]

By doing the above the yaf profile provider works with YAF and with the existing site, allowing  me to add my own properties in the web config for my site... or however you want to roll it.