I think that it is widely conceded that it is a good idea to use the most 
suitable tool for a given task. But what does that mean? There is a long list 
of conditions and factors that go into selecting tools, some reflecting 
immediate needs, some reflecting long term needs and strategy, and others 
reflecting the availability of resources, and these interact in many ways, many 
of them problematic.

I have given the genesis of Cherry Hill’s tech evolution at the end of this 
missive. The short version is that we started focused on minimizing size and 
complexity while maximizing performance, and over time have moved to an 
approach that balances those agains building and maintenance cost along with 
human and infrastructure resource usage.

Among the lessons we have learned in the last few years, one of the most 
effective has been to employ services wherever possible. We have moved our 
infrastructure to AWS, use PAAS tools like Heroku and Joyent for development, 
and we use SAAS tools like Github, Pivotal Tracker,and Unfuddle for project 
management and testing, as well as business needs like telephone, meeting 
tools, and data management.

With regard to software, we employ the “hire slow, fire fast” axiom that others 
apply to HR. Bad choices can be expensive.

When we adopted Drupal, we didn’t dwell on the “Drupal is hard” label that was 
a mantra of the time, as we did not find it to be hard. The parts we didn’t 
like, we could fix.

In 2007, we started working with the library Drupal community to promote Drupal 
to libraries of all kinds, based on the virtue of strength in numbers. This 
extends the community principles that drive the Drupal project. With over 1,000 
CMS systems in production, it would be surprising if one of them, no matter how 
flexible and adaptable was perfect for every situation. This is why, while we 
employ the Drupal brand and have an investment in our partnership with the 
Drupal Association, we prefer that prospective clients do not approach projects 
with a closed mind. If you ask us for a website, we are likely to propose it in 
Drupal, because we have a lot of tools and resources at our disposal, and we 
are facile in working with Drupal.

Apropos the original message, Drupal has great tools for supplying and 
consuming services, including the services and feeds modules. We are working on 
some projects that pair the Drupal CMS form the presentation layer. One of 
these came about when a client launched a major site rebuild (using a different 
contractor) with an Angular.js presentation layer on top of RoR. What became 
apparent pretty quickly is that there was no simple way to create, manage and 
organize the thousands of pages on this site in RoR. We were called in to 
create endpoints in the current Drupal system that would feed RoR, etc. This 
buys them time to build out a new, bespoke CMS in Rails.

Likewise, even though we have RoR projects on the books and we do a lot of work 
with Ruby in our system administration, we want to build new bespoke projects 
in Symfony, because we like it, and because I really enjoy it and because it is 
the future of Drupal. I love Python, Scala, Go and a bunch of languages, but we 
can’t do everything. I don’t like Perl, for reasons that I can’t really 
articulate, and (I hope) you can’t make me use it.

>From a project owner’s perspective, I think that it is critical that you do 
>your homework and work with tools you are comfortable with. This doesn’t mean 
>that you should build your social media project in Cobol. You should 
>familiarize yourself with what is out there in the world of today, determine 
>what resources are available, and divide what mix of internal and external 
>teams you can work with. Bear in mind that the number one fail is having 
>someone build a complex, wonderful, undocumented bespoke tool, which six 
>months down the road, needs to be scrapped because it can’t.

I believe in open-source, with a strong preference for FOSS project built by a 
community. I feel that it is a win when libraries build projects in Wordpress, 
SilverStripe, RoR, Plone or any open-source system. I don’t feel so good about 
SiteCore, who loves to blast the idea of open-source, or SharePoint, which is, 
I m sure, good at something, just not at web delivery.

Thanks,

Cary

---------------------------------
TL;DR


I am going to give you some insight into what my shop does, why, and how we 
made these choices. It is a snapshot, as we evolve constantly.

We have always been a multi-thechnology shop. Originally we were Microsoft 
partners, building desktop and distributed applications in Access, MSSQL, and 
VBA, which we augmented, mostly for speed, with com objects written in C++. We 
did our web development in ColdFusion, originally against MSSQL, and also 
augmented with com objects. When ColdFusion moved to Java, the com objects 
became Java, and we started migrating to Linux and MySQL.

We started using ColdFusion as an integration tool, and, when we started 
working on the 24/7 reference project, we used Java to connect to and 
communicate with the integration targets, using CORBA and other service bus 
tools. We also started working with WSDL, and other early service platforms.

Eventually, we started using ColdFusion frameworks, including FuseBox (meh), 
Model-Glue, and ColdBox, which in turn started moving to the MVC model. We were 
also doing some work with the Sakai LMS, which led us into the Spring and 
Hibernate Java frameworks. The big, overly simplified take away was that MVC 
frameworks made projects easier to manage and maintain, but there was often a 
performance hit. Ten years ago, servers had improved enough where we didn’t 
have to do component sharpshooting to get applications to run, but they still 
did not have great performance. Apps that we now run in a VM or two, might 
require half a dozen web heads, substantial SANs and database servers, and 
expensive load-balancers.

In 2005, someone pointed out Drupal as something that might be a good fit for a 
no-budget project where we needed a useful fronted for dSpace.ColdFusion was 
not a option. Drupal 4.5 was imperfect, but it had a couple compelling 
qualities. Drupal core, which was pretty much all I used, was built with coding 
standards which elevated it above the craziness of PHP 3 and 4.The code also 
contained great embedded documentation. Even better, it was very XML friendly, 
which was key to getting the project done.

The timing was good, as we were about to rebuild our CMS service package for 
libraries — LibrarySite — and building that in Drupal would allow us to lower 
the price by about 70 percent.

In 2007, I went to a DrupalCon in Barcelona, because I was having some issues 
with a multilingual site project, and I know that the players in that 
initiative would be there. I solved my problem, and I was smitten by the 
community. I got involved, produced some DrupalCons, and served on the Drupal 
Association board for a few years.

Although most of our projects involve Drupal.we are not a pure Drupal shop. We 
are also doing some RoR projects, we touch Java through working with Solr and 
Jenkins, and Python through AWS scripting, and casual programing.

We are starting to do more with Symfony (and Silex), and we have a particular 
interest in JS-based systems including angular.js, node.js and more. One of our 
demo projects is using the mean.io framework integrating with Drupal. Mean.io 
is a mashup of MongoDB, express, Node.js and Angular.js.

Our first web applications were simple and flat. Then they were complex and 
flat. While flat applications might be performant, they become unmaintainable 
as they grow, and it is on us to find the balance between maintainability and 
structure, and performance and operational cost. All of this must be considered 
in an ever-changing universe of tools and techniques.

Drupal note:

In the ‘80s, Microsoft Word was very popular, but lacked printer drivers. It 
did have a well documented system for created them that involved a hook-like 
arrangement. Consequently, when I first looked at Drupal’s hook system, it was 
instantly familiar. 

Reply via email to