# Is OfficeCLI Open Source? A Complete Guide to Contributing

> Yes OfficeCLI is open source under the MIT license. Learn how to contribute to the iOfficeAI OfficeCLI project by reviewing our GitHub pull request workflow.

- Repository: [OfficeAI/OfficeCLI](https://github.com/iofficeai/OfficeCLI)
- Tags: how-to-guide
- Published: 2026-07-26

---

**OfficeCLI is open-source software released under the MIT license**, allowing anyone to use, modify, and distribute the code, with contributions managed through GitHub pull requests following the workflow outlined in [`CONTRIBUTING.md`](https://github.com/iOfficeAI/OfficeCLI/blob/main/CONTRIBUTING.md).

OfficeCLI is an open-source command-line interface that enables developers to create, edit, and manage Office documents programmatically. Hosted publicly on GitHub under the permissive MIT license, the project welcomes community contributions to its Core CLI, multi-language SDK, and documentation. Understanding the repository structure and contribution workflow is essential for developers looking to add features or fix bugs.

## License and Open Source Status

The project is explicitly open source, governed by the **MIT license** found in the repository root at `LICENSE`. This permissive license grants users the right to use, copy, modify, merge, publish, distribute, sublicense, and sell copies of the software. As an open-source project, OfficeCLI accepts contributions from individual developers and organizations without requiring a contributor license agreement (CLA).

## Repository Architecture

The codebase is organized into distinct logical layers, each with specific responsibilities and entry points:

- **Core CLI**: The C# entry point that parses commands and invokes SDK functions. Key file: `src/officecli/officecli.csproj`.

- **SDK**: Language-agnostic APIs for C#, TypeScript, and Python that interact with Office file formats. Key file: [`sdk/node/index.d.ts`](https://github.com/iOfficeAI/OfficeCLI/blob/main/sdk/node/index.d.ts).
- **Examples**: Ready-to-run scripts demonstrating CLI capabilities. Key files: [`examples/word/textbox.sh`](https://github.com/iOfficeAI/OfficeCLI/blob/main/examples/word/textbox.sh) and [`examples/word/textbox.py`](https://github.com/iOfficeAI/OfficeCLI/blob/main/examples/word/textbox.py).
- **Build & Install**: Cross-platform compilation and installation helpers. Key files: [`install.sh`](https://github.com/iOfficeAI/OfficeCLI/blob/main/install.sh) (macOS/Linux) and `install.ps1` (Windows).
- **Documentation**: Project guidelines and policies. Key files: [`README.md`](https://github.com/iOfficeAI/OfficeCLI/blob/main/README.md), [`CONTRIBUTING.md`](https://github.com/iOfficeAI/OfficeCLI/blob/main/CONTRIBUTING.md), and [`SECURITY.md`](https://github.com/iOfficeAI/OfficeCLI/blob/main/SECURITY.md).

## How to Contribute to OfficeCLI

### Setting Up Your Development Environment

Begin by forking the repository on GitHub, then clone your fork locally. Run the platform-specific installation script to compile the CLI and verify your environment:

```bash

# Unix/Linux/macOS

./install.sh

# Windows PowerShell

.\install.ps1

```

After installation, explore the `examples/` directory to understand the SDK's public API and CLI command patterns. Run the example scripts to validate your setup:

```bash
./examples/word/textbox.sh input.docx output.docx "Hello, OfficeCLI!"

```

This script internally calls `officecli word textbox --text "Hello, OfficeCLI!" input.docx output.docx`, demonstrating how the CLI maps high-level actions to SDK calls.

### Contribution Workflow

Follow these steps to submit changes to the OfficeCLI open-source project:

1. **Read the contribution guide** at [`CONTRIBUTING.md`](https://github.com/iOfficeAI/OfficeCLI/blob/main/CONTRIBUTING.md), which outlines coding conventions, commit message style, and the pull-request process.
2. **Create a feature branch** for your bug fix or enhancement.
3. **Maintain code consistency** with existing patterns. The Core CLI follows standard **.NET conventions**, while the SDK adheres to **Node/TypeScript linting rules**.
4. **Add or update tests** to cover your modifications.
5. **Run CI workflows locally** by executing the checks defined in [`.github/workflows/skill-parity.yml`](https://github.com/iOfficeAI/OfficeCLI/blob/main/.github/workflows/skill-parity.yml) and [`.github/workflows/sdk-smoke.yml`](https://github.com/iOfficeAI/OfficeCLI/blob/main/.github/workflows/sdk-smoke.yml) to ensure your changes pass all validation gates.
6. **Open a Pull Request** against the `main` branch, linking any relevant issue with a clear description of changes.

### Code Quality Standards

Contributions must maintain cross-platform compatibility. CLI scripts are written in **Bash** or **PowerShell** to support macOS, Linux, and Windows environments. C# code in `src/officecli/` must follow .NET naming conventions and project structure, while TypeScript definitions in `sdk/node/` require strict typing alignment with [`index.d.ts`](https://github.com/iOfficeAI/OfficeCLI/blob/main/index.d.ts). Assets for documentation are stored in `assets/` and referenced via relative paths.

## Practical Code Examples

When contributing new features, reference the existing Python SDK patterns. Below is an example of the object-oriented API structure found in [`examples/word/textbox.py`](https://github.com/iOfficeAI/OfficeCLI/blob/main/examples/word/textbox.py):

```python
from officecli import WordDocument

doc = WordDocument("input.docx")
doc.add_table(rows=3, cols=4, style="LightGrid")
doc.save("output.docx")

```

This demonstrates how the SDK mirrors CLI capabilities while allowing programmatic use. When adding features, ensure parity between the CLI arguments (handled in `src/officecli/`) and the SDK implementations.

## Summary

- **OfficeCLI is open source** under the MIT license, located in the `LICENSE` file at the repository root.
- **Contributions require** forking the repository, running [`install.sh`](https://github.com/iOfficeAI/OfficeCLI/blob/main/install.sh) or `install.ps1`, and following the workflow in [`CONTRIBUTING.md`](https://github.com/iOfficeAI/OfficeCLI/blob/main/CONTRIBUTING.md).
- **Architecture spans** C# Core CLI, multi-language SDK (TypeScript/C#/Python), and example scripts in `examples/`.

- **Quality gates** include local execution of CI workflows ([`skill-parity.yml`](https://github.com/iOfficeAI/OfficeCLI/blob/main/skill-parity.yml), [`sdk-smoke.yml`](https://github.com/iOfficeAI/OfficeCLI/blob/main/sdk-smoke.yml)) and adherence to .NET/TypeScript conventions.
- **Cross-platform support** is mandatory; all installation and build scripts must function on macOS, Linux, and Windows.

## Frequently Asked Questions

### What license is OfficeCLI released under?

OfficeCLI is released under the **MIT license**, as specified in the `LICENSE` file. This permissive open-source license allows commercial use, modification, distribution, and private use with minimal restrictions, requiring only that the original copyright notice and license terms be included with any substantial portions of the code.

### Do I need to sign a contributor license agreement (CLA) to contribute?

No, the project does not require a Contributor License Agreement (CLA). Under the MIT license terms, contributors retain copyright to their submissions while granting the project the rights to use and distribute the code. Simply follow the guidelines in [`CONTRIBUTING.md`](https://github.com/iOfficeAI/OfficeCLI/blob/main/CONTRIBUTING.md) and submit your pull request through GitHub.

### What programming languages are used in OfficeCLI?

The project uses **C#** for the Core CLI (`src/officecli/officecli.csproj`), **TypeScript/JavaScript** for the Node SDK ([`sdk/node/index.d.ts`](https://github.com/iOfficeAI/OfficeCLI/blob/main/sdk/node/index.d.ts)), **Python** for alternative SDK bindings, and **Bash/PowerShell** for build and installation scripts. Contributors should be familiar with .NET conventions for CLI changes and Node.js patterns for SDK modifications.

### How do I test my changes before submitting a pull request?

Run the platform-specific install script to compile the project locally, then execute the relevant example scripts (such as [`examples/word/textbox.sh`](https://github.com/iOfficeAI/OfficeCLI/blob/main/examples/word/textbox.sh)) to verify functionality. Additionally, run the continuous integration checks locally using the workflow files in [`.github/workflows/skill-parity.yml`](https://github.com/iOfficeAI/OfficeCLI/blob/main/.github/workflows/skill-parity.yml) and [`.github/workflows/sdk-smoke.yml`](https://github.com/iOfficeAI/OfficeCLI/blob/main/.github/workflows/sdk-smoke.yml) to ensure your changes do not break existing functionality across supported platforms.