virt-v2v is a production-grade virtual machine conversion tool that converts guests from foreign hypervisors (VMware vSphere/ESXi, Xen, Hyper-V, OVA, disk images) to run on KVM/libvirt. It supports multiple input sources (local disk, libvirt-managed guests, OVA archives, VMware VMX, vCenter HTTPS, VDDK, NFC, Xen over SSH) and output targets (local disk, libvirt, QEMU, oVirt/RHV, OpenStack, KubeVirt, VDSM, Glance, null). The conversion process inspects the guest OS (Linux, Windows) using libguestfs, injects virtio drivers for Windows, adjusts boot configuration, remaps block devices and network interfaces, and generates appropriate metadata (OVF, libvirt XML, KubeVirt YAML). It uses nbdkit as a universal disk access layer, enabling parallel copy via nbdcopy and efficient sparse allocation. The codebase is written primarily in OCaml with C stubs and embedded Python scripts for oVirt API interactions. It features a modular architecture with well-defined input/output module signatures, shared library components (NBD_URI, nbdkit wrapper, OVF generation, YAML emitter), and an extensive test suite covering real and phony guest conversions. The project is part of the libguestfs ecosystem and is actively maintained with recent commits, CI/CD via GitHub Actions, and internationalization support.
Exposed is a Kotlin SQL ORM library by JetBrains that provides a type-safe DSL for database operations, an optional DAO/entity layer, schema migration tooling, and multi-database support. The architecture is modular: a core module (exposed-core) defines the SQL DSL, column types, expression trees, and vendor dialects; separate modules implement synchronous JDBC (exposed-jdbc) and reactive R2DBC (exposed-r2dbc) backends; the DAO layer (exposed-dao, exposed-dao-r2dbc) adds entity management with caching, relationships, and lifecycle hooks; additional modules provide encryption, JSON, money types, Spring Boot auto-configuration, and Gradle/Maven plugins for migration generation. The library supports H2, MySQL, MariaDB, PostgreSQL, Oracle, SQL Server, SQLite, and Amazon Redshift, with extensive dialect-specific SQL generation and type mapping. Key entry points include Database.connect() for JDBC and R2dbcDatabase.connect() for R2DBC, transaction scopes (transaction {} / suspendTransaction {}), table/column definitions via DSL functions, and entity classes (IntEntity, UuidEntity, etc.) for the DAO pattern. Data flows through a query builder that constructs parameterized SQL statements, which are then executed by backend-specific executables (BlockingExecutable for JDBC, SuspendExecutable for R2DBC). The library also provides statement interceptors for logging and monitoring, and a migration utility that can generate Flyway-compatible scripts from table definitions. External dependencies include JDBC drivers for each supported database, R2DBC drivers, Spring Framework (for the Spring Boot starters and transaction integration), and optional libraries for encryption (AES, BCrypt, Argon2). The build system is Gradle with Kotlin DSL, and the project publishes multiple artifacts to Maven Central. The codebase demonstrates strong engineering practices with extensive cross-database test suites, parameterized tests, and continuous integration across multiple database containers.
Jimmy is a command-line and terminal UI tool for converting notes from 50+ note-taking applications (Evernote, Obsidian, Joplin, Notion, Bear, etc.) into a unified Markdown format. It uses an intermediate representation (Notebook/Note/Resource/Tag objects) decoupled from input parsing and output writing, allowing clean extensibility. The architecture is a plugin-style converter framework with a rich set of format-specific parsers, markdown preprocessing libraries, and a resource deduplication system. The tool is distributed as standalone binaries bundling Pandoc and other dependencies. While the core abstractions are well-crafted, the vast majority of the codebase consists of tightly coupled format converters that are specific to each app's export schema, limiting general reuse. The project has extensive integration tests via a test data submodule, but many converters lack unit tests. Its requirement for Python 3.14 (a very recent version) and reliance on external binaries (Pandoc, one2html) introduce drift risks.