“Rapid Rails”: First four chapters are now in draft format for review
August 3, 2009
What is Hobo?
Hobo is a development toolset that simplifies, accelerates, and significantly reduces the cost of creating and maintaining data-rich web applications. It provides advanced tools for novice programmers and a feature-rich advanced customization environment for advanced programmers.
This direct quote from Tom Locke, the architect of Hobo, summarizes it well:
*Hobo is a collection of open-source plugins for Ruby on Rails that help you build anything from throwaway prototypes and internal utilities to meticulously crafted full-blown web apps. The goal: write less code. So much less in fact that it starts to feel like you’re not implementing your app at all, you’re just declaring what you want.”
Hobo improves agile development
Agile development is the philosophy that the results of programming process can be significantly improved upon by exchanging the costly planning and design process for an interactive iterative development process between developer and customer. The result is software that is much more likely to meet the real needs of the customer, and in a far shorter time frame than the more traditional “waterfall” model as defined in Wikipedia:
The waterfall model is a sequential development process, in which development is seen as flowing steadily downwards (like a waterfall) through the phases of Conception, Initiation, Analysis, Design (validation), Construction, Testing and maintenance.
This is opposed to the principles of the “Agile Manifesto” developed by an influential Team of 17 developers in 2001:
- The highest priority is to satisfy the customer through early and continuous delivery of valuable software.
- Welcome changing requirements, even late in development. Agile processes harness change for customer’s competitive advantage.
- Deliver working software frequently, from a couple of weeks to a couple of months, with a preference to the shorter timescale.
- Business people and developers must work together daily throughout the project.
- Build projects around motivated individuals. Give them the environment and support they need, and trust them to get the job done.
- The most efficient and effective method of conveying information to and within a development team is face-to-face conversation.
- Working software is the primary measure of progress.
- Agile processes promote sustainable development. The sponsors, developers, and users should be able to maintain a constant pace indefinitely.
- Continuous attention to technical excellence and good design enhances agility.
10. Simplicity–the art of maximizing the amount of work not done–is essential.
11. The best architectures, requirements, and designs emerge from self-organizing teams.
12. At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behavior accordingly.
Hobo supports agile development to a higher level than any other framework to date. Hobo lets you build an amazing amount of functionality, with sophisticated business rules, without writing a single line of traditional procedural code. You say what you want, or “declare” the functionality you need. It also allows you to CHANGE quickly to adapt to changing circumstances.
A challenge: How fast could you build an application with the following set of requirements using your current development tool, and have it running, without touching the database engine?
- The application called “things” maintains a list of things, with a name, description, and category.
- Users access the application with a browser front end.
- There is an application signup and login capability that allows any number of people to create his/her own login name and password. The system administrator is determined by a simple rule–the first to log in to the application becomes the administrator. The signup and login capability is accessible from the home page.:
- There will be a text search facility that will allow users to find one of the many things entered.
OK. You can be up and running with this app using Hobo in under two minutes. Got your attention? Let’s up the ante just a bit:
- The application called “Projects” maintains a set of projects and related tasks for a team of people. Members of the team can be assigned to these tasks.
- Users access the application with a browser. The browser provides the capability to create, edit, delete and list projects, tasks, and task assignments.
- All data entry fields have rollover hints to aid user data entry. Validation rules are attached to the fields to prevent invalid entries.
- Each project can have any number of associated tasks, and each task can have one or more team members assigned to it.
- Each task has one status at any given time. The list of status codes can only be maintained by the system administrator. A dropdown list of status codes will be displayed on a task creation page. Only one of these status codes can be selected and saved for this task.
- There is a signup and login capability permitting each team member to create his/her own login name and password. The system administrator is determined by a simple rule–the first to log in to the application becomes the system administrator. The system administrator is the only person who can create, edit, or delete a project.
- Any team member can add a task to a project, assign a team member to a task, or change the status of a task. Only the system administrator can delete a task or task assignment.
- The task assignment page will have a dropdown list of all existing team members. Only members of this list can have tasks assigned to them.
- A project page will display a list of all tasks assigned to the project.
10. A task page will display a list of team members assigned to the task.
11. A text search facility will search entries in the various database tables for partial or full word matches.
You will learn how to build this in a breeze after completing Chapter 3 – Introductory Tutorials.
After these basics you will learn how to dig under the hood to use Hobo’s other tools to make things fancier and to tailor the user interface to meet the standards of any organization—including yours.
- Hobo automatically provides many of the features that most applications need, like a user login and permission system, declarative business rules, site searching, etc.
- You declare your data and your permissions structures. Then Hobo uses this information to “intelligently” build the user interface (UI) you need, including to create, edit, delete and list table records.
- Hobo does not limit your ability to customize your UI when its basic assumptions don’t fit your situation. It comes with a set of reusable components, called tags, which let you declare the atomic structure of the UI in as much detail as you will ever need.
- Hobo was built with the assumption that no matter how many libraries you provide, some programmers will need to solve unanticipated problems. So Hobo provides a development language that allows you to create new components (tags). You never have to start over because customization is incremental. Hobo lets you define your own tags so you can then declare exactly what you want.