Thank you for your interest in contributing to FieldWorks (FLEx)!
There are several ways you can contribute to the development of FieldWorks:
- Contributing code - Fix bugs, add features, improve documentation
- Testing alpha and beta versions - Help us find and report issues
- Reporting issues - File bugs on GitHub Issues
The following steps are required for setting up a FieldWorks development environment on Windows.
Note: FieldWorks is Windows-only. Linux builds are no longer supported.
Download and install the latest version of Git.
During installation:
- On "Adjusting your PATH environment": Select any option you want - "Use Git Bash only" is sufficient unless you want to run git commands from the Windows command prompt.
- On "Configuring the line ending conversions": Select "Checkout Windows-style, commit Unix-style line endings".
Download and install Visual Studio 2022 Community Edition or higher. See Visual Studio Setup for detailed configuration.
Required workloads:
- .NET desktop development
- Desktop development with C++ (including ATL/MFC)
Installer builds use SDK-style .wixproj projects and restore WiX v6 tooling via NuGet during the build.
.\Setup-Developer-Machine.ps1See Installer Build Guide for building installers locally.
FieldWorks builds can be significantly slowed by Windows Defender real-time scanning. To configure exclusions, run the following in an Administrator PowerShell:
.\Build\Agent\Setup-DefenderExclusions.ps1This adds exclusions for build outputs, NuGet caches and development tools. Use -DryRun to preview changes without applying them.
Clone the FieldWorks repository using HTTPS or SSH:
HTTPS:
git clone https://github.com/sillsdev/FieldWorks.git
cd FieldWorksSSH:
git clone git@github.com:sillsdev/FieldWorks.git
cd FieldWorksIf you're working on translations:
git clone https://github.com/sillsdev/FwLocalizations.git LocalizationsInstall the PigLatin font by right-clicking on DistFiles/Graphite/pl/piglatin.ttf and selecting Install.
Add the following environment variables:
# Prevent sending usage statistics
$env:FEEDBACK = "off"
# Set up ICU data path (required for debugging ICU-related projects)
$env:ICU_DATA = "C:\path-to-repo\DistFiles\Icu70\icudt70l"
# For FlexBridge development (optional)
$env:FIELDWORKSDIR = "C:\path-to-repo\Output\Debug"Tip: Add these to your PowerShell profile or system environment variables for persistence.
Build FieldWorks using the PowerShell build script:
.\build.ps1For more build options, see .github/instructions/build.instructions.md.
Default recommendation:
- Use VS Code + ReSharper extension for everyday coding, navigation, and managed test explorer workflows.
- C# Dev Kit is discouraged in this workspace.
- Use repo scripts/tasks as source of truth for build/test:
./build.ps1and./test.ps1.
Switch to Visual Studio 2022 when you need:
- WinForms designer workflows
- Mixed managed/native debugging across interop boundaries
- Complex legacy .NET Framework project-system scenarios where VS Code is unreliable
See VS Code Stability Profile for current workspace guidance.
It is helpful to increase the rename limits for Git to properly detect renames in large commits:
git config diff.renameLimit 10000
git config merge.renameLimit 10000-
Write tests: For any new functionality and when modifying existing code, write NUnit tests. This helps others not introduce problems and assists in maintaining existing functionality.
-
Follow formatting and commit conventions: Use
.editorconfigfor formatting and see commit message guidelines for CI-enforced commit rules. -
Make sure tests pass: Ensure all tests pass before submitting. Tests are directly integrated into our build system.
We welcome any contribution! To get started:
- Fork the FieldWorks repository on GitHub
- Clone your fork locally
- Create a branch for your changes:
git checkout -b feature/my-feature-name
- Make your changes and commit them with clear messages
- Push to your fork
- Submit a pull request to the main repository
See workflows/pull-request-workflow.md for detailed PR guidelines.
People we know well might be asked to join the core development team. Core developers get additional privileges including the ability to make branches directly in the main repository and contribute in additional ways.
- Documentation: Check the docs/ folder for additional guides
- Issues: Search or file issues on GitHub
- Wiki: Historical documentation at FwDocumentation wiki (being migrated to this repository)
- Visual Studio Setup - Detailed VS configuration
- Core Developer Setup - Additional setup for core developers
- Pull Request Workflow - How to submit changes
- Build Instructions - Detailed build guide