|
| 1 | +# Contributing to OpenStacks |
1 | 2 |
|
2 | | -# CONTRIBUTING to FieldStack |
| 3 | +Thank you for your interest in contributing to [OpenStacks for Change](https://openstacks.dev). This guide applies to all repositories in the ecosystem. |
3 | 4 |
|
4 | | -Thank you for your interest in contributing! This project is open to improvements from researchers, MEL professionals, and developers. |
| 5 | +## Who Can Contribute |
5 | 6 |
|
6 | | ---- |
| 7 | +OpenStacks welcomes contributions from: |
7 | 8 |
|
8 | | -## 📦 Setup Instructions |
| 9 | +- **Development practitioners** — Share tools, templates, and workflows from your own work (anonymised) |
| 10 | +- **Researchers and evaluators** — Contribute analysis scripts, methodologies, and replication files |
| 11 | +- **Data analysts and engineers** — Improve code quality, add tests, fix bugs |
| 12 | +- **Writers and editors** — Improve documentation, add use case guides, fix errors |
| 13 | +- **Students** — Practice with real-world development data and contribute improvements |
9 | 14 |
|
10 | | -1. Clone the repo: |
11 | | - ``` |
12 | | - git clone https://github.com/Varnasr/FieldStack.git |
13 | | - ``` |
| 15 | +## How to Contribute |
14 | 16 |
|
15 | | -2. Open the project in RStudio |
| 17 | +### Reporting Issues |
16 | 18 |
|
17 | | -3. Install required packages: |
18 | | - ```R |
19 | | - install.packages(c("tidyverse", "sf", "testthat", "flexdashboard", "readxl")) |
20 | | - ``` |
| 19 | +- Use the repository's **Issues** tab to report bugs, suggest features, or ask questions |
| 20 | +- Check existing issues first to avoid duplicates |
| 21 | +- Use issue templates where available |
21 | 22 |
|
22 | | ---- |
| 23 | +### Submitting Changes |
23 | 24 |
|
24 | | -## 🧪 Testing |
| 25 | +1. **Fork** the repository |
| 26 | +2. **Create a branch** for your change (`git checkout -b feature/your-feature-name`) |
| 27 | +3. **Make your changes** with clear, descriptive commit messages |
| 28 | +4. **Test your changes** — ensure scripts run and notebooks execute without errors |
| 29 | +5. **Submit a pull request** with a clear description of what you changed and why |
25 | 30 |
|
26 | | -Test scripts live in `tests/`. Run all tests with: |
27 | | -```R |
28 | | -library(testthat) |
29 | | -test_dir("tests") |
30 | | -``` |
| 31 | +### What Makes a Good Contribution |
31 | 32 |
|
32 | | ---- |
| 33 | +- **Self-contained** — Scripts should work independently with sample data |
| 34 | +- **Documented** — Include comments, a header description, and usage instructions |
| 35 | +- **Anonymised** — Never include real participant data, names, or identifying information |
| 36 | +- **Reproducible** — Include sample data or clear instructions for obtaining test data |
| 37 | +- **Tested** — Verify that your code runs without errors |
33 | 38 |
|
34 | | -## 📄 Contribution Guidelines |
| 39 | +## Contribution Ideas by Stack |
35 | 40 |
|
36 | | -- Fork and create a branch for your edits |
37 | | -- Add clear comments and minimal examples |
38 | | -- Document new functions in README if relevant |
39 | | -- Submit a pull request with a brief description |
| 41 | +| Stack | Good Contributions | |
| 42 | +|-------|-------------------| |
| 43 | +| **InsightStack** | MEL calculators, Stata/SPSS scripts, research templates | |
| 44 | +| **FieldStack** | R notebooks, survey tools, evaluation frameworks | |
| 45 | +| **EquityStack** | Python scripts, Jupyter notebooks, data workflows | |
| 46 | +| **SignalStack** | Research tool recommendations, method spotlights | |
| 47 | +| **RootStack** | Database schemas, seed data, SQL queries | |
| 48 | +| **BridgeStack** | FastAPI endpoints, data models, API tests | |
| 49 | +| **ViewStack** | Frontend components, chart templates, dashboard designs | |
| 50 | +| **PolicyStack** | Policy data, budget analysis scripts, government data scrapers | |
40 | 51 |
|
41 | | ---- |
| 52 | +## Code Style |
42 | 53 |
|
43 | | -We especially welcome: |
44 | | -- Localised notebooks for India/South Asia context |
45 | | -- Additional visualisation or dashboard tools |
46 | | -- Translations, data ethics guidance, or mix-methods integrations |
| 54 | +- **Python:** Follow PEP 8. Use descriptive variable names. |
| 55 | +- **R:** Follow the tidyverse style guide. Use snake_case. |
| 56 | +- **Stata:** Use clear variable labels and value labels. |
| 57 | +- **Markdown:** Use ATX-style headers (`#`). Keep lines under 120 characters. |
| 58 | + |
| 59 | +## Data Standards |
| 60 | + |
| 61 | +- Use **CSV** for tabular data (UTF-8 encoding) |
| 62 | +- Include a **data dictionary** or codebook for any new datasets |
| 63 | +- **Never commit** real participant data, credentials, or API keys |
| 64 | +- Use **sample_data/** directories for test datasets |
| 65 | + |
| 66 | +## Questions? |
| 67 | + |
| 68 | +Open an issue in the relevant repository or email varna.sr@gmail.com. |
| 69 | + |
| 70 | +## Code of Conduct |
| 71 | + |
| 72 | +All contributors are expected to follow our [Code of Conduct](CODE_OF_CONDUCT.md). |
0 commit comments