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
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.
An IDE makes common tasks like version control, searching, code generation, refactoring, and reformatting all available within one monolithic application.
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.
Dimdim works great for screen sharing (also known as "pairing up").
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:
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!
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.