# ADR-013 — زبان و framework را از کجا انتخاب کنیم؟

How do we choose languages and frameworks?

Status: proposed · Date: 2026-10-15

## مسئله / Context

پیش‌نویس Java/Python را نام برده، ولی مهارت تیم، زمان و قرارداد adapter هنوز بررسی نشده‌اند.

The draft names Java/Python, but team skills, schedule, and adapter contracts have not been assessed.

## گزینه‌ها / Alternatives

Python-only؛ Java-only؛ Java API با Python adapter.

Python-only, Java-only, or Java API with Python adapters.

## انتخاب فعلی / Choice

انتخابِ پلتفرم هنوز باز است؛ یک slice کوچک را با گزینه‌های قابل‌نگهداری مقایسه کنیم. Java در مثال‌های درس سابقه دارد، نه الزامِ پلتفرم.

Platform implementation choice is open: compare a small slice using maintainable options. Existing Java teaching examples do not mandate the platform language.

## چرایی و trade-off / Rationale and trade-off

یک زبان راه‌اندازی ساده‌تری دارد؛ دو زبان دسترسی به ecosystem را بهتر ولی deployment و debugging قراردادها را پیچیده‌تر می‌کند.

One language simplifies setup; two improve ecosystem access but complicate deployment and contract debugging.

## فرض‌ها / Assumptions

مهارت تیم، محدودیت host و هزینهٔ نگهداری هنوز ورودی ندارند.

Team skills, host constraints, and maintenance costs are unknown.

## روش آزمون / Validation

یک endpoint و worker با همان contract؛ زمان توسعه، integration test، پکیج و trace مقایسه شود.

Compare endpoint/worker slices under one contract for development effort, integration tests, packaging, and tracing.

## بازنگری / Revisit

وقتی نیازِ library یا ظرفیت واقعی انتخاب فعلی را محدود کرد، ADR تازه ثبت شود.

Revisit when required libraries or measured capacity constrain the choice.

DDIA: 1, 2, 5
