bg_image
header

Monorepo

A monorepo (short for "monolithic repository") is a single version control repository (such as Git) that stores the code for multiple projects or services. In contrast to a "multirepo," where each project or service is maintained in its own repository, a monorepo contains all projects in one unified repository.

Key Features and Benefits of a Monorepo:

  1. Shared Codebase: All projects share the same codebase, making collaboration across teams easier. Changes that affect multiple projects can be made and tested simultaneously.

  2. Simplified Code Synchronization: Since all projects use the same version history, it's easier to keep shared libraries or dependencies consistent.

  3. Code Reusability: Reusable modules or libraries can be shared more easily between projects within a monorepo.

  4. Unified Version Control: There's centralized version control, so changes in one project can immediately impact other projects.

  5. Scalability: Large companies like Google and Facebook use monorepos to manage thousands of projects and developers within a single repository.

Drawbacks of a Monorepo:

  • Build Complexity: The build process can become more complex as it needs to account for dependencies between many different projects.

  • Performance Issues: With very large repositories, version control systems like Git can slow down as they struggle with the size of the repo.

A monorepo is especially useful when various projects are closely intertwined and there are frequent overlaps or dependencies.

 


HHVM - HipHop Virtual Machine

HHVM stands for "HipHop Virtual Machine" and is a virtual machine developed by Facebook. HHVM was originally developed to improve the performance of PHP applications, especially for large and complex applications running on the Facebook platform. Here are some key points about HHVM:

  1. Aim and Purpose: HHVM was developed to execute PHP applications more efficiently. PHP is a widely used scripting language often used for web application development. HHVM aimed to boost the performance of PHP applications, especially for high-traffic websites like Facebook.

  2. Just-In-Time (JIT) Compilation: HHVM uses Just-In-Time compilation to translate PHP code into machine-readable code. This enables faster execution of PHP code compared to traditional interpretation.

  3. Hack Programming Language: In parallel with HHVM development, Facebook also created the Hack programming language. Hack is a statically typed extension of PHP that runs on HHVM. Hack adds additional features to PHP, such as static typing, and enhances error detection and prevention capabilities.

  4. Facebook Application: HHVM was originally designed for running Facebook applications and was a crucial part of Facebook's infrastructure. It significantly improved the execution speed of PHP applications and reduced resource consumption.

  5. Open Source: HHVM is an open-source project available to the public. Developers can download and use it to accelerate their own PHP or Hack applications.

However, it's worth noting that Facebook has decided not to actively use HHVM for running PHP applications anymore. Instead, Facebook has focused on using PHP 7 and later versions, which themselves brought significant performance improvements. Nonetheless, HHVM is still maintained as an open-source project and is used by other developers and organizations looking to benefit from its features.

 


GraphQL

GraphQL

GraphQL is a query language and runtime environment developed to create more efficient, flexible, and performant Application Programming Interfaces (APIs). It was created by Facebook and was initially used internally in 2012 before being made available to the public in 2015.

In contrast to traditional REST APIs, where the client calls various endpoints to retrieve or manipulate different resources, GraphQL allows the client to request precisely the data it needs, all in a single query. This minimizes overfetching (retrieving too much data) and underfetching (retrieving too little data), reducing network latency and improving data transmission efficiency.

GraphQL provides the following key features:

  1. Flexibility: The client defines the required data in the query, allowing it to retrieve only the fields needed and avoiding wasting bandwidth or processing time on unnecessary data.

  2. Type System: GraphQL defines a schema that describes the data structure. This allows for a clear definition of what data can be queried and what relationships exist between the data.

  3. Queries and Mutations: GraphQL enables the grouping of queries (for reading data) and mutations (for changing data) within a single query, improving consistency and performance.

  4. Real-time Communication: GraphQL supports subscriptions, allowing real-time response to changes and receiving push notifications from servers.

  5. Development Tools: GraphQL offers powerful development tools such as introspection, allowing developers to explore and verify the schema.

GraphQL is used by many major companies and platforms, including Facebook, GitHub, Shopify, and more. It has proven to be a powerful alternative to traditional REST APIs and is often employed in modern applications and services to enhance the efficiency and flexibility of data querying and manipulation.