Cloud Development for Community Projects

How CloudShare has enabled me to contribute to SharePoint community projects

Until recently if you wanted to contribute to an open source or community-based software project in your spare / volunteer time it often meant having to build a full-scale software development environment on your home / personal computer, including substantial CPU cores / RAM / disk hardware and numerous software licenses, with a potential cost of thousands of dollars. Fortunately the recent rapid growth in cloud-based IaaS / PaaS offerings such as CloudShare, Microsoft Azure and Amazon Web Services to name but a few, has dramatically changed this situation. Now the software hobbyist or software engineering professional volunteering their time can contribute to nearly any project with no more equipment than a modern web browser.

These cloud-based IaaS / PaaS offerings are a huge boon especially for community projects targeting enterprise software systems such as Microsoft SharePoint Server and Microsoft Dynamics CRM. Both SharePoint Server 2013 and the upcoming 2016 versions have hardware requirements that generally exceeded the specs of most home office computer equipment, for example a single server farm with all services requires 24GB RAM. Furthermore, when your focus is on rapidly enhancing a community project then the time and effort to install, configure, tune, and patch server software such as the operating system, database server, and SharePoint Server is an overhead cost that does not directly advance the project.

Why CloudShare?

Two important consideration when I’m volunteering my spare time on an open source or community project are:

  • Ready availability of a pre-configured virtual machine suited to the community project’s technology stack – so I don’t have to spend hours or days building up a standard development environment before I can even begin making my volunteer contribution
  • Rapid provisioning and resumption of the virtual machine – which allows me to eke out useful contributions in spare moments of 20-30 minutes at a time

For my cloud-based custom software development platform I chose the CloudShare Platform-as-a-Service (PaaS) product because it offers the best fit for me as an independent software developer.

A CloudShare environment comes with these essential features which satisfy my need for pre-configured virtual machines:

  • Extensive gallery of fully pre-built and pre-configured virtual machines
  • Gallery includes SharePoint Server 2013 and 2010 farms in various single-server and multi-server configurations
  • Commonly used SharePoint service applications are pre-configured, eg Managed Metadata, Search, and User Profile
  • Commonly used SharePoint web applications are pre-configured, eg Publishing Portal, My Sites, and Team Site

With CloudShare it takes under 5 minutes to provision a brand new fully functional SharePoint Server 2013 farm, and under 1 minute to restore it from hibernation. And it is completely self-serve, which fits in well with my erratic volunteer schedule.

The CloudShare platform also includes these additional features:

  • Full local admin access for additional server configuration and software installation
  • “Environment” container for sets of virtual machines used for managing hardware resources and other global resources
  • On demand snapshot of environment to baseline the configuration, eg for repeatability of functional and deployment testing
  • Easy to dispose of a virtual machine and re-provision a new one
  • External URLs for browser / HTTP access to virtual machine SharePoint site, eg for demos of the open source / community project
  • Easy to share full local admin access to virtual machine or an independent private copy with a collaborator
  • Low cost pay-as-you-go entry point to allow try-before-you-buy which is easily upgraded to very cost competitive annual subscription model

CloudShare for my Community Projects

Over the past several years I’ve used the CloudShare platform to present at several conferences and user group meeting, and to support and contribute to several SharePoint and web community projects in my spare / volunteer time.

Using a CloudShare environment I have presented live interactive demos of various SharePoint capabilities, configuration procedures, and custom development techniques at various conferences and user groups, including:

  • SharePoint Summit Toronto – Introduction to Social with SharePoint 2013
    Live demo of My Sites social features and user profiles using a CloudShare SharePoint 2013 virtual machine
  • SharePoint Saturday Ottawa – Migrating to SharePoint 2013 – Business and Technical Perspective
    Live demo of content database migration, and content database and site collection health checks using a CloudShare SharePoint 2013 virtual machine
  • DevTeach private conferences for House of Commons Canada – Transform SharePoint Forms with HTML, CSS and JavaScript
    Live demo of various techniques to enhance List forms using a CloudShare SharePoint 2013 virtual machine
  • Microsoft Federal SharePoint User Group (Ottawa) – Cloud-Based Development for SharePoint using CloudShare
    Live demo of provisioning and using a CloudShare SharePoint 2010 virtual machine to perform SharePoint custom .NET development
  • SharePoint Ottawa – Survival Guide to SharePoint 2013 Migration
  • Ottawa IT Community – Cloud-Based Dev–Test environments for .NET & SharePoint using CloudShare

Using a CloudShare environment I have also contributed original custom code, patches, defect reports, and forum answers to various open source projects and custom development answer websites, including:

  • Gary Lapointe’s PowerShell-SPCmdlets
    Validated and troubleshot source code download; identified several code defects and code components missing from download package; proposed code fixes; all using a CloudShare SharePoint 2013 virtual machine
  • Microsoft-inspired SharePoint Guidance Library 2010 Demo
    Built a fully functional demo solution package (WSP) for a custom SharePoint logger based on the Microsoft guidance library; using a CloudShare SharePoint 2010 virtual machine
  • Ron Valstar’s TinySort
  • Dev4Side’s SharePoint 2010 Filtered Lookup Field
    Analyzed and troubleshot an issue in the custom field definition; using a CloudShare SharePoint 2010 virtual machine
  • Stack Overflow, SharePoint Stack Exchange and other Stack Exchange sites
    Analyzed, answered, and commented on questions; using CloudShare SharePoint 2013 and 2010 virtual machines
  • and others

Now let’s take a closer look at how you prepare and share a CloudShare environment and SharePoint virtual machine ready for custom .NET, App-model, and pure HTML5 / JavaScript software development for an open source / community project.

Prepare a CloudShare Environment

CloudShare offers over 90 pre-built / pre-configured virtual machine templates in a gallery making it easy to pick from amongst several variations:

image

These VM templates are clustered around two main technology stacks:

  • Microsoft Windows
  • Linux

With numerous variations of enterprise software, including on the Microsoft stack:

And on the Linux stack:

  • CentOS – variant of Red Hat Enterprise Linux distribution; in combination with MySQL, Ruby on Rails, MongoDB, NodeJS
  • Xubuntu – variant of Canonical Ubuntu Linux distribution
  • Ubuntu – in various combinations with Apache, PostgreSQL, Docker

In my case I’m working primarily with Microsoft SharePoint so I created two virtual machines in my CloudShare environment:

  • Microsoft SharePoint 2010 Server
  • Microsoft SharePoint 2013 Server

image

The SharePoint 2013 farm virtual machine is a single server farm with the following service applications and web applications pre-configured which makes the virtual machine immediately ready for custom development for your open source or community project:

  • Application Discovery and Load Balancer service application
  • Managed Metadata service application
  • Search service application
  • State service application
  • Usage and Health Data Collection service application
  • User Profile service application
  • Publishing Portal web application
  • My Sites web application
  • Team Site web application

Share an Environment

CloudShare makes it easy to collaborate with a colleague on an open source or community project in a more direct / hands-on way than the typical code and documentation sharing via a cloud repository such as GitHub or CodePlex. With CloudShare you and your colleague can directly access the same or an identical private copy of your CloudShare virtual machine environment to make code changes, run tests or write documentation:

image

  • Assign a contributor grants direct access to your CloudShare environment by your contributor, where they can log into the same virtual machines and run or make changes to the same copy of the open source or community project
  • Assign a copy grants access to an identical private copy of your CloudShare environment by your contributor,  where they can log into a fully isolated virtual machines and run or make changes to their own private copy of the open source or community project

When you assign a contributor to your environment your colleague will receive an email similar to this one, inviting them to access your CloudShare environment.

image

When your colleague (fictitious name Jane) accesses the shared CloudShare environment, they see the following welcome page:

image

From the details in the environment’s Invited by and Expiration fields they can easily determine that this is the identical environment to your own as it will expire at the same time. Your colleague can log into the environment’s virtual machines to view or collaborate on and edit the open source or community project, and they can also modify the CloudShare environment itself or the virtual machine hardware resources.

image

On the other hand, when you assign a copy of your environment to a colleague they receive an identical private copy of your CloudShare environment. When they access their copy they see the following welcome page:

image

From the details in the environment’s Invited by and Expiration fields they can easily determine that this is a time limited copy of your environment that will expire after a short time. Your colleague can log into the environment’s virtual machines to view or collaborate on and edit the open source or community project, but they cannot immediately modify the CloudShare environment itself or the virtual machine hardware resources until they take ownership of this private copy of your environment.

image

In order to take ownership of this private copy of your environment your collaborator must purchase their own account licence:

image

Once they have done that, they will have full control to modify the CloudShare environment or virtual machine hardware resources as they require while working on the open source or community project.

Wrap Up

Thanks to CloudShare my idea of the home office has completely changed. Now my home office is in the cloud and I can resume and access it or even re-provision it whenever I need, not just when I’m physically at home. This has enabled me to contribute to numerous open source or community software projects in my spare volunteer time.

I highly recommend trying out CloudShare and seeing for yourself how easy it is to use the platform. To get started, create your account in CloudShare. To learn about pricing options, visit the pricing page.

One thought on “Cloud Development for Community Projects

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s