Skip to content

Instantly share code, notes, and snippets.

@jegelstaff
Last active December 29, 2015 11:48
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save jegelstaff/7665750 to your computer and use it in GitHub Desktop.
Save jegelstaff/7665750 to your computer and use it in GitHub Desktop.
Formulize project description for Facebook Open Academy

Formulize is a tool for making data management systems on the web. It has extensive support for modelling workflows, so that organizations can customize how users interact with the data that Formulize is managing. It is aimed at "power users" in not-for-profits and other organizations without large IT departments and resources, empowering them to create systems that would otherwise require custom programming to deploy.

The most basic operation in Formulize, is the creation of forms. Administrators can specify what elements should appear on the form, and also how different groups of end users should be able to interact with the form. From there, administrators can make custom screens that control how lists of entries in each form are shown to end users. Administrators can also control how different forms relate to each other, similar to describing table relationships in an ERD. These relationships then govern how data is queried from the database, enabling screens to display complex sets of information to users, rather than just entries from a single form.

Formulize can work as a standalone application, installed on a web server. Formulize can also be embedded within any PHP-driven web application on the same server where it is installed. There are integration modules for easily hooking up Formulize to Drupal, or Joomla, or WordPress (created by previous UCOSP students!).

Formulize also has iOS and Android apps for using a Formulize application on your mobile device (also created by previous UCOSP students!).

Who uses Formulize?

Formulize is used by organizations around the world, for a variety of purposes, from tracking the status of housing renovations, to recording the activities of wilderness rescue teams. The lead developer of Formulize is Freeform Solutions, a Canadian not-for-profit organization that helps other not-for-profits with IT. Freeform has used Formulize with several past and current clients, including: Oxfam Canada, the Boys and Girls Clubs of Canada, the Ontario Association of Children’s Aid Societies, the Australasian College of Sports Physicians, and various social science research projects at the University of Toronto, McMaster University and the University of Western Ontario.

How is Formulize built?

Formulize is built primarily with PHP, but makes use of HTML and Javascript as well of course. jQuery is also used extensively in the more recent parts of the code base (the project started in 2004). Formulize relies on MySQL for database operations. Because it is a tool that you use to create other systems, rather than a tool that does something for end users by itself, there is a high degree of abstraction throughout the codebase, especially the parts that interact with the database. The code has to read configuration information specified by the administrators, and use that to dynamically generate all operations, including database queries. The newer parts of the codebase employ some object orientation. Older parts remain largely procedural. The codebase is maintained at GitHub.

How is the project organized?

Freeform Solutions generally follows an Agile Project Management methodology in all its work (Scrum with User Stories). The development work will follow this method, which Freeform has unique experience in carrying out through a virtual environment (Freeform Solutions is a virtual organization with full time staff, but no shared physical office).

What will students learn?

Students will have extensive exposure to PHP of course, and related web technologies. Students will also experience some real-world Agile processes. There are four main areas that we are focusing on right now, that students will be involved in. The four areas are:

  • Develop a mobile theme for Formulize that will work effectively on the iOS and Android apps

  • Internal improvements to optimize parts of the codebase and add some new features, such as being able to configure the order of fields in lists separately from the order they appear in a form

  • Complete the implementation of configurable graph screens in the GUI, based on the graphing API that already exists

  • Carry forward implementations of two new user interface designs that were begun by previous students — one design is for a more WYSIWYG style form creation interface, and one is for a more ajax-based data browsing interface.

Exactly what students will be involved in, will depend on the background experience each student brings to the project, and their own interests, and the immediate priorities of the project over the next few months.

Formulize grew out of Freeform’s experience with content management systems, and is in fact built on top of a content management platform, so students will also be exposed to the principles of how website content management systems are built. Julian Egelstaff, lead developer of Formulize at Freeform Solutions, is an authority on open source content management systems. (https://www.google.ca/search?q=egelstaff+content+management+systems)

Learn more about Formulize:

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment