botserver/docs/src/chapter-07-gbapp/philosophy.md

280 lines
6.9 KiB
Markdown
Raw Normal View History

2025-11-24 08:42:58 -03:00
# The gbapp Philosophy: Let Machines Do Machine Work
## Core Principle: Automation First
In 2025, the gbapp philosophy is simple and powerful:
**"If a machine can do the work, let it do the work."**
## The Hierarchy of Development
### 1. LLM First (90% of cases)
Let AI write the code for you:
```basic
' Don't write complex logic - describe what you want
result = LLM "Generate a function that validates email addresses and returns true/false: " + email
```
### 2. BASIC for Flow Control (9% of cases)
Use BASIC only for orchestration:
```basic
' BASIC is just glue between AI calls
data = GET "api/data"
processed = LLM "Process this: " + data
SET "results", processed
```
### 3. Rust for Core Only (1% of cases)
Write Rust only when:
- Contributing new keywords to core
- Building fundamental infrastructure
- Optimizing critical performance paths
## What gbapp Really Is
**gbapp is NOT:**
- ❌ External plugin packages
- ❌ Separate npm modules
- ❌ A way to bypass BASIC
- ❌ Runtime extensions
**gbapp IS:**
- ✅ Virtual crates inside `src/`
- ✅ Rust modules that compile together
- ✅ The bridge between old and new thinking
- ✅ A familiar mental model for contributions
- ✅ A mindset: "Code through automation"
## Real-World Examples
### Wrong Approach (Old Thinking)
```javascript
// 500 lines of custom Node.js, Python or C# code for data validation
function validateComplexBusinessRules(data) {
// ... hundreds of lines of logic
}
```
### Right Approach (2025 Reality)
```basic
' 3 lines - let AI handle complexity
rules = GET "business-rules.txt"
validation = LLM "Validate this data against these rules: " + data + " Rules: " + rules
IF validation CONTAINS "valid" THEN TALK "Approved" ELSE TALK "Rejected: " + validation
```
## The Multi-SDK Reality
You don't need separate SDKs or plugins. Everything integrates through BASIC + LLM:
### Integrating Any API
```basic
' No SDK needed - just describe what you want
data = GET "https://server/data"
answer = LLM "Do a good report from this json: " + data
TALK data
```
### Working with Any Database
```basic
' No ORM needed - AI understands SQL
results = FIND "users", "all users who logged in today"
```
### Processing Any Format
```basic
' No parser library needed
xml_data = GET "complex.xml"
json = LLM "Convert this XML to JSON: " + xml_data
SET BOT MEMORY "processed_data", json
```
## When to Write Code
### Use LLM When:
- Processing unstructured data
- Implementing business logic
- Transforming between formats
- Making decisions
- Generating content
- Analyzing patterns
- **Basically: 90% of everything**
### Use BASIC When:
- Orchestrating AI calls
- Simple flow control
- Managing state
- Connecting systems
- **Just the glue**
### Use Rust When:
- Building new keywords in your gbapp virtual crate
- Creating a new gbapp module in `src/`
- System-level optimization
- Contributing new features as gbapps
- **Only for core enhancements**
## The gbapp Mindset
Stop thinking about:
- "How do I code this?"
- "What library do I need?"
- "How do I extend the system?"
Start thinking about:
- "How do I describe this to AI?"
- "What's the simplest BASIC flow?"
- "How does this help everyone?"
## Examples of Getting Real
### Data Enrichment (Old Way)
```javascript
// 1000+ lines of code
// Multiple NPM packages
// Complex error handling
// Maintenance nightmare
```
### Data Enrichmentay)
```basic
items = FIND "companies", "needs_enrichment=true"
FOR EACH item IN items
website = WEBSITE OF item.company
page = GET website
enriched = LLM "Extract company info from: " + page
SET "companies", "id=" + item.id, "data=" + enriched
NEXT
```
### Report Generation (Old Way)
```python
# Custom reporting engine
# Template systems
# Complex formatting logic
# PDF libraries
```
### Report Generation (Get Real Way)
```basic
data = FIND "sales", "month=current"
report = LLM "Create executive summary from: " + data
CREATE SITE "report", "template", report
```
## The Ultimate Test
Before writing ANY code, ask yourself:
1. **Can LLM do this?** (Usually YES)
2. **Can BASIC orchestrate it?** (Almost always YES)
3. **Do I really need Rust?** (Almost never)
## Benefits of This Approach
### For Developers
- 100x faster development
- No dependency management
- No version conflicts
- No maintenance burden
- Focus on business logic, not implementation
### For Organizations
- Reduced complexity
- Lower maintenance costs
- Faster iterations
- No vendor lock-in
- Anyone can contribute
### For the Community
- Shared improvements benefit everyone
- No fragmentation
- Consistent experience
- Collective advancement
## The Future is Already Here
In 2025, this isn't aspirational - it's reality:
- **100% BASIC/LLM applications** are production-ready
- **Zero custom code** for most use cases
- **AI handles complexity** better than humans
- **Machines do machine work** while humans do human work
## Migration Path
### From Extensions to Virtual Crates
```
Old: node_modules/
└── my-plugin.gbapp/
├── index.js (500 lines)
├── package.json
└── complex logic
New: src/
└── my_feature/ # my_feature.gbapp (virtual crate)
├── mod.rs # 50 lines
└── keywords.rs # Register BASIC keywords
Plus: my-bot.gbdialog/
└── logic.bas (5 lines using LLM)
```
### From Code to Descriptions
```
Old: Write algorithm to process data
New: Describe what you want to LLM
```
### From Libraries to LLM
```
Old: Import 20 NPM packages
New: Single LLM call with description
```
## Get Real Guidelines
**DO:**
- Describe problems to LLM
- Use BASIC as glue
- Contribute keywords to core
- Share your patterns
- Think automation-first
**DON'T:**
- Write complex algorithms
- Build separate plugins
- Create custom frameworks
- Maintain separate codebases
- Fight the machine
## The Virtual Crate Architecture
Each gbapp is now a module in `src/`:
```
src/
├── core/ # core.gbapp
├── basic/ # basic.gbapp
├── channels/ # channels.gbapp
└── your_feature/ # your_feature.gbapp (your contribution!)
```
This elegant mapping preserves the conceptual model while leveraging Rust's power.
## Conclusion
gbapp in 2025 has evolved from external packages to virtual crates - Rust modules inside `src/` that compile into a single, optimized binary. This preserves the familiar mental model while delivering native performance.
The philosophy remains: machines are better at machine work. Your job is to describe what you want, not implement how to do it. The combination of BASIC + LLM eliminates the need for traditional programming in almost all cases.
## Examples Repository
See `/templates/` for real-world examples of 100% BASIC/LLM applications:
- CRM system: 50 lines of BASIC
- Email automation: 30 lines of BASIC
- Data pipeline: 20 lines of BASIC
- Report generator: 15 lines of BASIC
Each would have been thousands of lines in traditional code.