Hire Us! Announcing New Consulting Services From INN’s Technology Team

INN's technology team is focused on helping our now 100+ member organizations any way we can.

We now provide free hosting and support to over 30 member websites on our Largo platform and a significant portion of what we do involves improving the platform and supporting members so they can take maximum advantage of the tools we build.

We've made a lot of headway in the past couple of years reducing costs for members, eliminating duplication of effort and getting members onto a stable platform that looks great and works well across devices.

But it's hard for us to help every member individually and there are many member (and non-member) organizations who would like us to do more and have expressed the willingness to pay for our services.

Specifically, we’ve heard from a number of INN members that they:

  • Have a hard time finding vendors/contractors who “get” what they’re trying to do and often wind up working with local agencies or freelancers who focus mostly on internet marketing or building small business sites so they don’t understand the other considerations unique to news and content sites or nonprofits
  • Are often unhappy with the vendors/contractors they do have and/or are overpaying for subpar services
  • Would, in a number of cases, rather work with INN's tech team directly rather than with an outside vendor. Given our current staffing and workload we typically haven't been able to do this if the request goes above and beyond what we’re able to do for "free" as a benefit of INN membership.

We also frequently hear from non-members that they:

  • Want to use the tools we have built (particularly Largo) but may require some help setting them up or customizing them to suit their needs
  • In some case may require additional custom development to add functionality that we have not yet built
  • Would be willing to pay (provided our rates are competitive) for our services and even (potentially) pay us to host their sites in the same way we host sites for members.

Until now we’ve just been referring people to outside contractors and freelancers but as we continue to grow our technology team we now have the capability to take on some of this work ourselves.

For INN members we will subsidize the cost of these services to keep them very affordable (see the rates section below for details), but we will also, from time to time, take on work from non-members as well (at regular market rates).

Some examples of the services we may offer include:

  • Content migration, design customization and custom development for members using our Largo platform beyond what we're able to do for "free" as a benefit of INN membership
  • Assistance with editorial design and development for news apps, data projects or special series
  • Ongoing or project-based support, training and assistance with story production
  • Design and development of microsites or other special projects

Taking on this additional paid work will allow us to:

  • Offset a portion of our costs and make our team more sustainable for the long-term by being less reliant on grants and other less-predictable sources of funding
  • Expand our technology team faster than would otherwise be possible and offer competitive compensation packages to help us recruit the best talent
  • Provide better service to members at lower rates than what they’re often getting now
  • Assist non-members with the adoption of tools we build (particularly our Largo platform)

We hope that this new program will be a win-win for members and for INN and that we'll now be able to provide an even higher level of support at very reasonable cost.

If you're interested in working with us, we'd love to discuss your needs and how we can help. Get in touch with us here to learn more.

We've also assembled an FAQ to provide more detail on the program.

FAQs

For INN members, what is free and what do we have to pay for?

As a benefit of your INN membership you receive free hosting for your main website if you use our Largo platform (if you have more complex needs, multiple sites, etc. we may need to pass some of our infrastructure costs through to you). In addition, we will provide a reasonable amount of support to help you migrate to the platform and customize the look and feel of your site.

If you require more assistance, extensive design customization, custom functionality, etc. or ongoing support then this is typically what we would ask you to pay for.

Weren't you doing this for free? Why do we have to pay now?

This new program does not affect any of the benefits we currently offer to members as part of their regular INN membership.

We will continue, for the foreseeable future, to cover hosting costs for members using our Largo WordPress platform and will continue our work to improve the platform itself as well as help members where possible with migration, on-boarding and basic customization.

The reason we're starting to do paid work is that we now have a lot of requests that are very specific to one particular member that we don't believe would necessarily benefit others in the network.

Our team is focused on tackling problems we believe can best be solved at a network level and given our size and funding level we will never be a complete replacement for investment in technology at the member level.

We also hope that by reducing duplication of effort, building common platforms and tools, etc. we free up resources that members can (and should!) re-invest in technology at their organization to best serve their audience, try new things and innovate further faster.

Why should we pay you instead of a local freelancer/agency?

In short, our aim is provide better services at a lower cost.

In the past when members came to us with one-off needs we would refer them to outside contractor or in some cases helped them recruit and hire a full-time tech staff.

Sometimes this works out well but many members have told us they have had bad experiences with contractors or had a hard time finding good help at all that was reasonably priced and understood what they were trying to do.

Other members may want to eventually hire a full-time staff member focused on technology but aren't quite at that point yet and have a need for ongoing help in the meantime.

The way we're hoping to solve this problem is to form a sort of "co-op" comprised of the best news technologists, designers and support staff we can possibly find who will be focused full-time on meeting the needs of nonprofit news organizations. Members will then be able to tap into this team as needed on a project-by-project basis and/or use us for ongoing support, training, etc.

What are the rates? How do you structure your contracts?

As of January 2015 our rates are as follows*:

  • For INN member organizations we offer a further discounted hourly rate of $85 per hour. This is actually slightly below our cost and is subsidized by the other consulting work we do for non-members and by INN's general operating funds (grants we receive from foundations, member dues, etc.)
  • For non-member non-profit organizations we offer a substantially reduced hourly rate of $125 per hour.
  • For non-member, for-profit organizations our regular hourly rate is $175 per hour.

*rates are subject to change but once we agree to an hourly rate we will honor it per the terms of your contract.

Contracts will typically be project-based and we will bill twice monthly for the actual hours worked during the preceding two week period. Under certain circumstances we may agree to do fixed bid contracts but we believe it's typically more fair for both parties to charge for actual hours worked.

I have ongoing tech needs but we're not ready to hire a full-time staff member yet, can you help?

If you have ongoing needs, we've talked to a few members about doing a retainer-based support agreements where you would essentially be sharing a full-time headcount on our team with a number of other INN members. The advantage would be that you would be guaranteed a certain percentage of that person's time without having to recruit and manage them.

If this is something that you would be interested in, contact us and we can discuss your particular needs and how we might best help you.

Using Fabric for WP Engine WordPress Deployments

One of my first tasks at INN was to familiarize myself with the tools and technology the team currently uses.

What I noticed was that our deployment process was pretty darned manual. We host a number of our WordPress sites on WP Engine and while they allow deployment via git and access via SFTP, they don’t give us shell access to the server. So our deployment process up until this point has involved an FTP client, dragging and dropping files for transfer, maybe picking and choosing parts of our code to deploy based on what we've been hacking on. This approach works, but is fragile and requires a lot more thinking than I'm typically willing to do. Remember, laziness is a virtue.

Requirements

Having a scripted deployment process means that the steps to deploy your code will be the same no matter who has the responsibility. Keeping a repo with your deployment scripts means the process is documented and can be critiqued and iterated upon.

We’re using Fabric because I am familiar with it. By all means, use Capistrano or some other deployment tool. Write a few shell scripts if that’s what you’re comfortable with. Do what you can to put the software to work for you.

A sound deployment strategy meets these criteria:

Extensibility

Want to deploy via git or sftp? Deploy a specific branch? Want to minify and compress assets before deployment? Maybe tag a commit for rollback purposes? Your deployment strategy should be extensible enough to accommodate these things and require little to no input from you. Write a script once and put it to work.

$ fab staging branch:exciting_new_feature deploy

Push button

Type the deployment command into your shell and hit enter.

$ fab staging master deploy

Rollback

If something goes wrong, issue another command to revert to a previous state and deploy.

$ fab staging rollback deploy

Fabric, git-ftp and WPEngine

Fabric is a wonderful Python library that allows you to script away application deployments and remote system administration tasks. It provides a way to wrap up what would otherwise be complex git commands/workflows in simple, easy to remember, fab commands.

Some of the things our fabfile is set up to handle include:

  • Use git-ftp to deploy files to WP Engine via sftp.
  • Check the commit hash of currently-deployed code and automatically tag it is as a rollback point.
  • Allow us to checkout and deploy a specific branch to a specific environment (i.e. master or stable to staging or production).

Why use git-ftp? In our experience, git deployment for WP Engine has been difficult to use and unreliable. Also, WP Engine requires an entire WordPress install as the basis for your repository, which isn’t how most of our repos are structured. Git-ftp allows us to work around these issues.

However, if we want to move to a git push-based deployment strategy or expand our toolkit to work with environments outside of WP Engine, adjusting or adding to our fabfile is trivial.

Usage

If you want to use our deployment tools with your project, you can follow the instructions in the README included in the repo. The README holds all the details regarding software prerequisites and how to install them.

If you’re already familiar with Python, Fabric and have your dev environment set up, you can find the “quick start” steps below.

These tools were meant to be added as a submodule in your project repo. This is based on the way Ryan Mark structured the Chicago Tribune’s deploy tools. To start:

$ git submodule add https://github.com/INN/deploy-tools.git tools

Then copy the files from tools/examples to the root of your project:

$ cp -Rf tools/examples/* ./

Finally, edit `fabfile.py` to use your WPEngine host, username and password:

# Environments
def production():
"""
Work on production environment
"""
env.settings = 'production'
env.hosts = [‘mywpinstall.wpengine.com’, ]
env.user = ‘mywpinstallusername’
env.password = ‘mywpinstallpassword’

After that, add and commit your changes. At this point, you should be able to deploy:

$ fab staging master deploy

If you want to perform a dry run beforehand to see exactly what files will be transferred:

$ fab staging master dry_run deploy

If you want to see a list of all available commands:

$ fab -l

Available commands:

branch                Work on any specified branch.
deploy                Deploy local copy of repository to target environment.
dry_run               Don't transfer files, just output what would happen during a real deployment.
master                Work on development branch.
path                  Specify the project's path on remote server.
production            Work on production environment
rollback              Deploy the most recent rollback point.
stable                Work on stable branch.
staging               Work on staging environment
verify_prerequisites  Checks to make sure you have curl (with ssh) and git-ftp installed, installs them if you do not.

Todos

Future plans include adding commands to handle asset minification and compression.

If you'd like to contribute, you can fork the code here.

Project Largo Goes International

Recently INN member Centro de Periodismo Investigativo (CPIPR) debuted a new website, the first INN member to translate our open source Project Largo WordPress theme into Spanish.

The new Centro de Periodismo Investigativo website is the first to translate INN's Largo WordPress theme into Spanish.
The new Centro de Periodismo Investigativo website is the first to translate INN's Largo WordPress theme into Spanish.

With the launch of their new site, CPIPR joins over 20 INN members and 50 other sites around the globe who are now using INN's Project Largo, including sites in Danish, French, Spanish, Portuguese and even Korean. A complete list of the sites using Largo can be found on the Project Largo website.

While many of these sites publish in different languages, the CPIPR site marks the first time we worked with a member to translate the Largo theme itself so that all of the interface elements are now available in Spanish for any other site by simply selecting "Spanish" as their language preference when they install WordPress.

For more details on how WordPress language support works, see this article from their official documentation.

The updated translation files are available now on github and if you'd like to help us translate Largo into other languages, get in touch and we'd be happy to walk you through the process.

Connecticut Health I-Team Launches First Site Using New INN WordPress Platform

The Investigative News Network is excited to announce the launch of the first website built as part of the Largo Project, a WordPress starter theme developed by INN for members with longform, investigative reporting in mind. This past Wednesday, the Connecticut Health Investigative Team (C-HIT) launched their new website at http://c-hit.org.

INN’s Director of Technology Adam Schweigert developed the project, and has been working with C-HIT Editor Lynne DeLucia to move the organization’s site onto the new content management system.

Largo incorporates a number of features from NPR's Project Argo, while significantly expanding the project to make it easier to set up and manage, adding flexibility to better support the needs of a variety of news publishers. Some of Largo's features include a mobile-friendly responsive design, three pre-built homepage layouts, highly-configurable responsive navigation menus and sidebars, built-in support for receiving donations, social media links, custom bylines and author profiles, analytics and additional functionality that would otherwise require additional plugins.

“Adam really took the time to see our mission and then put a lot of thought into tailoring the site so it showcases our investigative work,” DeLucia said. “The feedback so far has been terrific.”

Presentation of longform journalism was a priority. Largo includes formatting for pull quotes and asides, responsive images, slideshows and videos, and support for a variety of other embedded content. Articles can be broken into multiple pages, and heading and body text are optimized for readability on desktop and mobile devices. Social media support is built in, including Open Graph, Twitter Card, and Google authorship markup to ensure optimal presentation of content when it’s shared on the web. Largo also includes a curated list of plugins for additional functionality, so that news organizations can further fit the theme to their specific needs.

“INN’s members create powerful journalism every day,” said Schweigert. “We hope to put powerful publishing tools into the hands of every INN member who wants them, and to continue to grow and develop the platform to make it easier for members to build a digital presence to highlight their work.”

INN members the Midwest Center for Investigative Reporting, the Iowa Center for Public Affairs Journalism, and several others will also soon be launching websites with Largo.

Largo Project was funded in part by a generous grant from Karin Winner, board member at the Investigative Newsource.

"A great strength of INN is to help fledgling journalism nonprofits get off the ground by providing tools not only to do their job but to link members so they can learn from each other," said Winner. "A solid, interactive website will be essential to [journalism nonprofits'] ultimate success."

The code for Largo is open source, and available on Github. INN also offers assistance to its members interested in using it, and those considering a content management system or website update within the next year should contact Adam Schweigert at adam@inn.org for a demonstration.

More information about the Largo Project is available at http://largoproject.org.