Optimizing for Engagement
Charlie Imhoff
ChunkScript Lead#
MotivationThere is no shortage of people that will tell you that ChunkScript is a blast to use. However, if you look at Stack Overflow's List of Most Loved Programming Languages you will notice that ChunkScript does not appear.
This is unacceptable.
Unfortunately, there are not clear paths to improving this score from the perspective of utility.
- Rust currently tops the list, and ChunkScript has more features than Rust, such as the ability to write thread unsafe code that corrupts memory.
- A rebrand isn't in order, as TypeScript is in second, and basically copied us by naming their language "___Script".
- Python is in third, but that makes sense since they recently did a promotional movie tie-in depicting the Python3 migration.
This leaves us with a key question that we, the ChunkScript maintainers, must answer:
How do you improve upon perfection?
The answer, of course, is that we don't. Instead, the answer to our publicity shortcoming is not to make the language a better tool, but to make the experience of using the language more engaging to the masses.
How do we keep a ChunkScript programmer coming back to ChunkScript, again and again, hungry for more ChunkScripting?
Enter: the ChunkBox.
#
ProposalA ChunkBox is a loot-box awarded by the ChunkScript compiler. ChunkBoxes contain random items that the programmer can use during development, such as new keywords, compiler targets, bug fixes, language features, and APIs in the standard library.
#
Earning ChunkBoxesEach day the ChunkScript compiler will have 3 randomly generated challenges for the user to attempt to complete for ChunkStars (CS). Challenges will range from easy (1 CS) to hard (3 CS). Every 10 CS, the compiler will automatically award a ChunkBox (CB).
You can view your challenges and progress with the new dailies
command.
You can redeem your ChunkStars for ChunkBoxes using the new store
command:
Currently, the store only sells ChunkBoxes, but this ensures that if we want to sell additional products (such as ChunkBox bundle packs) we can.
The store is backed by blockchain and ChunkStars are a cryptocurrency.
#
What's in the Box?So now we have a ChunkBox, and we're eager to see what is inside. Anything can be! The excitement is that we could earn a common item, such as a man
page, or we could earn some really exciting (but rare!) legendary item, like the x86
compiler target.
One issue is that all these features are currently available immediately when you start using ChunkScript. This is changing for two reasons:
- For new users, it'd be nicer if you only had access to
for
orwhile
at the start, instead of being overwhelmed by both at the start. - For long time fans, starting with everything means there's no motivation to keep programming, and no sense of pride and accomplishment for using the
break
keyword.
So to improve these issues, and to add to the ChunkBox prize pool, the following items will be taken out of all installations of ChunkScript, and placed into ChunkBoxes for users to earn.
#
Items Moving Into ChunkBoxes#
Keywordselse
(common)while
(common)public
(common)import
(rare)continue
(rare)break
(legendary)
#
Standard LibraryString
(common)Double
(common)rand()
(common)print()
(common)MIN_INT
(common)+
operator (common)PI
(common)Array.isEmpty
(common)Array.length
(rare)- Array literal syntax (
[value]
) (rare) - Dictionary literal syntax (
{"key": value}
) (rare) assert()
(rare)Mutex
(rare)-
operator (rare)Set
(legendary)Float
(legendary)MAX_INT
(legendary)
#
Language Features- Single-line comments (common)
- Generics (rare)
- Multi-line comments (legendary)
#
Compiler Options--help
(common)--font
(common)--easy-but-worse-types
(rare)--dry-run
(rare)--garbage-collection-frequency
(rare)--link
(legendary)
#
Compiler TargetsThe compiler is always able to target the host machine's architecture, but setting an explicit target is reserved for after you unlock it.
pdp-8
(common)pdp-11
(common)mips
(rare)dlx
(rare)micro32
(rare)x86
(legendary)arm64
(legendary)
#
Opening ExperienceNow that we have a prize pool, let's open our ChunkBox using the new open
command to see what's inside!
I've already received the else
keyword before, so I get nothing for that, but WOW! I got my first legendary item! I can't wait to use the new --link
compiler option!
#
MonetizationThis will be a lot of work to implement, so the ChunkScript team will also monetize ChunkBoxes at 5 $USD each. This can be used if a user wants to skip the grind of daily challenges.
#
Alternatives Considered#
Not topping the StackOverflow's most beloved language chartUnacceptable.
#
Battlepass systemThis is the rumored route that C++21
is taking. They are using it to solve the feature bloat that has crept into the language over its long history, not to drive engagement. As a result, I don't think it makes sense to go down this path.
#
Direct purchase micro-transactionsThe excitement (and thus engagement) of the proposed system is that you don't know what you'll get. If you could just purchase the exact keywords you wanted, people would just buy while
and then disengage from the system. This way, you may get else
first, and then you'll learn to appreciate else
instead.