Ecosystem

The Workarea ecosystem is composed of the Workarea platform, all of its plugins and supporting tools, and the community that supports these software packages. The platform and a minority of its plugins are maintained by the WebLinc product team. The rest of the Workarea community—WebLinc's partner companies and in-house systems integration teams—maintain the majority of Workarea's plugins and also contribute directly to the platform.

In this guide we look at how software is distributed within the Workarea ecosystem and how to access source code and contribute.

RubyGems

Workarea software is distributed via RubyGems, the package management system for Ruby software that ships with the Ruby standard library. The RubyGems system is composed of software packages, a client to fetch and install them, and servers to host them.

Gems are the software packages used by RubyGems. Each gem is an archive (think ZIP or tar) with a .gem file extension and metadata stored in a .gemspec file. Among other things, the metadata in the gemspec specifies the gem's runtime dependencies.

The gem command line application, which installs with Ruby, is the RubyGems client software that can fetch and install gems, including their dependencies as defined by each gem. By default, gems are fetched from RubyGems.org, the public and open source gem repository. WebLinc hosts a private gems server, gems.weblinc.com, to distribute their proprietary software. Access to this server requires authentication. Your company likely has shared credentials to gain access to this server.

Browsing & Searching for Gems

RubyGems.org and gems.weblinc.com both provide a web interface for browsing gems. The gem command can also be used to search both repositories from the command line. To do so, you must add gems.weblinc.com as a source in your gem configuration. See the development environment guides for examples of this. Once configured, the following command will list all gems (on both servers) matching the string 'weblinc':

gem search workarea

If you're a patient person, include the -a option to include all versions of all matching gems: gem search -a workarea

Run gem help commands to see other commands available for the RubyGems client.

Bundler

Another tool, Bundler, solves the additional problem of managing dependencies per-application. Bundler locks the dependencies of an application to specific versions so everyone on the team is using the exact same version of each gem.

Applications specify their dependencies in the application's Gemfile (not in a .gemspec) and then use bundle install to create a Gemfile.lock or bundle update to update the Gemfile.lock. The Gemfile.lock file defines the exact versions your app is using. Commit this file into your application's source code repository to ensure everyone on your team is using the same dependencies.

Specifying Gem Sources

In your application's Gemfile, RubyGems.org is the primary gem source, so gems that should be fetched from gems.weblinc.com are wrapped in a source block, as shown in the simplified example below.

source 'https://rubygems.org'

gem 'rails'
gem 'sass-rails'

source 'https://gems.weblinc.com' do
  gem 'workarea'
  gem 'workarea-clothing'
end

Notice in the example above that authentication credentials for gems.weblinc.com do not appear in the Gemfile. These credentials are considered secrets and should not be committed into your source code repository. Instead, configure Bundler as shown in the development environment guides.

Viewing Source

Bundler also makes it easier to view the source of an installed gem. bundle show shows the source location of a particular gem in the bundle. bundle open opens an installed gem in your editor (the EDITOR environment variable must be set in your shell for this to work). So, to view the location of the Workarea Core gem installed in your application, run:

cd path/to/your_app
bundle install
bundle show workarea-core

To open the source in your editor, run:

cd path/to/your_app
bundle install
bundle open workarea-core

Stash

Those with permission may also view the Workarea source code repositories directly. Workarea source code is hosted in a private instance of Bitbucket (confusingly, it's referred to as Stash in the URL and most of the UI). The Workarea Product Stash project contains the source code for all Workarea gems maintained by the product team, while the Workarea Plugins Stash project contains the source for additional plugins maintained by the rest of the community. Browse these source code repositories using the Stash web interface or clone the repositories using your favorite Git client.

Identifying Maintainer(s)

To determine who, specifically, maintains a gem, look for the author and email entries in the gem's .gemspec file. A great place to reach out to gem authors or ask questions about any of these gems is on Workarea's Discourse support forum.

Contributing Code

Although Workarea is proprietary software, the product team accepts code contributions from other members of the community using the same model as many open source projects. Contributions should be submitted as pull requests. The process is explained further in the Contribute Code guide.