Development Tools

Recommended Development Tools

Software engineering/development/programming is difficult. Experienced developers have a quiver full of software tools at their disposal to aid in complex day-to-day tasks. Mifos developers are no exception.

After you have your Mifos development workstation set up with required tools like Java and Maven, you're probably ready to install something besides your trusty text editor to assist in code development.

In general, the Mifos team enforces maintainability of source code via coding standards, code reviews, and other process-oriented, people-oriented tools. That's why none of these software development tools are required. But they may make your life easier.

Goals for Mifos development tools

Ideal Mifos development tools are:

  • ones that work!
  • cross-platform: should work on, at least, Windows, GNU/Linux, and Mac OS X
  • feature-rich
  • extensible
  • stable
  • low-overhead: memory and CPU requirements should be reasonable
  • FLOSS: Free. This helps reduce the barrier to entry for developers worldwide by guaranteeing tool availability, and helps avoid vendor lock-in.

Use of non-free tools

  • Use FLOSS tools when possible
  • If there are no FLOSS tools that meet our requirements, use for-pay tools.
  • Make wise decisions - if the commercial tool costs $1,000, but saves $20,000 worth of developer time, it might be a good choice. On the other hand, we want our standard developer tool set to be FLOSS, so if this is a tool that all developers must use, look long and hard before choosing for-pay tools.

IDE

An IDE makes common tasks like version control, searching, code generation, refactoring, and reformatting all available within one monolithic application.

Eclipse

The IDE used by most Mifos developers is Eclipse Eclipse meets all the goals of Mifos development tools. If you choose another IDE, that's fine! Ask for help with this on IRC or our developer mailing list: some developers use IDEs besides Eclipse.

Database Development

MySQL Workbench

http://dev.mysql.com/downloads/workbench/

SQuirrel SQL

SQuirrel SQL is a FLOSS and feature-rich IDE for working with databases. SQL and Hibernate querying are supported.

Source Revision Control

See Mifos Version Control Guide.

Load Testing

Use JMeter.

Screen Sharing

Dimdim works great for screen sharing (also known as "pairing up").

Hosted Services

Some development tools are hosted somewhere and shared by entire engineering teams including development, QA, test, project management, and others. The "host" is simply a computer somewhere that is generally powered on and plugged into the internet year-round.

Examples of hosted services include, but are not limited to:

Goals for Hosted Services

In addition to the general goals above there are some additional goals to consider when choosing hosted services:

  • integrates cleanly with existing hosted services
  • changes to content are version tracked
  • content is indexable by robots of all major search engines
  • content is available on a "publish/subscribe" basis (think RSS feeds)
  • high availability and quick recovery from outages
  • content can be exported and moved to other systems providing similar functionality
  • use existing logins as much as possible (ideally, we'd use a single login, aka "single sign-on")

Static Code Analysis

Possible static analysis tools to use with Mifos include: PMD, CheckStyle, FindBugs, Crap4J, Cobertura (test coverage) and SchemaSpy for database. Sonar also provides a comprehensive dashboard view of a java project's source code quality. Thanks to Krystian Lider for helping us out with Sonar!

Non-Free Tools

The Mifos development team generally advocates the use of FLOSS development tools since this reduces the barrier to entry for developers worldwide by guaranteeing tool availability and helps avoid vendor lock-in.

However, Mifos recognizes that certain jobs may be difficult or impossible without using non-FLOSS tools. If there is a strong justification for use of a non-FLOSS tool, please feel free to add it to Non-Free Development Tools.