Posted by: scottb1978 | May 2, 2008

SharpForge now supports over 20 languages

I am pleased to announce that SharpForge 0.5.14b is available for download. Some of the things to look out for in this release include:

  • a screen shot submission tool with lightbox display
  • over 20 languages are now supported
  • link a subversion commit to a workitem
  • new web service apis for source code, projects, portals and work items
  • powerful user administration
  • support for google analytics
  • code colourization when browsing the Subversion repository
  • change the logo and header colours in the web.config
  • rounded edges and theme improvements
  • and loads more …..

For more information and to download it head on over to the release page.

Posted by: scottb1978 | April 21, 2008

new open source projects wanted

You can use sharpforge.org to run your own open source projects, join other projects, download their software, request support and provide feedback. There is no requirement for the project to be based on Microsoft technologies. It must however be released under a valid open source license or be freeware.

We are now taking new open source projects. Create your project now while there are still spaces available.

To be approved, a project must meet the following requirements within 14 days of creation otherwise the project will be deleted to free up resources for other projects.

  • The project home page must indicate what open source license it is released under
  • You must commit source code to the repository
  • You must create at least one release, this release doesn’t have to be production, it can be alpha or beta.
Posted by: scottb1978 | April 4, 2008

SharpForge in your language, in 5 minutes

In order to make SharpForge available in many different languages we knew that we needed to break down some barriers. The translation text is spread through out various resource text files. They aren’t easy for translators to edit or for us to maintain. But now the resource files are all gone……the database ate them!

UPDATE: I can’t really believe it but SharpForge has now been translated to 24 languages Including Vietnamese, Danish, Norwegian, Finnish, Greek, French, Russian, Swedish, Arabic, Romanian, Spanish, Tamil, Portuguese, Korean, Dutch, German, Czech, Turkish, Japanese, Italian, Simplified Chinese, Hindi, Slovak and Polish. These translations are already live on sharpforge.org and will go live with the 0.5.14 release. Thanks heaps to all the translators for your hard work :)

To improve the whole translation process our aim was to make it as easy as possible for anyone to do translations as well as making it easier for us to manage them. The solution came in the form of a contribution from a well known .net developer, Rick Strahl. Rick kindly donated his powerful database driven resource provider to the project and things have improved dramatically.

 resource localization uiThe resource provider comes with a web front end which gives translators the ability to update the content for any given language.

With the click of a button, these translations can be made available to end users while you are translating!! Translators will have access to the localization administration page which has a form to update the text displayed in each language. For an example of what the ui looks like check out the image to the right. 

 How to become a translator 

To become a translator email me, post a message to the forums or reply to this post. It would only take a couple of hours and would provide a huge benefit to other people from your community.

This feature will be released with the 0.5.14 release. If you are running your own copy of SharpForge then you will be able to configure which role can access the translation page. Translations will be stored in the sf_Resources table of your database so you can easily share translations made on your own SharpForge server with the community.

So what are you waiting for, get in contact and start translating SharpForge into Swahili, Hiligaynon or any other language right now :)

Posted by: scottb1978 | January 21, 2008

SharpForge hosting now in public beta

Last year we launched the SharpForge hosting private beta. We’ve had some great feedback, made some improvements and now we’re ready go public. Hang on a minute, not a public listing, a public beta. SharpForge hosting is no longer invite only. Anyone can sign-up, create their own portal and start using the service right now. It takes 2 minutes and you can start immediately. The user documentation can be found at the project wiki.

 This service is most suitable for organisations:

  1. who are comfortable with having their assets managed by a third party
  2. who have limited IT expertise
  3. who would like to evaluate SharpForge

This beta trial phase will go for 1 month where you can use the service for free. After that we will start charging based on what your usage is. If you are running a single project and using less than 5Mb then you won’t need to pay at all!

If you would like to run SharpForge on your own infrastructure you can still download it from the SharpForge project home page.

About SharpForge

SharpForge ( http://sharpforge.org/p/SharpForge.aspx ) is an open source, c#, dot net 2.0, project management web application. It features…..

  • multiple portals
    Run multiple portals off the same database/web application. Each portal can remain independent or they can share users
  • multiple projects
    Run multiple projects at the same time. Users can create their own projects and manage their own user’s and permissions.
  • role based access
    Group your stakeholders into groups and define access for each group.  
  • subversion administration
    Creating a project creates a new svn repository. Updating the roles and role members via the application modifies the svn acl’s.
  • work item tracking
    Simple but powerful work tracking. Users can vote for bugs or features they want actioned first.
  • project forums
    Stay in touch with your user and developer community. Reduce barriers to communication between all stakeholders.
  • release management
    Distribute releases to your users. WSIWYG release notes and multiple file upload. An RSS feed for all project releases is available from the home page.
  • subversion wiki
    No need to learn any wiki syntax. Html content is loaded directly out of the project’s Subversion repository to the browser. Any project member with commit access to the wiki directory can update the content quickly and easily. Only users with permissions to view the wiki directory can view the content.
  • subversion browsing 
    Browse the Subversion repository online by directory and by revision.
  • news feed aggregation
    Releases are made available through RSS feeds.
  • business friendly open source license
    The new BSD license means your able to use it within a business context without having to pay or contribute all your work back to the community.
  • no subversion, svnserve or apache
    Subversion is not a requirement, however if you use it you have the option of using either svnserve or Apache as the server.

  

Posted by: scottb1978 | January 9, 2008

Add your own menu item to the project menu

One of the big requests when using SharpForge is being able to insert your own menu items in to the portal and project menus. To demonstrate how to do this we will create a link to the popular bookmarking site http://del.icio.us to display all of the bookmarks tagged with each project’s code. 

Its very easy to do with the following steps:

  • 1. Create a BookmarksSiteMapExt ( just like SFWebChatSiteMapExt )
  • 2. Implement BuildingProjectSiteMap
   if (context.Project == null)     
      return;
string url = "http://del.icio.us/tag/" + context.Project.ProjectCode; 

  SiteMapNode cc = dynamicSiteMap.FindSiteMapNode(url); 

   if (cc == null) {
        cc = dynamicSiteMap.Stack("Bookmarks", url, projectRootNode);
   }
  • 3. Modify the web.config
    Add the extension to the SiteMap configuration section
    Append the extension name to the useExtensions list
  <SiteMap defaultProvider="SFSiteMap" useExtensions="..., Bookmarks">
  ....
  <extensions>
      <add name="Bookmarks"  
type="SharpForge...BookmarksSiteMapExt, SharpForge.Web"
description="A link to bookmarks tagged with the projectcode"
        enabled="True" />       

   ....
  </extensions>

Note: The order the extensions appear in “useExtensions” is the order they will appear in the project menu. So in this example Bookmarks will be at the end.

The example demonstrates how to add additional items into the project menu. This technique also works for the portal menu which is displayed in the top left of the page.

Posted by: scottb1978 | December 19, 2007

User Documentation Updates

Good documentation is essential to understanding an application and no application is complete without it. Realistically though, for most projects adequate documentation is more achievable. 

The recently updated SharpForge user documentation now describes common tasks with screen-shots for end users of the web application. This includes project users, project administrators and portal administrators. It can be found any time from the project wiki. The documentation is broken down into the major components.

  • Projects – What is a project and what does it do for me
  • Release Management – Communicate and distribute software releases to users
  • Wiki - Simple html content management system for project documentation. ( requires Subversion )
  • Work Items – tracks work required to perform tasks, by who, when, how etc. Users can vote to help prioritize work
  • Forums – communication via thread messages
  • Web Chat - simple online chat

Not quite finished are….

  • Portals - SharpForge’s design allows multiple websites to co-exist and even share users.
  • Subversion - How do SharpForge and Subversion talk

 Any feedback good, bad or ugly is all welcomed.

Posted by: scottb1978 | November 28, 2007

SharpForge Hosting Beta Launched

Earlier this week we launched the SharpForge hosting beta. This service is most suitable for organisations:

  1. who are comfortable with having their assets managed by a third party
  2. who have limited IT expertise
  3. who would like to evaluate SharpForge

The beta trial phase will go for 1-2 months where you can use the service for free. After that we will start charging based on what your usage is.

If you would like to run SharpForge on your own infrastructure you can still download it from the SharpForge project home page.

Posted by: scottb1978 | November 9, 2007

Track projects with Google Analytics

A quick win that will be introduced with 0.5.14 is #121 support for Google Analytics. This feature allows each project owner to capture analytics data for their own project or if you want for the entire portal or server.

This will introduce a new property to the LookAndFeel configuration

  <LookAndFeel defaultProvider="SFLookAndFeel" useExtensions="SubversionSourceCode, SFWorkItems">
    <providers>
      <add name="SFLookAndFeel"
            type="SharpForge.Web.Provider.LookAndFeel.SFLookAndFeel.SFLookAndFeel, SharpForge.Web"
            description="SharpForge look and feel "  googleAnalyticsAccount="UA-XXXXXXX-Y"
            enabled="True" masterPageFile="~/MasterPages/simple.master" theme="simple_whitelabel" requireSSL="False"/>

If this is property is specified, the javascript required is injected into the header.

Convenient, yes but not really worth blogging about, right. Well it’s an easy win but it highlights again the power of the hierarchical configuration. Individual portal and project owners to be able to customize the application to their own needs.

This ability is often referred to as multitenancy and is one of the main design goals of SharpForge. It’s baked into the architecture so expect to see a lot more references to it.

Posted by: scottb1978 | November 6, 2007

Whitelabel SharpForge

SharpForge will soon be available as a paid hosted service and one of the key features which is a must have for business users is being able to customize the look and feel.

As of 0.5.14 web designers will be able to create special style sheet files in the theme directory which will allow the use of variable in css. The values for these variables can be set at runtime through the configuration.

How does it work?

When the page is requested the application checks what theme is being used. It then loads any files in the directory that have the extension .css.inline. This file has normal css syntax but with special variables that have the format ${name} as you can see here.

For example:

        a:link, a:visited {
	        color:$link_color;
	} 

        a:hover {
            color:#fff;
	    background-color:$link_color;
	}

It then loads the cssVariables from the Look and Feel component’s configuration which look something like this:

     <cssVariables>
      <add name="$header_background_color" value="#036" />
      <add name="$header_link_color" value="#fff" />
      <add name="$portal_name_color" value="#fc0" />
      <add name="$current_tab_text_color" value="#090" />
      <add name="$tab_background_color" value="#1A4F85" />
      <add name="$tab_text_color" value="#fff" />
      <add name="$tab_hover_background_color" value="#1D64AD" />
      <add name="$tab_hover_text_color" value="#fff" />
      <add name="$table_header_color" value="#efefde" />
      <add name="$link_color" value="#03c" />
    </cssVariables>

It then replaces all of the $variable_name’s with the corresponding value’s. The result is then injected into the pages response head tag as inline css. So the example above would result in….

	 a:link, a:visited {
	    color:#03c;
	 } 

         a:hover {
            color:#fff;
	    background-color:$#03c;
	 }

As you can see this technique allows the designer to pick and choose which variables they want to be dynamic. All they need to do is to create a file called xxxx.css.inline with the variables you want to use. The administrator, portal or project owner can choose exactly which blend of colors or styles they want.

Since this feature also uses the hierarchical configuration it means that you can configure it for the entire application and then override it per portal or per project.

Keep an eye out for it in the next release :)

Posted by: scottb1978 | October 31, 2007

Managing web.config changes during upgrades

While helping out a user upgrade to 0.5.13b I noticed one of their main difficulties while upgrading was not having a good process for managing the changes to the web.config. He had been following the upgrade process but was finding it difficult to apply all the correct configuration settings.

Here’s the process I use to make upgrading the application as painless as possible. In this example we are upgrading 0.5.11 to 0.5.13.

The Steps

  1. Run the 0.5.13 msi and specify the web root to install to.
    This copies the web application files to the directory and then launches the setup wizard.
  2. Close the Setup Wizard, you don’t need to use it
  3. Make a copy of the 0.5.13 web.config as web.config.original
  4. Copy your production 0.5.11 web.config to the 0.5.13 directory as web.config.production
  5. Use the diff tool provided with tortoise svn to compare the 0.5.13 web.config and the 0.5.11 web.config.production
    If you don’t have TortoiseSvn installed on the server then its quite easy to copy the files to your local machine and do it from there.
  6. Go through the 0.5.13 web.config and apply your specific configuration settings
    The obvious ones are appSettings, email settings, your Adsense id etc.. However it’s not a bad idea to keep a check list of the settings you need to verify so that you don’t miss anything. Even better is to do a diff between the  released web.config as it was before all your changes were made for your production environment. This will display a clear set of differences that will need to be applied to the new configuration file. You can browse to and download the web.config files for each release here.
  7. Now your ready to upgrade the database scripts and change the LocalPaths in IIS

Using a configuration management process such as this will mean that your upgrades will proceed much more smoothly and ensure that your production environment isn’t down for any longer than it needs to be.

Older Posts »

Categories