π Translation: Translated from Korean.
Open Source Project Pre-Release Checklist: From Project Organization to License Compliance
TL;DR
- Problem: Scattered files + license violation risk before GitHub release
- Solution: Project structure reorganization + Apache-2.0 attribution
- Result: 22 files organized (history preserved), perfect license compliance
1. Beginning: “Almost Violated License While Going Public”
The moment I was about to publish my WordPress automation blog project on GitHub, I discovered a critical issue.
Situation:
- 16 .md files scattered in the root directory
- 3 workflow files copied from another open source project
- No attribution β Apache-2.0 license violation risk
“If I publish this as is, there could be legal issues…”
2. Phase 1: Project Structure Organization
2.1 Problem: Scattered .md Files
blog/
βββ README.md
βββ CLAUDE.md
βββ WORKFLOW-GUIDE.md
βββ WRITING-CHECKLIST.md
βββ TRANSLATION-PATTERNS.md
βββ POLYLANG-AUTO-LINK-SPEC.md
βββ TRANSLATION-PROJECT-SUMMARY.md
βββ WORK_LOG.md
βββ create-prd.md
βββ generate-tasks.md
βββ process-task-list.md
βββ ... (more .md files)
Why is this a problem?
- Unclear which files are important
- Users struggle to understand the project
- Collaboration and maintenance become inconvenient
2.2 Solution: Designing docs/ Hierarchy
Goal: Clean root, systematic documentation
blog/
βββ README.md # Project overview
βββ CLAUDE.md # Claude Code work guide
βββ CHANGELOG.md # Change log
βββ ISSUES.md # Issue tracking
β
βββ docs/ # All documentation here
βββ guides/ # User guides
β βββ WORKFLOW-GUIDE.md
β βββ WRITING-CHECKLIST.md
β βββ TRANSLATION-PATTERNS.md
βββ specs/ # Technical specs
β βββ POLYLANG-AUTO-LINK-SPEC.md
βββ archive/ # Completed work documents
β βββ prds/
β βββ tasks/
βββ prompts/ # AI prompt templates
2.3 Execution: Preserving History with git mv
Key Tip: Use git mv instead of mv!
# β Wrong way: History loss
mv WORKFLOW-GUIDE.md docs/guides/
# β
Right way: History preserved
git mv WORKFLOW-GUIDE.md docs/guides/
Why is this important?
git mvpreserves the file’s entire change history- You can track history even after moving with
git log --follow - When collaborating, you can know “who wrote this code and why”
Actual Work:
# 1. Create docs/ subdirectories
mkdir -p docs/guides docs/specs docs/archive/prds docs/archive/tasks docs/prompts
# 2. Move guide files
git mv WORKFLOW-GUIDE.md docs/guides/
git mv WRITING-CHECKLIST.md docs/guides/
git mv TRANSLATION-PATTERNS.md docs/guides/
# 3. Move spec files
git mv POLYLANG-AUTO-LINK-SPEC.md docs/specs/
# 4. Archive completed work documents
git mv TRANSLATION-PROJECT-SUMMARY.md docs/archive/
git mv WORK_LOG.md docs/archive/
git mv tasks/9.0-prd-auto-translation-system.md docs/archive/prds/
git mv tasks/tasks-9.0-prd-auto-translation-system.md docs/archive/tasks/
# 5. Move entire prompts/ folder
git mv prompts docs/
Result: 22 files organized (100% history preserved)
2.4 README.md Update
Added project structure section for immediate user understanding:
## π Project Structure
blog/
βββ packages/ # Source code (TypeScript, monorepo)
β βββ cli/ # CLI tool (user interface)
β βββ core/ # Core logic (WordPress API, translation, images)
β βββ shared/ # Shared types and utilities
β
βββ content/ # Blog content (markdown)
β βββ posts/ # Blog posts (ko/, en/)
β βββ pages/ # Static pages
β βββ templates/ # Post templates
β
βββ docs/ # Project documentation
β βββ guides/ # User guides
β βββ specs/ # Technical specs
β βββ archive/ # Completed work documents
β βββ prompts/ # AI prompt templates
β
βββ README.md # This file
3. Phase 2: Apache-2.0 License Compliance
3.1 Problem: Missing Attribution
While reviewing the project, I made a critical discovery:
# .gitignore
create-prd.md # β Copied from another repository
generate-tasks.md # β Copied from another repository
process-task-list.md # β Copied from another repository
Original Source: ai-dev-tasks
License: Apache-2.0
Problem: No attribution β License violation!
3.2 Apache-2.0 License Requirements
Apache-2.0 is a permissive license, but it has several obligations:
3 Mandatory Requirements:
- β Original copyright notice
- β License notice
- β Modifications notice
Optional:
- Provide NOTICE file (recommended)
- Patent use notice (if applicable)
3.3 Solution: Adding Attribution Headers
Added attribution headers at the top of each file:
<!--
Original source: https://github.com/snarktank/ai-dev-tasks
Copyright: Original authors of ai-dev-tasks
License: Apache-2.0 (https://www.apache.org/licenses/LICENSE-2.0)
Modified by: idongho for Korean blog automation project
Modifications:
- Added AskUserQuestion tool integration for Claude Code interactive interface
- Adapted PRD template for Korean blog automation workflow
- Enhanced clarifying questions process with structured options
-->
# Rule: Generating a Product Requirements Document (PRD)
...
Added to 3 files:
create-prd.md– PRD generation guidegenerate-tasks.md– Task generation guideprocess-task-list.md– Task management guide
3.4 Adding Credits Section to README.md
Added Credits section above the license section:
## π Credits
This project uses workflow templates from [ai-dev-tasks](https://github.com/snarktank/ai-dev-tasks) licensed under Apache-2.0.
**Modified files**:
- `create-prd.md` - PRD generation guide adapted for Korean blog automation with AskUserQuestion tool integration
- `generate-tasks.md` - Task generation guide with enhanced testing requirements
- `process-task-list.md` - Task management guide with strengthened test execution policy
Original license: [Apache-2.0](https://github.com/snarktank/ai-dev-tasks/blob/main/LICENSE)
3.5 Commit and Push
git add README.md
git commit -m "docs: Apache-2.0 λΌμ΄μ μ€ attribution μΆκ°
- README.mdμ Credits μΉμ
μΆκ°
- ai-dev-tasks μ μ₯μ μΆμ² λͺ
μ λ° μμ νμΌ λͺ©λ‘ μμ±
- λ‘컬 μν¬νλ‘μ° νμΌ 3κ°μ attribution ν€λ μΆκ°
μλ³Έ μΆμ²: https://github.com/snarktank/ai-dev-tasks
λΌμ΄μ μ€: Apache-2.0"
git push
4. Pre-GitHub Release Checklist
π Project Organization
- Keep only essential files in root directory (README, LICENSE, etc.)
- Design docs/ hierarchy (guides/, specs/, archive/)
- Move files with
git mv(preserve history) - Add project structure section to README.md
- Update .gitignore (sensitive information, personal files)
π License Compliance
- List all open source libraries/code used
- Check each license requirement (MIT, Apache-2.0, GPL, etc.)
- Add attribution headers (Apache-2.0, GPL)
- Add Credits section to README.md
- Create LICENSE file (your project license)
π Security
- Verify .env file is in .gitignore
- Remove API keys and passwords
- Check Git history for sensitive information
- Provide .env.example file
π Documentation
- Write README.md (installation, usage, contribution guide)
- Write CHANGELOG.md
- Write CONTRIBUTING.md (collaboration guide)
- Add comments to code
5. Lessons Learned
5.1 The Importance of git mv
Before:
mv old.md new.md
git add new.md
β Git recognizes it as a new file, history lost
After:
git mv old.md new.md
β Git recognizes it as a move, history preserved
Verification:
git log --follow new.md # Shows history before the move too
5.2 License Compliance is a Legal Obligation
Not “I’ll do it later” but do it right from the start.
- Apache-2.0: attribution + modification notice
- MIT: copyright notice
- GPL: source code disclosure obligation
5.3 Project Structure is the Beginning of Collaboration
Clean structure = Low entry barrier = More contributors
β
Good structure: Users understand within 5 minutes
β Bad structure: Users struggle for 30 minutes
6. Next Steps
β Completed:
- Project structure organization (22 files)
- Apache-2.0 license compliance
- README.md update
π§ In Progress:
- Writing CONTRIBUTING.md
- Setting up GitHub Actions CI/CD
- Adding issue templates
References
Open Source Licenses
- Choose a License – License selection guide
- Apache-2.0 License – Full text
- TLDRLegal – License summaries
Git Best Practices
Project Structure
- Standard Readme – README writing guide
- Changelog Convention – CHANGELOG writing rules
Did you find this post helpful?
If you’re preparing to release a GitHub project, use this checklist to safely publish without license violations!
Please leave any questions or suggestions in the comments. π
Leave A Comment