Multi-platform migration tool for converting ArcGIS applications to Honua.
honua-migrate is a comprehensive code migration tool that helps organizations transition from proprietary ArcGIS platforms to the open-source Honua geospatial platform. It provides automated code transformations, migration analysis, and project scaffolding across multiple programming languages and platforms.
- Source: ArcGIS API for JavaScript β Target: Honua JS SDK
- Features: AST transformations, 60+ compatibility modules, automatic import rewriting
- Source: ArcGIS Runtime .NET β Target: Honua .NET Mobile SDK
- Features: Roslyn-based analysis, MAUI project templates, cross-platform support
- Python: ArcPy/ArcGIS API for Python β Honua Python SDK
- Android/iOS: Native ArcGIS Runtime β Honua Mobile SDK
# Install globally
npm install -g honua-migrate
# Scan ArcGIS usage in your codebase
honua-migrate scan --source esri-dotnet ./MyApp
# Convert to Honua
honua-migrate convert \
--source esri-dotnet \
--target honua-dotnet \
--input ./MyApp \
--output ./HonuaApp \
--template maui-mobile
# Generate migration report
honua-migrate report --input ./MyApp --format html --output report.htmlAnalyze source code for ArcGIS API usage patterns:
honua-migrate scan --source esri-dotnet --input ./src --output scan-results.jsonApply automated code transformations:
honua-migrate convert \
--source esri-dotnet \
--target honua-dotnet \
--input ./src \
--output ./migrated \
--template maui-fieldappGenerate comprehensive migration analysis:
honua-migrate report --input scan-results.json --format html --output migration-report.htmlInteractive migration assistant:
honua-migrate wizard// BEFORE (ArcGIS API for JavaScript)
import Map from '@arcgis/core/Map';
import MapView from '@arcgis/core/views/MapView';
const map = new Map({ basemap: 'topo' });
const view = new MapView({ map, container: 'map' });
// AFTER (Honua JS SDK with compat layer)
import { Map, MapView } from '@honua/sdk-esri-compat';
const map = new Map({ basemap: 'topo' });
const view = new MapView({ map, container: 'map' });// BEFORE (ArcGIS Runtime .NET)
var featureTable = new ServiceFeatureTable(new Uri(serviceUrl));
await featureTable.LoadAsync();
var queryParams = new QueryParameters { WhereClause = "STATE = 'CA'" };
var result = await featureTable.QueryFeaturesAsync(queryParams);
// AFTER (Honua .NET Mobile SDK)
var client = await HonuaClient.CreateAsync(config);
var query = new FeatureQuery { WhereClause = "STATE = 'CA'" };
var result = await client.FeatureService.QueryFeaturesAsync("service-id", layerId, query);honua-migrate/
βββ core/ # Shared migration framework
βββ sources/ # Platform-specific analyzers
β βββ esri-js/ # JavaScript/TypeScript analysis
β βββ esri-dotnet/ # C# Roslyn analysis
β βββ esri-python/ # Python AST analysis
βββ targets/ # Code generators
β βββ honua-js/ # JS SDK generation
β βββ honua-dotnet/ # .NET SDK generation
β βββ honua-python/ # Python SDK generation
βββ templates/ # Project scaffolding
βββ maui-mobile/ # .NET MAUI field apps
βββ react-native/ # React Native mobile
βββ python-etl/ # Python data processing
- Tier A: Direct automated mapping (>90% automation)
- Tier B: Minor adaptation required (70-90% automation)
- Tier C: Significant changes needed (30-70% automation)
- Manual: Requires human intervention (<30% automation)
- AST-based parsing for accurate code understanding
- Cross-reference resolution and dependency tracking
- Migration complexity scoring and effort estimation
- Pattern-based code rewriting with high confidence
- Import statement updates and namespace migrations
- API call transformations with parameter mapping
- Visual migration complexity analysis
- API usage patterns and compatibility matrices
- Migration readiness assessment with risk factors
- Template-based project generation
- Platform-specific configuration and build files
- Best practices integration and modern patterns
- Unified CLI experience across all platforms
- Consistent migration patterns and terminology
- Extensible architecture for new source/target platforms
# Clone repository
git clone https://github.com/mikemcdougall/honua-migrate.git
cd honua-migrate
# Install dependencies
npm install
# Build project
npm run build
# Run tests
npm test
# Development mode
npm run build:watchCreate a honua-migrate.config.json file:
{
"sourcePatterns": {
"exclude": ["node_modules", "dist", "bin", "obj"]
},
"transformations": {
"esri-dotnet": {
"enableAutoImports": true,
"generateBackups": true,
"customMappings": {
"MyCustomService": "HonuaCustomService"
}
}
},
"templates": {
"maui-mobile": {
"targetFramework": "net8.0",
"platforms": ["iOS", "Android", "Windows"]
}
}
}- Fork the repository
- Create a feature branch:
git checkout -b feature/new-platform - Add source analyzer: Implement
SourceAnalyzerinterface - Add target generator: Implement
TargetGeneratorinterface - Add tests: Ensure >80% code coverage
- Submit pull request: Include example migrations and documentation
- Q1 2026: Complete .NET migration support
- Q2 2026: Add Python migration support
- Q3 2026: Native Android/iOS migration support
- Q4 2026: Cross-platform migration capabilities
- 2027: Community-driven transformation patterns
- Documentation: docs.honua.dev/migrate
- Community: community.honua.dev
- Issues: GitHub Issues
- Discussions: GitHub Discussions
Licensed under the Apache License 2.0. See LICENSE for details.
Migrate with confidence. Migrate to Honua.