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:
- issue tracking
- continuous building
- mailing lists
- live chat
- source code version control
- source code browser
- project management
- schema browser
- test coverage and other code metrics
- general project content
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.