Search

OpenForce Blog Posts

DNNDaily.com
Thursday, September 02, 2010 7:23:55 PM

So if you’ve been under a rock lately you might not have heard that the annual DotNetNuke conference is coming up. While in the past it has been branded as OpenForce, this year it is just simply DotNetNuke Connections, to better fit inline with the DevConnections banner.

This years event is once again going to be held in conjunction with DevConnections in Las Vegas Nevada, November 1-4. The conference is at the Mandalay Bay Resort and Casino, a great venue that has been the amazing home to the DotNetNuke conference for the previous three years.

 

DNNDaily.com
Saturday, August 21, 2010 4:40:01 PM

Over the past two days I’ve delivered a topic called Jumpstart: DotNetNuke Module Development, you can download the PDF for the presentation here. This session is a basic intro into quickly starting to do some DotNetNuke Module Development, and if you happened to have missed it you can actually watch a previous version of this presentation in the Beginning DotNetNuke Module Development course that is part of our DotNetNuke Training offerings.

In the session I point out a couple of URLs on how to do a few things, here are those URLs and what they provide.

  1. Setting up your development environment for DotNetNuke
  2. Customizing and installing a module development Visual Studio Template
  3. Configuring and using NANT to automate your module packaging

In addition to these offerings for module development, we are offering a full day long course on Module Development before the DNN Connections event in Las Vegas Nevada in November of this year, for more information on the conference and pre-conf training check out our DNN Connections page.

If you missed the St. Louis Day of .NET this year you missed out on a great event! Be sure to keep an eye on www.stlouisdayofdotnet.com for announcements on when the event will be next year! Thanks to the organizers for another great event.


More ...
Tags: DNN,St. Louis,DotNetNuke,Day of .NET,STLDoDN
Category: Community
Category: Extension Forge
Category: Reference
Category: Events
Category: Development
Joe Brinkman
Wednesday, August 18, 2010 3:03:43 PM

products2I am happy to announce the release of DotNetNuke 5.5.  Since we first released Localization support in DotNetNuke 3.0, we have known that the story was not complete.  With DotNetNuke 5.5, I am pleased to say we now have full localization support.  This was one of the main features that we laid out in our DotNetNuke 5.x vision at OpenForce 2007 and was the last major feature missing from our original roadmap for the 5.x platform. 

Content localization in DotNetNuke 5.5 will allow you to easily manage your web pages in a primary language and then utilize translators to keep the content synchronized in multiple secondary languages.  Whether you are maintaining your site in a single language or dozens of languages, the content localization system will help guide your content editors and translators through the process.  Although content localization required extensive changes to the core platform, we have been able to add this new feature while still improving overall system performance.  In addition, with the hundreds of other changes, enhancements and bug fixes, people are already saying that they are finally ready to migrate off the 4.x platform.

DotNetNuke 5.5 also marks another milestone: earlier today we announced the immediate availability of DotNetNuke Enterprise.  DotNetNuke Enterprise adds Content Staging to an already impressive list of features available in the DotNetNuke Professional platform.  As we have done with DotNetNuke Professional since we originally launched it 16 months ago, we will continue to expand and strengthen the features of the DotNetNuke Enterprise platform over the coming months to ensure our customers are receiving a great return on their investment.

Below are the highlights from this months release.  As usual, you can see a full list of changes in the changelog.

Major Highlights

  • Added Content Localization support
  • Added new wrappers for additional Telerik controls
  • Improved performance by updating Data Access Block.
  • Updated Telerik components to latest release.
  • Added core Unit Tests to the source code package
  • Added new Default Visibility setting for Profile Properties.
  • Added ability to suppress auto-injected Module css class.
  • Added new Settings and Configuration properties to base Presenter class.
  • Improved logging during upgrades.
  • Added support for Media element in styles skin object.
  • Fixed issue which prevented system from running correctly when using alternate port number
  • Fixed issue with portals not being created after upgrade.
  • Fixed issue where incorrect AdministratorRoleId could be added leading to UI incorrectly showing "padlock" icons in permissions grid
  • Fixed issue with welcome emails not being sent if system is set to use a double byte langugage.
  • Fixed issue with viewing Profile picture.
  • Fixed portal creation so User profile page is set correctly.
  • Fixed broken link to verify language resources.
  • Fixed issue with Host updating Site Settings.
  • Fixed issue with HTML module's database level dependency on the Modules.ModuleTitle field.
  • Fixed issue with Host/Admin being able to disable all languages.
  • Fixed issue where it was possible to have a disabled portal default language by enabling the applicable values on upgrade.
  • Fixed issue with User Profile Image not showing.
  • Fixed issue with Tab Order starting at -1 when hard deleted from Recycle Bin.
  • Fixed issue where an exception occurred when editing page settings of a disabled language (that once had been enabled)
  • Fixed issue with File Manager when adding new folders, no longer have to Click the root folder first.
  • Fixed parent drop down in edit page settings so that users who have edit rights, bt are not Administrators get None Specified option.
  • Fixed issue with Profile Image Control.
  • Fixed issue where wrong portalid was used if accessing site settings via host->portals menu. This could display the wrong set of languages for a portal and lead to portal display language being incorrectly updated.
  • Fixed issue with GetTabPaths Stored procedure to handle null culture pages correctly.
  • Fixed issue with case insensitive fonts in Captcha control.
  • Fixed issue with Telerik editor file management.
  • Fixed issue with exception thrown when creating new languages.
  • Fixed issue where host vendors did not allow selection of an image from a host folder.
  • Fixed issue with upgrades when there are deleted portals.
  • The Edit Profile link in the View Profile should redirect to the Manage Profile page.
  • Fixed issue where language editor page size was not defaulting to 10 as required.
  • Fixed issue with SendMail removing HTML formatting.
  • Fixed issue where anonymous users were not respecting the browser default language setting for current locale
  • Updated CoreSitemapProvider to use the ModifiedDate of the Tab and Modules on the Tab for the LastModified date for the PageUrl.
  • Verify Language Resources to Verify Language Resource Files to match the wireframes for the Content Localization project.

Security Fixes

Updated Modules/Providers

The following modules and providers have been updated in the 5.5.0 packages.  Please see the specific project pages for notes on what bugs or enhancements were corrected with each release.

Modules

  • Events Module 05.01.04

Providers

  • none
Joe Brinkman
Friday, July 23, 2010 6:00:16 PM

FeedbackLast year at OpenForce Connections in Las Vegas, Shaun Walker announced an updated release policy.  The goal in 2010 was to move to a monthly maintenance release schedule along with Quarterly major releases.  Prior to this policy announcement, releases were quite sporadic which made it difficult for our internal planning purposes, and also made it difficult for our users to schedule their own upgrade testing and deployment.  When we first committed to this new release schedule, we knew that it was going to take a little time before we could get into the groove with the new release cycle.  By February we had 3 monthly releases under our belts and things looked to be going pretty well, so much so that I blogged about it.

We are now 8 months into the release schedule and following some issues with a few of our recent releases we’ve had a lot of feedback from customers and community members regarding the release schedule. Some users have indicated that monthly releases just didn’t give them time to properly test and upgrade their sites before a new release was coming out and they had to start the cycle all over again.  Other users worried that committing to monthly releases was hurting the quality of our releases.  Conversely, some users liked the frequent releases because it meant they could get bug fixes quicker.  Some users also liked the predictability of the release schedule.

After a lot of discussions with community members, with the core team members, with customers and with partners we have decided to modify our release schedule to address many of these concerns.  Starting with the 5.5 release we are moving to maintenance releases every two months and reducing our major releases to 2 or 3 a year depending on the complexity of the features included with each release.  We will still be targeting specific release dates so that we can scope each release and set proper code-freeze dates, but we will adopt a more quality driven approach to the final release date.  If we need an extra week or two on a release to make sure we get it right then we will extend the release date to make sure we meet both our own quality standards as well as yours. 

We believe that these changes to the release schedule will allow us to still provide a level of predictability in our releases while also addressing the pacing and quality issues raised by many of you.  We appreciate the feedback that has been provided on this and many other issues and are always willing to listen to your concerns.  As I stated in a recent blog post, Open Source works best when you get involved.  Your feedback does make a difference.

Joe Brinkman
Friday, June 04, 2010 10:57:34 AM

coins Isaac Asimov was once quoted as saying “The only constant is change”.  That has certainly been true of my time with the DotNetNuke project. Over the last seven years of working on the DotNetNuke project and working at DotNetNuke Corporation I have held a number of different roles within the organization.  I have defined and coded major product features, built and managed the DotNetNuke Marketplace, managed the release process, managed both OpenForce Conferences, oversaw the QA function, and created and managed the DotNetNuke Professional support team.  During this time there have been a lot of things for which I am proud to have hand in developing and a few that I wish I could go back and do differently.  Through it all, I have been extremely proud to be a part of this organization, both as a volunteer and later as a co-founder and employee at DotNetNuke Corporation.

Once again, my role within DotNetNuke is changing as I hand over my responsibilities on the Engineering team to Rob Chartier and his team.  I am moving away from having day to day involvement in the code or managing the associated engineering teams.  The upcoming 5.4.3 release will likely be my last release as an official member of the engineering group.  While I am capable of functioning in the engineering role, my skills and passion are more closely aligned with those of the Product and Community Teams.  Change is always hard, but I am happy that we’ve been able to grow DotNeNuke Corporation to the point where we have a great team of engineers and support personnel, allowing me to pursue different opportunities within the company.

I am currently in the middle of transitioning to a role on the Product team working closely with Shaun Walker and Israel Martinez in helping to analyze the competitive landscape, and taking input from various stakeholders to define a product roadmap and specific product requirements which will guide the engineering team moving forward.  I will also have the opportunity to do some feature prototyping and proof of concepts so that I can stay somewhat involved in coding which I still love.  Finally, I will also be working closely with Scott Wilhite and Chris Paterra on various community building initiatives, which I will be discussing further later today.

DotNetNuke has always been a community driven product built around the vision and leadership of Shaun.  Even with the formation of DotNetNuke Corporation that has not changed.  This is a great opportunity for me to get back to working more closely with Shaun and Scott and I look forward to this change in my day to day responsibilities.  When Shaun, Scott, Nik and I started this company almost four years ago, we didn’t know how things would ultimately end up, but we knew that like a rollercoaster, there would be ups and downs and sudden course changes.  That has certainly held true and I am excited to see what the future of DotNetNuke holds for me around the next curve.

Joe Brinkman
Wednesday, April 28, 2010 8:16:39 PM

Announcement2 Every year the speaker selection committee for DotNetNuke Connections (formerly known as DotNetNuke OpenForce Connections) has the difficult task of reviewing hundreds of submissions and finding the two dozen sessions that we feel will provide a good mix of topics for the conference.  It is not an easy task as we always face the difficult decision to exclude some great speakers and equally great topics.  We have concluded our selections for this years conference and I am pleased to announce that the following speakers were selected to present at DotNetNuke Connections:

  • Beatriz Oliveira
  • Brandon Haynes
  • Bruce Chapman
  • Cathal Connolly
  • Chad Nash
  • Charles Nurse
  • Cuong Dang
  • Ian Robinson
  • Jenni Merrifield
  • Joe Brinkman
  • Keivan Beigi
  • Kristian Ranstrom
  • Mitchel Sellers
  • Navin Nagiah
  • Nick Christy
  • Rob Chartier
  • Scott Willhite
  • Shaun Walker
  • Will Strohl

For more information on the Conference and the Sessions which were selected, please visit the DotNetNuke Connections section of DotNetNuke.com.

The Mighty Blog
Wednesday, April 28, 2010 4:42:00 PM

In previous years, one thing or another has consistently prevented me from attending the popular DotNetNuke OpenForce events.  Last year, my only chance was to go as a speaker.  That didn’t work out for me.  This year is different though.  I will be seeing you there!  Why?  Easy…  I am very honored to be able to announce that I have been selected to be a speaker at this years event!

I submitted around 8 sessions for consideration to DotNetNuke Connections this year.  Luckily, one really fit in with what they were looking for this year, but it wasn’t the session that I would’ve thought it to be.  I had a few cutting-edge sessions there, and a couple in-depth sessions as well.  However, the one that caught the eyes of the selection committee was, “DotNetNuke 5 Administration: Tips and Tricks.”

I have done this session and sessions like it uncountable times.  However, this will be the first time that I wanted to see what you’d like to hear in such a session.  What are you biggest administration gotchas?  What would you like for me to go over?  If I can fit it in, I will.  Leave a comment to let me know.

DNNDaily.com
Monday, March 29, 2010 1:08:16 PM

So every year in November (for the past 3 years at least!) DotNetNuke has been part of the DevConnections conference in Las Vegas, Nevada. This year (2010) will be no different as DotNetNuke Connections is back (This year’s conference is scheduled for 11/1-11/4/2010) and guess what? I can tell you how to get to go to the conference for free! (travel to/from Las Vegas not included)

How, might you ask? Well if you didn’t know this already, people who are selected to give a presentations at DotNetNuke Connections are also given a free entry into the conference (likely a $1400-1500 value) and 4 nights lodging at the Mandalay Bay Casino and Hotel. If you’ve never stayed at the Mandalay Bay it is an awesome place, and it is also the location where DevConnections is held.

So what’s the catch? Well, you need to be selected to speak at the conference, and in order to do that you need to submit some topics! The Call For Speakers went out a few weeks ago, and is only open for another couple of days!

So here’s what you need to do. Come up with a list of ideas on what you would like to speak on. The topic front is wide open, you can submit as many topics as you like, I would hope that you would choose one related to DotNetNuke in order to increase your chances of being selected! Once you have your list of topics you should come up with descriptions for each of those topics.

You don’t need to go ahead and create the presentations yet, you may as well wait until you find out which topics are selected, then you can create the materials for those. I would suggest coming up with topics/descriptions on something you are interested in presenting on, it will make your life a lot easier when it comes to creating the materials and delivering them at the conference.

In order to maximize the value of things speakers will be selected for at least two sessions, so based on that information, if you only submit one topic you likely won’t get considered! You should submit many topics, more than you actually want to present, to increase your odds of getting selected.

What kind of topics is DotNetNuke Connections looking for? Everything DotNetNuke related! Don’t just think of this conference as one for developers, or one for designers, or one for administrators. DotNetNuke Connections is for everyone! So I encourage you to submit topics about anything relating to DNN, development, design, implementation, to other cool things you can see the platform used for.

What if I’ve never presented at a DotNetNuke Conference in the past? If you’ve never presented before don’t worry, for these conferences there is always the opportunity for new blood! Getting up in front of hundreds of your peers is a great experience.

I have thoroughly enjoyed the opportunity I’ve been given the past few years to present in Vegas and look forward to hopefully being selected to present again this year!

Why should I submit some topics for DotNetNuke Connections? To get in to the conference and four nights hotel for free! To gain the respect and admiration of your DotNetNuke peers. To show your boss that you are an expert in your field. It’s Vegas baby!

I encourage everyone to get your submissions in before March 31, 2010 when the Call For Speakers closes.

See you in Las Vegas!

Learn more about DotNetNuke Connections

Submit Your Sessions for the DotNetNuke Connections Call For Speakers

Mitchel Sellers DotNetNuke Blog
Sunday, March 28, 2010 12:18:00 AM

For those of you that follow me on Twitter, you might have noticed my posting the other day noting that I have submitted my session topics for OpenForce 2010. I thought I'd share with you the topics that I submitted, if you have any ideas for other sessions feel free to post a comment, and I might try to get something proposed for it.

The St. Louis DotNetNuke Blog
Monday, March 08, 2010 5:22:12 PM

 This month we have a special speaker for our monthly St. Louis DotNetNuke User Group meeting.

This months speaker is Brandon Haynes, who I had the pleasure of meeting at last year's DotNetNuke Connections event in Las Vegas. He is an excellent speaker and an active, knowledgeable member of the community, so I hope you will be able to attend.

Of note this month, we're planning to make available a higher quality broadcast of the meeting. We'll be streaming from Brandon's computer (showing his slides,demos etc directly) with a "picture in picture" of Brandon speaking in the corner of the video.

This will be the first attempt at this arrangement for an actual meeting, but we've done some testing and are excited about the results so far. I believe this will bring our online viewers much nearer to a first class experience.

Help show your support for DotNetNuke in St. Louis and around the world by participating online! You'll be able to find our stream on our Bambuser channel and if you check the website the day of the meeting you can find our GoTo Webinar information.

About Brandon:

Brandon Haynes is a member of the DotNetNuke core team, and serves primarily by providing security-related and organizational guidance. He is the chief executive officer at Everysport.net Inc., which delivers enterprise resource planning, web-presence, e-commerce, and integration-related functionality to recreational organizations. With more than twenty years of experience in software development, Brandon’s professional interests are currently focused on the nexus between intellectual property law, technology, and business. He is currently pursuing a graduate degree at Harvard University.

 

 

Joe Brinkman
Monday, March 08, 2010 12:40:45 PM

We-Want-You As I indicated last week, I am pleased to announce the Call for Speakers for the 2010 DotNetNuke Connections conference.  Once again, this years conference will be held at the Mandalay Bay in Las Vegas from November 1st through the 4th with pre and post-conference training available as well. 

We could not do this show without our speakers and we have been fortunate in the past to have had some great session proposals by many well respected speakers.  Some of those speakers have been selected to present their sessions and unfortunately some of them have not been.  Such is the nature of any conference.  As usual we will continue to look for new speakers to bring fresh new topics to the conference.  So if you have submitted sessions in the past then I would encourage you to submit again.  If you have public speaking experience and some great ideas for sessions then I would invite you to submit your sessions as well.

Remember that all speakers will be required to present at least two sessions.  So make sure you submit plenty of session abstracts to improve your odds of getting selected.

Speaker Benefits

Every speaker at the DotNetNuke Connections conference will receive 4 nights of lodging at the Mandalay Bay Casino and Hotel along with free conference registration. Conference registration will allow every attendee full access to the expo hall, and all sessions at the DevConnections and DotNetNuke Connections conferences. (Pre and Post conference training days are not covered in the complimentary registration).

Joe Brinkman
Monday, March 01, 2010 11:02:01 AM

CallForSpeakersBlog

We are once again in the heart of the planning season for the DotNetNuke DevConnections and SDC conferences. It is that time of year when we ask all of you to submit your session abstracts for this years DotNetNuke North American conference.  Later this week we’ll be opening up the official Call for Speakers on DotNetNuke.com, but I wanted to take the opportunity to give speakers a heads up so they could start preparing their abstracts so that they are ready once we open the submission form.  Like the last three years, we are accepting  session submissions in 4 different topic areas:  Development, Design, Administration and Open Source.

Development – These are basically session dealing with code.  Whether it is topic on module development or building custom providers or dissecting the internals of DotNetNuke, anything that would appeal to the software coders is fair game.

Design – This topic area is targeted at the web designers.  This goes beyond just talking about skins.  It also includes topics like SEO, and accessibility and can even include Localization.  These sessions should focus more on the aesthetic and usability aspects of building a DotNetNuke website.

Administration – This topic area is where speakers present sessions that address the needs of the end user.  How do they install DotNetNuke, how do they configure it for a Web Farm or to run in the cloud(this is different that writing a module that uses cloud services), how can they improve site performance.  These sessions really focus on the day to day use and administration of running a DotNetNuke website.  This topic area is also a catchall for any business related topics.

Open Source – This final topic area is designed to show attendees how they can incorporate other Open Source tools into their development, design and administration tasks.  It might be a topic on using Watin for testing or using GIMP and Paint.Net for creating your skin elements.  The idea here is to expand the attendees view of the Open Source community and to bring in fresh and complimentary ideas from other Open Source projects.  These sessions should still be relevant to DotNetNuke in a very meaningful way.  A topic showing all the wonders of using Wordpress for blogging is not appropriate.

Frequently Asked Questions.

Q. What are good topics?

A. Every year I get asked by speakers as to which topics would be good choices.  There is no good answer because we have to balance topics so that we cater to a wide variety of attendees.  We need topics for beginners as well as advanced users.  We need sessions on staples like security, but we also want sessions that cover cutting edge topics like hosting DotNetNuke in the cloud.  At the end of the day, speakers need to ask themselves this question – Would anyone pay a couple thousand dollars to attend your session?  Every user who attends one of the DotNetNuke conferences will spend a couple thousand dollars on lodging, transportation, meals, time off from work and conference registration.  Will your session appeal to a large enough number of attendees and make them feel like they are getting their moneys worth?  Will your session appeal to employers who will ultimately make the decision whether to send their employees or not?

Q. How can I improve my chances to get selected?

A.  Every year we have speakers who submit really good topics.  Unfortunately, they only submit one or two sessions.  In order to keep our costs inline with conference revenue, we require speakers to present multiple sessions.  If you only submit one or two sessions you significantly reduce your chances of getting selected.  If you only submit sessions on one specific topic area, you likewise limit your chances.  The most successful speakers have a range of sessions that they can deliver.  For example, if you are a designer, consider submitting sessions from three or 4 topic areas like SEO, XHTML compliance, CSS frameworks, or skinning basics.  If for some reason the selection committee did not like your SEO topic, then you still have other options that give the committee some flexibility. 

Once you have identified key session topics, spend a little time developing good session abstracts.  The goal is to convince readers that your topic is both relevant and interesting.  You may have the greatest presentation ever created and be an awesome speaker, but the selection committee won’t know that unless you can convey in one or two paragraphs what you plan to talk about and why people will care.  Spend a little time reviewing the session abstracts from  previous conferences.  Speakers will often spend weeks and weeks developing material, so don’t shortcut the process and only spend 5 minutes on the session abstract.  This is the résumé for your presentation.  Make it count.

Q. Who Should Submit?

A.  Every conference relies on the quality of its speakers and as proven over the last three years, the DotNetNuke community has a lot of great speakers. While we anticipate that some core team members will want to speak, we are also interested in having speakers from the broader DotNetNuke community as well.  So please don't hesitate to offer your speaking services.  Even if you didn't get selected in past years, please submit sessions.  Every year we make a concerted effort to bring in fresh speakers who did not speak at the prior year’s conferences.

Q. How do I Submit my Sessions?

A. Instructions for submitting your sessions will be provided when we officially open the call for speakers for the two major conferences.

Q. What do I get if I am selected to speak?

A. In the past we have provided free conference registration and lodging for speakers.  We are still working on the final details for this year’s conferences and will announce the benefits when we officially open the call for speakers.

Q. When and where is the Conference?

A. This years DevConnections conference is being held in Las Vegas, Nevada at the Mandalay Bay Hotel and Casino from November 1st through the 4th.  There will also be pre-conference and post-conference workshops available.

Additional conference details will be posted on the DotNetNuke website as they become available.

R2idnn
Monday, March 01, 2010 9:15:48 AM
The DotNetNuke Design Challenge (Skin Contest) was announced late last year during the North American OpenForce in Las Vegas by co-founder Scott Willhite as a commitment to bring high quality DotNetNuke design to the community for free. The DotNetNuke Experience has been working hard on bringing the contest together for all designers around the world to...
ArrowNuke.com
Friday, February 26, 2010 5:22:00 PM
As we've looked forward at how we market Arrow Consulting & Design in this next year, we come back to the fact that we have gained some of our best customers through the work we've shared in the community. Through the articles and videos on this site, we've had people dig the way we approach problems and reach out to hire us as consultants. Through speaking at Code Camps throughout Florida and in the Open Force track of DevConnections, we've made some really great relationships...
Joe Brinkman
Monday, February 15, 2010 11:43:53 AM

CalendarAt OpenForce ‘09 we made a lot of announcements about changes to the DotNetNuke project.  One change that we announced was a commitment to provide more regular releases.  Over the past several years we have always focused on making releases when the software was “ready”.  This policy worked well when the project was staffed by volunteers as planning for fixed release dates is extremely difficult when you don’t know from week to week who would be able to work on the project, or how much time they would have available.

In software development, there are 3 major levers that you have available to manage a release given a fixed set of resources:  Time, Scope and Quality.  In general, we don’t feel that quality is a factor where you can cut corners.  This only leaves time and scope as levers you can use when preparing a release.  In the past we have worked on a somewhat fixed scope and fixed quality philosophy.  We tried to determine the features and bug fixes that would go into a release and keep testing until we felt that the software met the desired quality.  In 2010, we have shifted this approach and are now working to fixed release dates with a desired quality level and will adjust the scope as needed to ensure that we can meet our time and quality commitments.

2010 has seen a major improvement in how we manage quality and release dates.  DotNetNuke Corp. now has a dedicated QA/Testing team in place which we augment with support from the Core Quality team.  Working together, we are able to define a much larger number of tests scripts and have begun developing a suite of automated tests using WatiN and Gallio/mbUnit.  With each release, our test suite grows, which helps to ensure that we are not re-introducing old bugs back into the product and that we are catching more bugs earlier in the release cycle.  I am really excited that we have people like Jeroen van Menen (the creator and lead developer of WatiN) as part of our Quality team to help us in development of our test suite.  These changes to our testing approach allow us to improve our product quality with less effort than before and ensures greater consistency from release to release.

If you have followed the roadmap  for the past couple of release, you have seen us define the scope for each release at the beginning of the release cycle, work to correct the bugs and implement the features that are in scope, and then work to validate the bugs, features and enhancements are properly implemented.  As we work on the release, we constantly evaluate our code velocity and the remaining items in our scope and make adjustments as necessary to ensure that we can hit our target release date.  With each release we are getting better at understanding the code velocity that can be achieved by each of our developers and will adjust our future scoping efforts to ensure that we don’t need to make as many adjustments to our scope.

Starting with our 5.2 release in November 2009, we began working on ensuring that we were providing predictable monthly releases.  We have tweaked our anticipated release dates to fall around mid-month, every month.  In keeping with our security policy, we are avoiding releases going into a weekend or just prior to a major holiday.  Going forward we have planned for releases to occur in the first half of the week during our scheduled release week.  We believe that these changes will help our customers to better plan for upgrades and will ensure that we can continue to deliver a quality product.  On occassion we may choose to alter a release date so that we may coordinate the release with some other marketing event.  We will minimize these occurrences as much as possible and will announce them as soon as we have a reasonably fixed release date.

So far in 2010 we have had one release that occurred on schedule with another getting ready to go out the door this week.  We feel very comfortable that the changes we have put in place are working and as evidenced by the comments we received on the 5.2.2 release, we can see that people are noticing.  We believe that these changes, along with many others that you may have noticed will continue to allow us to serve our customers with a superior product that we can all be proud of.  I look forward to continuing to work with the development teams to further refine our release processes so that we may avoid some of the mistakes that we have made in the past where release dates slipped or where releases went out without the proper level of testing.

TressleWorks
Saturday, January 23, 2010 9:20:00 PM

At Open Force 2009 this past November, I attended a presentation by Kevin Schreiner (DotNetNuke on Speed and Performance) that spoke in part about the use of Sprites.  What on earth are sprites?  Well I had heard of the term sprites in relation to Computer Graphic programing, but not when it came to Web sites and DotNetNuke in particular.

So what are Sprites in terms of a Web site?  They present a way to reduce traffic between the server and the client.  Specifically, a sprite will contain a collection of images in one file, that can be reference to supply various graphic elements on a page. Since only one image file is required, the site will load faster. Additionally, since one image is used, less memory is used by the browser to render the page.

How is this done?  Well, after I had seen the presentation, I understood the concepts, but had yet to put into practice as I had no real need.  So it took me until now to sit down a try to use sprites.  Read on to see a simple example using sprites.
 

More...
Charles Nurse
Monday, January 11, 2010 12:13:02 AM

Things have changed a lot at DotNetNuke Corporation in the last year.  During most of 2008, I was the only employee that could say they spent the majority of their time writing code.  Since the Series “A” investment we have grown considerably from 6 employees to well over 20.  We now even have a dedicated Engineering office in British Columbia.

A few weeks ago, about the time of the Open Force conference in Vegas, the engineering group was split into two groups – one focused on Maintenance and Support under Joe Brinkman and one focused on new development under our new Director of Engineering – Rob Chartier.  As Senior Architect, I am a part of the group focused on new development. 

Rob has introduced the Scrum development process to our little team, and we have established monthly sprints for the new development work, and while not necessarily part of the Scrum process we have decided to use codenames for each sprint.

Coming up with the codenames was assigned to me – it was my idea, so I guess that’s fair.

So what codenames did I decide to use?  Well for 2010 each of our sprints will have the codename of a city that has held or will be holding an Olympic Games, focusing on Games of the 21st Century.

As we have employees now in 4 countries – Canada, USA, UK and Australia – the first four sprints are code-named as follows.

  1. Vancouver (2010 Winter Games)
  2. Sydney (2000 Summer Games)
  3. London (2012 Summer Games)
  4. Salt Lake (2002 Winter Games)

We start with Vancouver, as Vancouver is about to host the 2010 Winter Olympics, and it is the birth-place of DotNetNuke. 

As we wind down this initial sprint of 2010, I will blogging more about what is part of DotNetNuke – codename Vancouver.

I should emphasize that while we are working in monthly sprints, the plan is to release quarterly, which means that a formal release will be a roll-up of – on average – 3 sprints.

The Mighty Blog
Thursday, January 07, 2010 4:19:00 AM

Joe Brinkman first came to Orlando on DotNetNuke® business a few years ago.  We had a local DNN vendor who sponsored bringing him down to be a speaker at the annual Orlando Code Camp.  Then, he came along with the other DNN Corporation founders to host the OpenForce Connect: Orlando event in 2008.  The last time that we’ve seen Joe visit Florida on DNN business was in June of 2009 for the first annual Day of DotNetNuke® in Tampa.  Well, he’s back!

INETA Sponsored Event Next Tuesday, the Orlando DotNetNuke® Users Group is hosting a meeting with Joe as our featured guest speaker.  How are we pulling this off this time?  Luckily, the ODUG is affiliated with INETA, so we were able to get INETA to foot the bill on this meeting.  Sweet!  We did this once before so far, bringing in DNN Core Team Member, Chris Hammond.  It was fantastic!

So, what is Joe going to talk about?  We all know that is a master (not Jack) of all trades, so you could easily guess pretty much anything.  (Which explains his current title of Technical Fellow at DNN Corp.)  He’s been known to recently talk about jQuery a lot, as well as Action Script in the past.  This time though, we’re in for something different. 

This time around, Joe is breaking XSLT out from his technology toolbox.  Here is the session abstract:

XSLT is a very powerful language for transforming XML and is extremely useful in web applications for generating HTML. Because of the power and flexibility provided by XSLT, it is used by several core and third party modules as a templating language. In this session, we'll look at how you can take advantage of XSLT for your DotNetNuke websites. We'll also show you some "tricks" for further extending XSLT and really turbo-charging your modules.

Whoa!  I don’t know about you, but this excites me!  People do not use XSLT as much as they could, and many people just haven’t tried using it.  This is a great time to come to the ODUG meeting and see what you’re missing.  You’d be surprised at how much you can leverage XSLT in DNN.

Register for the ODUG Meeting on 1/12/2010 @ 7:00 PM

Tampa to Follow

Tampa DotNetNuke User Group The very next night, Joe is scheduled to speak at the newly formed Tampa DotNetNuke®User Group.  There, he will be speaking about the widget framework in DotNetNuke®.  I love what the DNN framework provides to skinners and developers.  He is going to give an overview of them, why they are useful, and how to make your own.  I speak about this myself, so I am doubly-excited about his session.  Yes.  I am going to both meetings.  :)  You should too.  How could you miss so much FREE DNN-goodness?!

Register for the Tampa DNN Meeting on 1/13/2010 @ 7:00 PM

No matter which meeting you attend, lets hope that we don’t see this Joe show up.  :D  Hehehe…

Joe Brinkman at the Day of DotNetNuke® 2009

TechBubble
Monday, December 28, 2009 2:52:28 PM
Some years ago, I had presented a solution for dynamically loading a skin layout based on the user’s browser type. Fast-forward to the present — at the Fall 2009 OpenForce Conference in Amsterdam I had a chance to speak to Armand Datema (@nokiko) on the same topic. The conversation occurred following my session on Advanced [...]
iFinity.com.au - Bruce's Blog
Wednesday, December 02, 2009 10:29:00 PM

When I was doing the rounds at the recent DotNetNuke OpenForce conference, I was surprised at the number of people who wanted to talk to me about the DNN Unit Testing framework I put together a few years back.   I use this on an almost daily basis, but it’s become part of the plumbing for all projects so I don’t really think about it as much as I used to.   I was recently contacted and asked to update it all for DNN 5, and I thought I would spend some time bringing it up to latest standards and generally re-visit the topic again.  It would seem there is a lot of interest in doing Test Driven Development with DNN, so this post will revisit all of that.

Should you be doing Test Driven Development with DotNetNuke?

Test Driven Development (TDD) is a worthy goal of any software project that aspires to good quality and the flexibility to change over time.  If this is true of your DotNetNuke module, then the answer is yes.  All non-trivial iFinity modules have Unit Test projects that are run before releases and after changes to check for breaking changes.  This has caught a number of errors over the years, and prevented them from showing up in an actually released software (sadly the unit test coverage is not 100%, hence some bugs do get out, rotten little things!)

What will you need?

All of the information presented in this post covers DotNetNuke 5.1.2 and later, uses Visual Studio 2008 Team Edition and was done on a Windows 7 machine.  None of this is really necessary : you don’t have to use the in-built unit testing of Visual Studio (nUnit will do) and you can really use any version of Visual Studio you like, as long you’ve hooked up a unit testing framework.  I will suggest, however, that you have loads of fast RAM and a blazing fast processor, or you will soon bore of the constant compiling, running and copying that is part of unit testing.  I’m not going to pretend that the process of setting up unit testing with DNN is straightforward, so any amount of frustration you can remove by throwing hardware at the problem will be justified (see, print that bit out and go ask your boss for a new computer).

Note, if you aren’t using the Visual Studio test tools, then you’ll have to do some refactoring to the code to get it to work.  If you do manage to, say, get it working with nUnit, let me know via the contents and I can make your work available (or write a blog post somewhere and I’ll reference it).

Contents of the Download

Download the code

Zip file containing example test projects

In my previous posts on this topic, I provided some DLLs and general instructions on setting up some procedures.  While this was useful, I decided to go a bit further and actually provide a complete example that you can download and setup, and (hopefully) press the magic ‘go’ button and see some tests running.  This is probably a very lofty goal given the territory, but everything should be there.

Solution Contents

When you download the solution, you’ll see the following projects:

image
  • Solution items : the testSetupScript.cmd file, which prepares the test output for running a mock DNN environment, the ‘testrunconfig’ file, which references items to be deployed with the test, and the .vsmdi file, which contains a list of unit tests in the solution
  • iFinity.Basic.UnitTest.Example project.  This is the unit test project.  It contains a single test class file, as well as the various config files required to make it work with DNN
  • iFinity.DNN.Utilities : This is the Unit Testing framework I built to work with DNN.  It contains the code to create the Mock DNN environment in which to run unit tests
  • iFinity.ExampleModule, iFInity.ExampleModule.Data : these two projects are pretend module DLLs.  This article is all about unit testing Private Assembly modules, and this setup is the standard way to construct a DNN PA module.  Note there is no UI code in these projects, just a class, a module controller and a data provider.  The idea is just to test the parts of the code that use the DNN framework (namely, reading/writing to the database)

 

How to use the download

1) Download the code, extract the zip file, open it up in your Visual Studio (note, you’ll need a version which contains the Unit Testing framework, this won’t work in the ‘free’ editions). 

2) Update the connection string in the app.config file to point at a DNN database that you have lying about somewhere.  If you don’t have a local test DNN database, then create a new instance of DNN just for unit testing purposes.  Actually, that’s not a bad idea anyway.  You can either use a .mdf file in the ‘user instance’ mode, or connect to a sql server database somewhere.  It depends on your objectives with testing and what you’ve got available.

3) Find the 01.00.00.SqlDataProvider file in the ‘iFinity.ExampleModule.Data’ project, under the ‘SqlDataProvider’ directory.  Then run this through the ‘host->sql’ page of the DNN install that belongs to your DNN database you’re going to use for testing.  If you can’t do that, then run the Sql in a normal sql query editor, but remember to find/replace the ‘{objectQualifier}’ and ‘{databaseOwner}’ tokens first.

4) Start the Unit tests with alt-shift-x, or find and click the ‘run tests’ button in Visual Studio (hint, it’s not the green “play” button that starts debugging)

5) Check the test results to see if you got it to work OK.

If you have any custom modules in your DNN install that need configuration changes, you might need to change the app.config file in your test project to match the web.config file of the associated DNN install.  It’s very important to realise that you are running a mock DNN application, and that mock application is using the app.config file of the test project, not the web.config file of the DNN project.

Test Setup

When you hit the magic ‘test it all for me’ button, there’s several things that go on.  In the background, the Unit Testing framework is compiling the versions of your components, and copying them to a special directory, created underneath the ‘TestResults’ directory.  By default this is in the solution folder.  However, this is just a flat directory with a pile of DLL’s in it : not unlike the \bin directory of a standard DNN install.  Our aim here is to make the DNN code run in a test context, and to do that, some parts of the DNN framework have to be re-created. 

This is achieved by the ‘TestSetupScript.cmd’ file.   This file simply creates a couple of bare-bones directories in the OUT directory of the test, to make it look a bit more like a DNN install to the DotNetNuke code that will be running in the test. Note that the portal is hard-coded in this script file, to match the entries in the ‘dnnUnitTest’ section.  This file needs to be hooked up to the ‘TestRunConfig’ file in the solution containing the Test project.  This tells the Test framework to run the file before testing starts. 

If you don’t set up this file, the code in the DNNUnitTest class coughs up a helpful error message, which will look something like this:

Unable to create instance of class iFinity.DNN.Modules.ExampleModule.Test.ExampleRecordInfoDBTest. Error:  System.ArgumentOutOfRangeException: Specified argument was out of the range of valid values.
Parameter name: Supplied HostMapPath [..\iFinity.UnitTesting.Examples\TestResults\Bruce_WOMBAT 2009-12-02 14_35_39\Out\Website\portals\0\] is not valid. Specify a valid path on the target machine (Did you forget to run the testSetupScript.cmd file to create the portals directory??)

This message is supposed to be a slap to the forehead “Hey, wake up and include the TestSetupScript.cmd file!”

There are other files that DotNetNuke needs to run, as well.  These include the DotNetNuke.config file, and the SiteUrls.config file.  Both of these files will be searched for by the DNN framework as it is loaded.  So, these two files are also specified as required items in the .testrunconfig file, in the ‘Deployment’ section.  This ensures that they will be copied to the OUTPUT directory before testing starts.

 

A note on project referencing and Test setup

You’ll see that the UnitTest project contains a reference to the ‘Data’ project : namely the iFinity.ExampleModule.Data project (and assembly).  Strictly speaking the Unit Test project shouldn’t have a reference to this project, the database calls should go through the ModuleController class.  However, referencing the project gives two shortcuts.  The first is that when a module is referenced by the test project, the compiled assembly is automatically copied to the OUT directory for testing.  The second is that it allows us to run cleanup database code directly against the database by utilising the connectionString reference that the SqlDataProvider object contains.  If this all makes you feel uncomfortable in a ‘impure architecture’ way, feel free to concoct your own solution.  But I’m here to tell you that getting the assembly manually copied is inelegant as well, and opening the app.config file to look for the connection string is ‘wordy’ as well.

How it Works

This framework works by creating a Mock (or fake) ASP.NET runtime context to run your unit tests within.  Tests normally run in the Visual Studio Test context – and if you do this, you can’t access server objects like HttpContext : which are vital for a web-based application like DotNetNuke.

This fits together because the TestClass inherits from the DNNUnitTest class contained within the ‘iFinity.DNN.Utilities’ project.  When the TestClass is instantiated to run the tests contained within, the constructor code in the DNNUnitTest class kicks off the type of initialisation normally run within the DNN startup code.  It also constructs a mock HttpContext object, and stores some of the key DNN global objects (like PortalSettings and HostSettings) in the HttpContext items.   It also loads some of the Providers used by DNN for key tasks such as database access, data caching and others.

Thus when your code runs and makes calls to items within the DotNetNuke namespace, the actual objects are there to take the calls and return the results.  This allows you to create unit tests to run pieces of code within your module that would otherwise fail because there was no DotNetNuke object there to receive and process them. 

Issues to Understand

Windows Vista/7/2008 Security

If you’re like me and have upgraded to the latest Windows offerings, you’ll soon run aground on the fact that Unit Testing is considered a highly risky business by the born-again security converts on the Windows team.  You may get an error like this one:

Test Run deployment issue: The location of the file or directory 'D:\DotNetNuke\Custom\Common\iFinity.UnitTesting.Examples\dnn510\DotNetNuke.dll' is not trusted.

This is because the DLL’s weren’t compiled on the machine you’re testing on, so you’re guilty of running code that someone else wrote.

The generally accepted solution is to ‘unblock’ the file(s) that cause the problem.  You should do this in the location they are referenced from rather than the location noted in the error message.  This is because when you debug and test, the new copies will be taken from the reference location and copied into the destination location.  To unblock the file, right click on the offending file, select ‘Properties’ and go to the ‘General’ tab.  At the bottom you’ll see a message looking something like this:

image

Click ‘unblock’ at the bottom, and you should be OK.  You might have to restart Visual Studio to fix this problem, so I’d suggest unblocking all of the referenced files at once, then doing a restart of VS – just to be sure.  A big thanks to whomever at Microsoft decided this was the way to go. 

If that doesn’t solve the problem for you, take a look at this StackOverflow topic, and see if you can glean some help.  You might also try recompiling the DNN solution on your local computer, and using the output from that.  This also has the benefit of giving up some up-to-date .pdb files to help with any debugging.

 

Changes for DNN 5 : the ‘Cannot register or retrieve components until ComponentFactory.Container is set’ error

As previously mentioned, this blog post came about as a result of people asking me about a DNN 5 compatible version of this code.  The big change comes about through the use of the ‘ComponentFactory’ component used to handle the loading of providers and components in DNN 5.  This completely changes the way that 4.x DNN used to load components on startup.

I was helped immensely by Charles Nurse, who has an excellent series on creating testable modules on his blog : http://www.charlesnurse.com/post/Creating-Testable-Modules-Part-1.aspx

Interestingly enough, he mainly advocates a completely different approach than what I do (in terms of the mock objects and environment, not the methodology) which is definitely worth reading and understanding.  One of the largest differences is that he is discussing the MVP (Model View Presenter) pattern, whereas this article discusses more the traditional pattern of DNN module development.

However, the key item that I took away from this blog series was the changes in the way that DNN 5 loads up providers and other components.  This is actually all done in the ‘global.asax.vb’ file (which runs at application start).  This is one of the reasons many people had DNN 5 upgrade problems (and encountered the ‘componentFactory.Container’ error) – some modules and developers replace the global.asax.vb file with one of their own making – or fail to copy in the new one.  This removes the important instantiation of the Component Factory Container, and results in lots of bad errors all over the place.  Don’t modify the core code!

The end result for the iFinity.DNN.Utilities is that the startup code had to change.  This was done by copying the relevant startup code from the global.asax.vb file, which creates the container and loads the components for the various types of providers supported in DNN.  However, not all the various components are loaded : some are commented out in the ‘InstallComponents’ list.  These can be re-installed, but you’ll also need to reference the matching DLL from the DotNetNuke \bin directory.  For example, if you enable the ‘friendlyUrl’ provider, you’ll need to copy in and reference the matching Friendly Url Provider, as configured in your app.config ‘friendlyUrl’ section.

However, as an upshot of this, the previous problems I had encountered with the BuildManager.GetType() calls in DNN 4.8.0 have disappeared.  So this code has been removed from the DNNUnitTest class, and replaced with the aforementioned DNN 5 method.

Visual Studio 2008 Web Context / Host Adapter

Within Visual Studio 2008 Unit Testing, there is a new feature for running Unit Tests in the context of an ASP.NET website.  This solution doesn’t take advantage of this : primarily because it’s an evolution of my work done in Visual Studio 2005, which didn’t have this feature in the Unit Testing.   Instead, this creates a mock HttpContext to host the DNN application.  The end result is similar, although I suspect the Visual Studio version would probably be superior.  If time and inclination permits, I may investigate this in the future and modify the DNNUnitTest code to match.

 

Recommendations for Testing Module Code

Hopefully you have managed to setup the example test project and have got the code running.  You can step through the individual tests and investigate how it all works.  About now is the time you should start thinking about how to adapt this to your projects.  If you develop your modules in a similar way, then you can just remove the ‘iFinity.Example’ module, and replace with your own project.  Or, more realistically, either include the iFinity.DNN.Utilities module in with your existing project solution, or just build and reference the DLL once you have it working.  You can then add a test project to your solution, copy across the various components of the example test, and start writing your tests.

In the example module tests, you’ll see there is a test for each property set/get.  You may think this is overkill, but you’d be surprised how many times this will catch a small but lethal bug from a mistyped property accessor.  Also, in this example module, you’ll see that a flag is kept over whether the data in the object has changed since the last check.  The logic determines if this code is running correctly.

You’ll also see that the module CRUD code is tested against the database.  This is an obvious choice, but don’t forget all the other bits and pieces your module may do, such as reviewing saving/retrieving module settings, generating Urls, creating emails : you should test as much as you can.

Mitchel Sellers DotNetNuke Blog
Wednesday, December 02, 2009 9:48:00 AM

After talking with a number of clients since last week, I thought it would be worthwhile to make a post here with a formal warning regarding upgrades to DotNetNuke 5.2.  As announced at OpenForce US, DotNetNuke 5.2 contains the Telerik Controls for ASP.NET, which is a very good thing for DotNetNuke as a whole, however, it can cause massive problems for individuals that are already using the Telerik Controls as a site upgrade can end up rendering portions, or the entire site unusable, until DLL versions are restored.  In this post I will give a bit of information regarding the scenarios that I have encountered and some guidance on how to protect yourself from upgrade issues.

AppTheory DotNetNuke Blog
Friday, November 20, 2009 3:40:17 PM

As most of you who read this know, AppTheory had a booth at OpenForce ‘09 last week in Las Vegas where we handed out flyers and discussed DotNetNuke with anyone who stopped by and wanted to chat. Surprisingly, there were many people who had tons of questions. I say surprisingly because at first I thought they just wanted to take a break and sit down on our couches at our booth but after they sat down we started some pretty good conversations. Besides that I also got to accept our Community Choice Award for the www.sakesocial.com web site we worked on as it won the e-commerce category. Although I was not present for the announcement, it was announced that I was recognized as part of the new PEG program which you can read about here. So, my thanks to those who voted for AppTheory for the Community Choice Award as well as my thanks to those who voted for me as part of the PEG program.

What I found most interesting about this trip wasn’t the awards, announcements or the chatting at the booth, it was what I saw overall: Non-Developers interested in DotNetNuke. When I go to a conference like this I expect to see two groups of people: Vendors and Developers. At this years event I saw representatives of both groups but I also saw non-developers. In my opinion this is great, not only is it the people who really use DotNetNuke discussing how they use it (and thus providing us with more use cases) but it also allows this group direct access to people like Shaun Walker or Navin Nagiah. Being involved in the core team for all these years I take it for granted that Shaun and other Board/Team members are always available for discussion but in reality I know they can’t be this easily available for all 750k of you!

In closing, I recommend to all of you developers and end users who are truly interested in DotNetNuke, make the trip next year if possible. You will get direct access to Shaun, Navin and a good portion of the DotNetNuke team who are all there to answer any and all questions (unless it is something top secret). You also get direct access to all the system integrators and trainers as well. On a side note, I heard it will be a little earlier in November next year so start making plans now!

AppTheory DotNetNuke Blog
Wednesday, November 18, 2009 11:35:16 AM
AppTheory won the DotNetNuke Open Force 2009 Community Choice Award for Best Ecommerce Site!
Engage Software
Tuesday, November 17, 2009 11:23:00 PM

This was my second time in a row to have the honor of presenting my knowledge about the most widely adopted .NET framework called DotNetNuke. One of the most appealing reasons for me to devote my time to help build a better open-source framework like DotNetNuke is the wonderful community. I had to admit, I have never involved in using too many frameworks out there closely so I can't tell how great their communities are. But one thing I can assure you that DotNetNuke has a very intimate community that pretty much everyone knows each other and have used each other products.

Paul Scarlett is one of the regulars in the community I ran into this year and he commented "I came to this conference because of the people". Paul is not the only one who has this kind of feeling. I am one of them as well. I came to the conference not just to share my knowledge to the community, but to meet and greet people I've worked with through the phone, e-mail, messenger... and any other mean of communication you can think of but I've never gotten to meet them in person. And this conference is just a perfect opportunity to finally interact in person.

More...
Mitchel Sellers DotNetNuke Blog
Sunday, November 15, 2009 4:16:00 AM

 Well, it has been a very busy week, but we can now record another OpenForce event in the books.  I'm sitting here still in Las Vegas going over various notes regarding various announcements that have occurred through the week and though it would be good to make a blog post with a few "highlights" as I see them from the week.  So, without future delay, here are my favorite highlights from the week, in no particular order!

RSS URL

OpenForce Photos

See more OpenForce photos here

Copyright (c) 2010 DotNetNuke Blogs On DNN, For DNN

DotNetNuke and DNN are trademarks of DotNetNuke Corporation