Tech Transfer from Old Languages to GO and Rust
Tags: rust, go, discuss, review
Published: 2024-06-08 15:11:05


## Preface

Recently, I have come across news that major technology companies are migrating their existing projects, originally written in languages such as C, C#, Java, and Python, to the GO programming language. I have also read articles about some tech companies transferring their projects to the Rust language, though this is happening less frequently than with GO.

## Reasons Driving Technology Transfers

Several key factors are driving the shift towards new programming languages in the tech industry. These include:

- Speed and Performance Concerns: Projects written in languages like Python2, Java, PHP, C#, and C often fail to meet the speed expectations of modern applications. Well-structured projects can be exceptions, but generally, performance is lacking.

- Scalability: As projects expand with evolving technologies, there is a growing preference for languages that inherently support scalability.

- Increasing Costs: The rising costs associated with developing across multiple technologies are prompting a shift towards faster programming languages like GO and Rust, which can address multiple needs efficiently.

- Reduced Development Time: Back-end structures that require thousands of lines of code in languages like Python2 can be significantly reduced when using GO and Rust. These languages allow for smaller microstructures, leading to faster development times. Features such as LSP support, autocorrection, ease of refactoring, and simple documentation make these languages stand out even more.

- Rapid Documentation: Project documentation can be swiftly created using static site generators like Hugo and Mdbook, facilitating easy sharing of project information.

- Ease of Learning: Coding standards in these languages contribute to easier learning curves for developers.


## Rewriting in Rust

I first encountered the concept of migrating well-known projects to GO and Rust languages on a Russian developer forum. While browsing the forum, I stumbled upon this idea through a slogan and a project poster. Here is the visual of the project:



![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ntgf1xo21je99hhpw8v1.png)


The project's goal was to rewrite libraries and projects that were previously developed in other languages using Rust. To achieve this, the forum facilitated technology discussions among developers.

Similarly, there are GitHub communities dedicated to executing the same project for the GO language.

## Technology Transfers in Companies

During my internet research, I observed that various startups and large-scale technology companies are experimenting with GO and Rust languages in their new projects and gradually transitioning their existing projects to these languages. Notably, I found many companies migrating their existing projects from languages such as PHP and Java to Rust and GO.

Additionally, when searching Reddit forums for "company migration to <techname>", I discovered several posts written on this topic at various times. Below, I share with you one such Reddit post:


<blockquote class="reddit-embed-bq" style="height:316px" data-embed-height="316"><a href="https://www.reddit.com/r/golang/comments/15hztqt/company_migration_to_go/">Company migration to Go</a><br> by<a href="https://www.reddit.com/user/kekekepepepe/">u/kekekepepepe</a> in<a href="https://www.reddit.com/r/golang/">golang</a></blockquote><script async="" src="https://embed.reddit.com/widgets.js" charset="UTF-8"></script>

You can also find numerous articles on technology transfers on Medium. Here is a sample article:

[Our Journey: Moving from PHP to GO](https://medium.com/beyn-technology/our-journey-moving-from-php-to-go-4b4513f92e75)

Additionally, the **_YCombinator_** website features articles on various related topics.

[Programming Languages: From Python to 500,000 Lines of GO - How One Organization is Making a Big Switch](https://www.zdnet.com/article/programming-languages-from-python-to-500000-lines-of-go-how-one-organization-is-making-a-big-switch/)

Moreover, Khan Academy details the process of completely transferring their backend code from Python2 to the GO language.

## GO Case Studies

You can find articles detailing various processes on the official GO programming language website:

[GO Solutions and Case Studies](https://go.dev/solutions/case-studies)

In addition to these, hundreds of companies, both large and small, are experimenting with GO and Rust languages in various projects every day. However, due to the confidentiality of internal company information, I cannot share details that companies have not officially disclosed. If you are active on social platforms such as LinkedIn, Twitter, and Reddit, you can also find this information there.

## Project Transfer Stages

During the transfer stages, auxiliary teams are typically established to work in parallel with the existing teams. Think of it like a railway system: to change the rail line without derailing the train or halting services, a second line is constructed alongside the original, with a secondary switch connection. Once the new line is complete, the first line is bypassed and deactivated. Many companies find this method more cost-effective, allowing them to smoothly transition their current projects to new technology.

Another transfer method involves decommissioning projects that are outdated or lack necessary features, then rewriting them in GO and Rust languages before putting them back into operation. These rewritten projects, especially those requiring load balancing and scalability, are maintained and re-released in their GO and Rust versions.

Libraries Becoming Richer Day by Day
Although GO and Rust do not yet have as extensive internet libraries as common languages like Python and JavaScript, these libraries are being continuously transferred and incorporated into projects. For instance, you can now find GO and Rust versions of web scrapers or machine learning libraries originally written in Python. These can be obtained from the following websites:

- GO: [pkg.go.dev](https://pkg.go.dev/)
- Rust: [crates.io](https://crates.io/)


## Advantages and Disadvantages

> **DISCLAIMER:** This article originally written in Turkish language for Turkish developers.This part contains the review for Turkish developers. So if you are not interested in this part you can pass it.

- Enhancing Interactive Discussion Platforms: Social media platforms like Twitter, Twitch, Reddit, and YouTube, as well as Discord servers, are experiencing a surge in active discussions and information sharing.

- Insufficient Local Turkish Platforms: Turkey currently lacks an adequate number of community and discussion platforms. In countries known for technology production such as Japan, Russia, Germany, India, Brazil, Spain, and the UAE, local language blogs and community websites have been established since 2012 and are now active.

- Increasing Community Support: While community support for GO and Rust is not as widespread as it is for languages like Python, JavaScript, and React, it is steadily growing. Promotional activities and developer gatherings, especially events like GopherCON, are contributing to this expansion.

- Absence of Turkish E-Books: Despite the existence of over 50 books published in English, there are currently no e-books or printed publications available in Turkish.

## Conclusion 

In this article, I have endeavored to provide a concise overview and promote awareness regarding technology transfers involving GO and Rust programming languages. It is important to note that this perspective is subjective and subject to discussion. As the development process progresses with diverse languages and technologies, it is possible that we may encounter additional programming languages in the future.

I sincerely appreciate your time and consideration in reading my article in its entirety. We look forward to welcoming you in our upcoming articles.