The release of the .NET framework by Microsoft carried a great revolution for developers.
With the .NET revolution come great practical examples too.
On the ASP.NET site everyone could download and install great code samples developed and sponsored by Microsoft, such codes are released on a public domain licence.
Currently the best one in my opinion is the IBuyspy portal (from now IBS): a great, full featured code to manage Internet and Intranets portals.
The major problem with this code is, in my opinion, that it is not a project. I mean that everyone can download and change it, eventually sharing with other some modifications… but the original project remains pretty the same.
I think that in a couple or years we will have 1.000 IBS clones carrying each one a single great feature, but all incompatible with each other.
So the starting point of my vision is: in a couple of years I want to see one large portal software that will have 1.000 great features for everyone to use them.
I have been working on enhancing and extending IBS code for about a year.
Currently some aspects have been enhanced from original IBS:
True multiportal environment
The same code manages infinite different portals, each one with his own users, data, and layout.
Special "admin all"-modules make it possible to add new portals, new modules and activate single modules for specific portals.
More than only edit permission. Current permissions are add, edit, change properties, delete.
All permission have a dedicated page. Permission checks are performed at low level in base classes.
Modules creators don't have to check security permission in their code.
A lot of people don't speak English. Base Rainbow structure supports multiple languages in the Globalization namespace, mainly in the Localize class.
New languages can be added by third party developers.
Additional languages are stored in external resources assemblies that can be simply copied to the bin dir of the project. No need to recompile the base code.
At the present English and Italian are provided, more languages will come in near future.
Themes and layouts
Portals can have their own layout and theme (colors, fonts and graphics). Layouts are simple ascx user controls that designers can edit as they like. Framework provides some ready to use objects for implementing navigation, hierarchical menu, logon and multipane content management. All these objects can be customized with standard styles (including css) and templates provided by net framework.
Rich base classes for developers
Rainbow is an extendable framework, a lot of work has been put in base classes to avoid repeating the same code many and many times on every page and module. All repeating code has been moved to base classes as much as possible. Developers can now concentrate on their own solution and do not have to copy and paste the same code over and over again. This results in a more clean design and leads to a code that can easily be extened.
Beside a module base class also the configuration and edit pages have their base classes. In base classes are automatically loaded page and modules settings checked for security. Base pages manage redirects and common operations such as edit, delete, update, cancel.
Moving common task to base classes also makes it easy to add new functionality, that will become part of derived classes, without having to rewrite derived code.
Easy of use
Ease of usage is a central goal in Rainbow portal. If an operation is not easy to do then this is considered a bug of the program and should be fixed.
What you can do?
I you want to contribute to the project there is a lot of work to do.
The main work I believe is in planning a project management: a well designed project ensures that all pieces fit well in the same environment.
For developers a lot of code will be written so be prepared.
For non developers there are still many things to do: planning, code testing, write documentation, tutorials, usability test, browser compatibility check, etc...
I have made great improvements at design and layout: web designers can contribute creating original themes or convert existing themes from other open source projects.
March 2003, Manu De Andreis, Technical Project manager of Rainbow.