This document is intended to outline the expectations of a Kuali Financial System (KFS) Developer. These are the things that a KFS Developer will be expected to do in the process of doing development work on the Kuali Financial System project or when contributing Enhancements or Bug Fixes to the baseline KFS code.
This document refers to Kuali Financial System project roles, but not specific individuals. For more information on specific project roles, see: Partner Contribution Product Team Responsibilities and Sustainability Model Partner Roles.
Accessibility
A KFS Developer is expected to:
- develop code that is consistent with KFS and Rice Accessibility Standards (see: Rice Accessibility)
- correct accessibility issues prior to considering a development task complete
Code Reviews
A KFS Developer is expected to:
- follow the Code Review Standards and Processes
- propose code to be reviewed to a KFS Product Team Engineer when the developer thinks the code could benefit from a review, or the community could benefit from review of the code in question
Coding Standards
A KFS Developer is expected to:
- follow the KFS Coding Standards (see: KFS Coding Standards)
Communication
A KFS Developer is expected to:
- communicate rather than make assumptions ("when in doubt, ask")
- when assumptions must be made to avoid impeding progress, communicate those assumptions
- raise any blockers immediately
- use the best communication medium available
- all communication mediums are not created equal
- we value Face to Face communication over Video-conferencing
- we value Video-conferencing over Voice-only communication
- we value Voice-only communication over Text chat/IM
- we value Text chat/IM over email
- we value email over nothing
Use the medium with the most appropriate bandwidth for the need
Continuous Integration (CI) Builds
A KFS Developer is expected to:
- pay attention to the CI (currently Jenkins) builds
- research why a CI build failed if it failed on a pull request you submitted
- email the KFS Tech list (kfs.tech at kuali dot org) if a researched problem appears to be systemic in nature and not related to the code committed by the developer
Database
A KFS Developer is expected to:
- coordinate database changes with a KFS Product Team Engineer
- follow the process outlined in Changes Requiring Pre-Approval and KFS Database Update Procedures for database modification requests and updates
- Have a local database for contribution development (see: Database)
JIRA
A KFS Developer is expected to:
- use JIRA to track issues and bugs
- only work on JIRAs that have been pulled into the current sprint
- for Contributions, this will mean the JIRA has been moved into the KFS Contribution Development queue (KFSCD)
- if you are out of work, bring it up on the team slack chat or in the daily standup/MAM
- work on subtasks rather than parent story JIRAs
- only work on JIRAs you are assigned
- move a JIRA to "In Progress" status when work is started and "Stop Progress" if work stops
- keep your "Functional Roadblock/Technical Roadblock" flags up to date on JIRAs, bringing issues up during the Daily Standup/MAM meetings
- if your sub-task is a coding task, move to "Pull Requested" status when the PR has been submitted and close the sub-task when the PR has been merged
- if your sub-task is not a coding task, close it when work is complete
- create a JIRA task/bug for any work you are doing that is not already represented in JIRA, and discuss such work during the Daily Standup/MAM meetings
- if you run into a bug while working on an existing JIRA (bug or enhancement), create a new JIRA for the bug, even if it is a blocker for your current work, and discuss during the Daily Standup/MAM meetings
- create a JIRA bug entry in the KFS JIRA project (KFSMI) for any suspected Rice bug, set to Rice Roadblock status, and notify a KFS Product Team Engineer
- if the Rice bug will be fixed by a Rice contribution, the contributor can create and link the corresponding Rice JIRA
- if the Rice bug will be fixed by the Rice team, a KFS Product Team Engineer will create and link the corresponding Rice JIRA
- create a JIRA in the KFS Request/KFSMI queue to record gaps in documentation, cm improvements, etc.
Licensing
A KFS Developer is expected to:
- review any third party license additions to the project with a KFS Product Team Engineer (see also: Licensing)
- follow licensing procedures for the Kuali Projects (additional review by other parties in the project is required)
Note: Don't add third party libraries to the project just because you think they are cool!!!!
Submitting a Pull Request
A KFS Developer is expected to:
- pull updates from the repository prior to committing code, review differences with the repository, and merge changes as necessary
- pull requests should be made at the story level with a single commit (squash commits)
- make sure commits have comments, including a short description and Jira #
- make sure all code compiles prior to submitting a pull request
- make sure the webapp runs and is in good basic working order (does a doc search work? can you create a new document? etc.) prior to submitting a pull request
- make sure the code you're submitting works functionally by testing it in the web application prior to submitting a pull request
- make sure the unit tests pass prior to submitting a pull request (See: Running Unit Tests)
- At a minimum, this means executing the PreCommitSuite to ensure no failures. Failures in this minimal test suite may indicate other developers will be impeded from their development
- If there are unit tests specific to the areas of code being changed in the commit, run those as well, and ensure they pass
- In general, developers don't need to run the full suite of unit tests locally before submitting a pull request, because they are run regularly by our CI server; an exception would be when making a wide sweeping change such as changing from Java 7 to Java 8.
Technical Documentation
A KFS Developer is expected to:
- create Technical Documentation (for the KFS public confluence space) at the request of a KFS Product Team Engineer
Unit Tests
A KFS Developer is expected to:
- create required Unit Tests prior to considering a development task complete
In particular, Unit Tests should be created for new service(s) to validate the new service(s), including unit test coverage for each method in the new service interface(s); methods added to existing service(s) should also include unit test(s) for each new method
Run the PreCommitSuite prior to submitting a pull request to ensure none of these tests have been broken. (see: Unit Testing Before Submitting a Pull Request in the Running Unit Tests page.)
Use Your Resources
A KFS Developer is expected to:
- analyze and ask questions
- raise issues for active development in the Daily Stand-up/MAM meetings
- ask spec questions in a JIRA comment or raise in one of the meetings
- ask questions on the KFS Technical User Group mailing list when you can't figure something out yourself
- user your best judgment (many of the things on this page are subjective)