Skip to the content.

Chapter 38: The Smalltalk Community

You’ve mastered Smalltalk fundamentals, built real applications, learned design patterns, and optimized code. Now let’s explore the most important resource: the Smalltalk community - the people who keep Smalltalk alive, innovative, and welcoming!

Smalltalk has one of the friendliest, most helpful programming communities. Whether you’re stuck on a problem, want to contribute, or just chat about elegant code, the Smalltalk community is there for you. This chapter shows you how to connect, contribute, and become part of this vibrant ecosystem!

Why Community Matters

Programming isn’t solitary - it’s collaborative! The community provides:

  1. Help and support - When you’re stuck
  2. Learning resources - Books, tutorials, examples
  3. Libraries and tools - Thousands of packages
  4. Inspiration - See what others are building
  5. Collaboration - Work on projects together
  6. Jobs and opportunities - Professional connections
  7. Friendship - Meet fellow enthusiasts

You’re not alone!

The Smalltalk Spirit

The Smalltalk community has a unique culture:

Values

History

Smalltalk people remember their roots:

This heritage shapes the community today!

Where to Find Smalltalkers

Discord Servers

Pharo Discord - Most active Smalltalk community

Squeak/Etoys Discord

Join Discord - Best place for real-time help!

Mailing Lists

Pharo Users

Pharo Dev

Squeak Mailing Lists

Cuis List

Forums

Reddit

Stack Overflow

IRC (Still Active!)

Libera.Chat

Social Media

Twitter/X

Mastodon

LinkedIn

Getting Help

Asking Good Questions

When seeking help:

  1. Be specific
    • ❌ “My code doesn’t work”
    • ✅ “I get ‘MessageNotUnderstood: #size’ when I call myMethod”
  2. Show code
    "What I'm trying:"
    | collection |
    collection := OrderedCollection new.
    collection size.  "This works"
    collection add: 42.
    collection size.  "This fails - why?"
    
  3. Describe what you tried
    • “I tried X, but got error Y”
    • “I expected Z to happen”
  4. Include environment
    • “Pharo 11 on macOS”
    • “Using Spec 2”
  5. Be patient and polite
    • People volunteer their time
    • Say thank you!

Example Good Question

Subject: How to sort Dictionary by values in Pharo 11?

Hi! I’m trying to sort a Dictionary by its values (not keys). I have:

dict := Dictionary new.
dict at: 'apple' put: 5.
dict at: 'banana' put: 2.
dict at: 'cherry' put: 8.

I want: #(‘cherry’ ‘apple’ ‘banana’) (sorted by values descending)

I tried dict sorted but it doesn’t work. I’m using Pharo 11 on Linux.

Thanks for any help!

This will get quick, helpful responses!

Contributing Back

Once you’re comfortable, give back to the community!

Answer Questions

Where:

How:

Share Your Projects

Show what you built!

Discord #show-and-tell:

Just finished my Sudoku solver in Pharo! 🎉
Uses backtracking algorithm.
GitHub: https://github.com/username/pharo-sudoku

Blog about it:

Report Bugs

Found a bug? Report it!

Pharo bugs:

Example report:

Title: Inspector crashes when inspecting huge array

Steps:
1. Create array: Array new: 10000000
2. Inspect it
3. Try to scroll

Expected: Inspector shows array
Actual: Image freezes

Pharo: 11.0 build 742
OS: macOS 13.2

Write Documentation

Help others learn!

Contribute to Pharo:

# Fork pharo-project/pharo on GitHub
# Fix documentation
# Submit pull request

Create Libraries

Built something reusable?

Package it and share:

"Create a baseline:"
BaselineOf subclass: #BaselineOfMyLibrary

Publish to GitHub:

git init
git add .
git commit -m "Initial commit"
git push origin main

Announce it:

Contribute to Core

Advanced: Contribute to Pharo itself!

  1. Read contributing guide: https://github.com/pharo-project/pharo/blob/Pharo11/CONTRIBUTING.md
  2. Find an issue: Look for “good first issue” label
  3. Fork and clone: Work on your fork
  4. Make changes: Fix bug or add feature
  5. Test: Ensure tests pass
  6. Pull request: Submit for review

Small fixes welcome!

Learning Resources

Official Documentation

Pharo Books (Free!):

Download all books - They’re excellent!

MOOCs (Online Courses)

Pharo MOOC:

YouTube Channels

Pharo Project

Community Members

Blogs

Active Smalltalk blogs:

Planet Smalltalk:

Podcasts

Search for:

Events and Conferences

ESUG (European Smalltalk User Group)

Annual conference:

Website: https://esug.github.io/

Smalltalks Conference

South American Smalltalk conference:

Local Meetups

Find meetups:

Or start one yourself!

Virtual Events

Online Pharo Days:

Twitch/YouTube Streams:

Companies Using Smalltalk

Job opportunities exist!

Industries

Notable Companies

Finding Jobs

Where to look:

Skills in demand:

Notable Community Members

Core Contributors

Pharo:

Squeak:

Glamorous Toolkit:

You Can Meet Them!

The Smalltalk community is accessible:

No rockstars - just helpful people!

Giving Back: Ideas

Start small, grow from there!

Beginner Level

Intermediate Level

Advanced Level

The Pharo Consortium

Support Pharo’s development!

Pharo Consortium:

Individual supporters:

Community Projects

Awesome Pharo

Curated list of libraries:

PharoThings

Internet of Things with Pharo:

PolyMath

Scientific computing:

Roassal

Data visualization:

Glamorous Toolkit

Moldable development:

Etiquette and Culture

Do’s

Be respectful - Everyone’s learning ✅ Be patient - Volunteers help when they can ✅ Search first - Question might be answered already ✅ Share knowledge - Help others when you can ✅ Give credit - Acknowledge helpers ✅ Stay positive - Encourage, don’t criticize ✅ Have fun - Enjoy programming!

Don’ts

Don’t demand - People volunteer ❌ Don’t ask to ask - Just ask your question ❌ Don’t cross-post - Pick one venue ❌ Don’t hijack threads - Start new topic ❌ Don’t disparage - Respect all languages ❌ Don’t give up - Community wants to help!

Your Community Journey

Week 1: Observer

Week 2-4: Lurker

Month 2-3: Participant

Month 4+: Contributor

Year 1+: Community Member

Everyone follows this path!

Success Stories

From Beginners to Contributors

Many started knowing nothing:

You can too!

Projects That Started Small

Your project could be next!

Staying Connected

Regular Check-ins

Daily:

Weekly:

Monthly:

Building Your Network

Programming is social!

Try This!

Get involved today:

  1. Join Discord
    • https://discord.gg/QewZMZa
    • Introduce yourself in #introductions
    • Tell us what you’re learning!
  2. Ask a Question
    • Something you’re stuck on
    • See how helpful the community is!
  3. Star Some Projects
    • https://github.com/pharo-project/pharo
    • https://github.com/ObjectProfile/Roassal3
    • Show your appreciation!
  4. Read Pharo by Example
    • If you haven’t already
    • Best learning resource
  5. Share This Book
    • Tell others about it
    • Help grow the community
  6. Build Something
    • Start a project
    • Share it when ready
  7. Say Thanks
    • To someone who helped you
    • Good karma!

What You Learned

Exploring the community, you’ve discovered:

  1. Where Smalltalkers Gather
    • Discord (best for real-time)
    • Mailing lists (traditional)
    • Reddit, Stack Overflow
    • Conferences and meetups
  2. How to Get Help
    • Ask good questions
    • Be specific
    • Show your work
    • Be patient and polite
  3. Ways to Contribute
    • Answer questions
    • Share projects
    • Report bugs
    • Write documentation
    • Create libraries
  4. Learning Resources
    • Free books
    • MOOCs
    • YouTube tutorials
    • Blogs and podcasts
  5. Professional Opportunities
    • Companies using Smalltalk
    • Job boards
    • Freelance work
  6. Community Values
    • Openness and respect
    • Excellence and curiosity
    • Collaboration and fun

The Heart of Smalltalk

The community is Smalltalk:

Smalltalk survived decades because:

You’re part of this now!

Looking Ahead

You now understand the Smalltalk community! You know:

In Chapter 39, we’ll explore Beyond Smalltalk - taking your skills to other languages and paradigms!

Then Chapter 40 concludes with Your Smalltalk Journey - where to go next!

You’re almost at the finish line!


Key Takeaways:


Previous: Chapter 37 - Performance and Optimization Next: Chapter 39 - Beyond Smalltalk - Taking Your Skills Further