Obviously most of the content on detroitmi.gov will be supported by a CMS. However, there will still be instances where we need to use a web framework to support functionality that the CMS cannot achieve. Because of this I have done some research into what frameworks would be suitable for our purposes. (Note that this is not intended to cover all commonly-used web frameworks - I have intentionally ignored some [web frameworks built in Java or C/C++, for instance] because they tend to present long development cycles that I do not feel are adequate for our purposes. Also, I am leaning strongly towards frameworks that are frequently used / well supported as well as written in a programming language that is itself frequently used, with the intention that it will be easier, when needed, for other developers to work with the frameworks.)
Some of the criteria I have for web frameworks include the following:
- should be highly productive (i.e., able to let developers achieve high-quality results in minimal time)
- should be reasonably accessible (since we have only 1 back-end developer, I have put a high priority on using frameworks that are written in well-known and readable languages)
- should use languages that are not only common, but likely to stay common going forward
- should be reasonably performant / scalable
- pros
- high-productivity
- good performance / scalability
- explicit, straightforward syntax (less 'magic' behavior than rails)
- intended for and widely-used in publishing (e.g., used by Washington Post, National Geographic, Pinterest)
- widely used in scientific research / engineering / data analytics (used by NASA)
- python is especially common (more so than ruby)
- python can easily access ArcGIS via ArcPy
- cons
- syntax is less elegant and concise than ruby
- pros
- high-productivity
- broad user base (wide variety of supported functionality)
- concise, elegant syntax
- cons
- sometimes confusing 'magic' behavior
- poor performance
-
pros
- high performance / scalability (runs on java VM)
- high-productivity
-
cons
- built on relatively rarely-known language (groovy)
- pros
- widely-known / widely supported
- good performance
- PHP popularity
- cons
- PHP arguably declining in popularity and difficult to maintain