The core idea behind open source is very simple: When programmers can read, redistribute, and modify the source code for a piece of software, the software evolves. People improve it, people adapt it, and people fix bugs. This process can happen at a speed that, compared to the slow pace of conventional software development, seems astonishing.
The DotNetNuke product is developed based on following guiding principles:
Build the Right Product before You Build the Product Right
Focus should be directed at understanding problem and identifying the high-level business requirements before attempting to construct the perfect technical solution. Do not over-engineer products but instead focus on the practical, useful application of technology to maximize customer value. Listen to your customers.
Development Is a Team Effort
Treating your users as co-developers is the most effective option for rapid code improvement and effective debugging.
Develop Incrementally
Functionality should be added in small incremental units rather than attempting a huge monolithic implementation. Your users are your best source of feedback. Release often but with a level of quality that instills confidence.
Law of Diminishing Return
The majority of the effort should be invested in implementing features that have the most benefit and widest general usage by the community.
Provide an Upgrade Path
Users should never be left on an evolutionary dead-end; a seamless upgrade experience should always be delivered along with new functionality.
Preserve Backward Compatibility
The API is a critical part of the product and care needs to be taken to preserve backward compatibility as all stakeholders rely on its integrity as a critical part of their business.
Minimize Dependencies
Keeping the number of independently licensed components and resources to a minimum reduces complexity for both developers and customers
Architect with Extensibility in Mind
You can never expect to satisfy the needs of every user, so you need to ensure that every feature offers configuration or extensibility options which allow for simple customization without modifying the core platform