CASE STUDY: UTILITARIAN DESKTOP BROWSER APPLICATION
The client had already developed a suite of popular utilitarian browser extensions, including an internet speed checker, spelling checker, ad blocker, and VPN client. Their next ambition was to elevate user experience by creating a proprietary browser that seamlessly integrated these extensions. The envisioned browser needed to not only streamline these functionalities but also incorporate features expected from leading browsers in the market. Given that the existing extensions were designed for Google Chrome, the obvious choice was to build the new browser on the Chromium project foundation.
OUR ROLE
We took on the responsibility of leading the browser's development. The primary challenges involved rebranding, integrating automated updates, and establishing a process for maintaining synchrony with Chromium. We also made UI and UX modifications and additions. On the client side, we coordinated with a team of frontend developers and a cohort of manual testers. We held weekly cross-team meetings with our client to share our progress and plan the upcoming development steps. Internal communication primarily happened through code reviews and chat, meeting via voice when needed, to coordinate our work on specific larger tasks. We utilized team-managed Jira to organize our work and communicate our progress.
REBRANDING
The rebranding process began by forking the Chromium browser and hosting the repository with a popular provider. We initiated the process by eliminating all references to Chrome or Chromium and replacing it with a new browser name. We implemented a Python script that automatically made modifications in all relevant places. The next step involved replacing all logo graphics and updating the paths in the source code. We have also removed or substituted many links to Chrome's support pages spattered around the Chromium codebase.
These steps provided a basic take on Chromium rebranding. We also assisted with revamping the UIs for most WebUI pages, including welcome, settings, download, history, bookmarks, etc.
AUTOMATED UPDATES
All the popular web browsers update themselves consistently in the background. The solution combines a server-side application and a client-side component. The client-side component periodically checks for new versions with the server-side app, downloads them and installs. We integrated such component into the browser for both Windows and Mac platform.
INSTALLER
We provided an installer, which bundled browser application files and the update client program to enable automatic updates. It also incorporated extra steps such as transmitting a referral code through an HTTP API and analytics data to anonymously track installations.
CHROMIUM UPDATES
Chromium is being updated very frequently. We had to efficiently keep in sync with the latest upstream version.
Why do we need it?
1. The imperative of any user application is its security. Keeping browser application secure is particularily challenging, as it executes code of external web applications. Chromium accounts for this by running a sandboxed process for every tab. The process has strictly controlled and limited access to OS resources. Even with this precaution, Chromium had certain vulnerabilities in the past, which were exploited by malicious web applications. Chromium often releases security updates and it is vital to apply them as soon as they are made available.
2. Web standards are evolving and rendering engine has to keep up with it. The cost of maintaining it separately is exorbitant.
How we did it?
With every other major Chromium version we have run a rebase process in a version control system. We also had a schedule to apply minor security patches every 2-3 weeks.
This way we ensured our browser was secure and supported the recent developments in web technologies.
CONCLUSION
We successfully tackled challenges such as rebranding, integrating automated updates, and keeping the browser application up to date with Chromium. The browser application was ready for release in about 6 months for both Windows and Mac platforms.