There are a lot of things to consider when evaluating a software project and, because the platform is typically a driving factor for development, one of the primary considerations is what platforms our customers want/need to target. While a single platform presents specific challenges (compiler, packaging, distribution, etc), multiple platforms may compound or simplify those challenges but often present new challenges that are unique to cross-platform development.
There are several considerations we make when taking on a new cross-platform development project.
- What is the security environment?
- Is there an IT/IS infrastructure available and what are its core technologies and requirements?
- What are the hardware limitations?
- What deployment options are available?
- Is custom hardware involved?
The answers to these questions often lead to more questions but ultimately help us narrow down our choice of technologies for a project and hopefully avoid major redesign and rework at a later time.
Web platforms have converged on the HTML/CSS/JS stack as the most popular front-end toolchain for developing cross-browser applications. The server-side aspect is largely independent and can fall to whatever technology is best suited for the character of the data being served, provided that the interface is understood. I’ve purposely avoided versions with the stack such as HTML5 or CSS3 because that is where the cross-browser support starts to break down as older browsers may not support particular versions of the technology. We support this stack at Duotech for several reasons.
- Consistency: It delivers the most consistent look and feel across browsers with minimal specialization.
Cross-platform development is an issue that was once relegated to the large software developers that wanted to get their product on every system and could afford to throw resources at dual development. Today, even the most simple software projects may be expected to run on multiple platforms. Our current considerations and tools provide us with the ability to meet the needs of small and large cross-platform projects. However, it’s important that we continue to research and evaluate newer technologies while balancing the need to master the current ones.