chocolatey goodness: from fringe to mainstream #dotnetfringe

31
Chocolatey Goodness : From Fringe To Mainstream Rob Reynolds Senior Software Engineer | Puppet Labs @ ferventcoder

Upload: rob-reynolds

Post on 17-Jul-2015

625 views

Category:

Software


2 download

TRANSCRIPT

Page 1: Chocolatey Goodness: From Fringe to Mainstream #dotnetfringe

Chocolatey Goodness : From Fringe To MainstreamRob ReynoldsSenior Software Engineer | Puppet Labs@ferventcoder

Page 2: Chocolatey Goodness: From Fringe to Mainstream #dotnetfringe

Rob Reynolds• Developer at Puppet Labs• Creator of Chocolatey• All around nice guy• Making your Windows world

a better place for automation• .NET MVP (whatever that means)

Page 3: Chocolatey Goodness: From Fringe to Mainstream #dotnetfringe

Agenda• What Is It?• How Did Choco Begin?• Fringe / Success / Mainstream• “Fringe-y” Demos on Creating

Packages & Hosting Your Own Package Server

Page 4: Chocolatey Goodness: From Fringe to Mainstream #dotnetfringe

Is there anyone in the room that doesn’t know of Chocolatey?

Page 5: Chocolatey Goodness: From Fringe to Mainstream #dotnetfringe

Anyone? Bueller? Bueller?

Page 6: Chocolatey Goodness: From Fringe to Mainstream #dotnetfringe

Package Manager for Windows• Behaves much like yum• Microsoft validated• Technologies: PowerShell

+ NuGet packaging framework• Does not violate distribution

rights

Chocolatey

Page 7: Chocolatey Goodness: From Fringe to Mainstream #dotnetfringe

chocolatey.org• Community feed• Community maintained• Trust issues?• Recommendation: A

business should run

their own internal feed12 Million Downloads!

Page 8: Chocolatey Goodness: From Fringe to Mainstream #dotnetfringe

How Did Chocolatey Begin?

Page 9: Chocolatey Goodness: From Fringe to Mainstream #dotnetfringe

It started as a thought experiment.

Page 10: Chocolatey Goodness: From Fringe to Mainstream #dotnetfringe

Seriously, did you ever look at the source?!

Page 11: Chocolatey Goodness: From Fringe to Mainstream #dotnetfringe

What I Wanted in 2011

• Pairing / troubleshooting experience - No Notepad++?

• Experience with silent installers

• Existing?

• How to globalize?

Page 12: Chocolatey Goodness: From Fringe to Mainstream #dotnetfringe

Experiment in March 2011

• Building onto NuGet

• Packages tagged “chocolatey” on nuget.org (until Sep 2011)

• Concepts of KISS packaging

• Building on an existing ecosystem

• Focus on UX

Page 13: Chocolatey Goodness: From Fringe to Mainstream #dotnetfringe

The Experiment Was Built In PowerShell• PowerShell?!

• Built with PowerShell as a programming language

• Always felt like I was relearning it

Page 14: Chocolatey Goodness: From Fringe to Mainstream #dotnetfringe
Page 15: Chocolatey Goodness: From Fringe to Mainstream #dotnetfringe

There were some good parts• Added Mocking to Pester

• Defined some ideas of semi-maintainable PowerShell source code

• I learned PowerShell this time for real. Maybe.

Page 16: Chocolatey Goodness: From Fringe to Mainstream #dotnetfringe

And… Community• Somewhere along the line came the community

• Design or Sheer Luck?

• Maybe it was the semi-okay Documentation?

• 1. Gnomes. 2. ??? 3. Profit!

Page 17: Chocolatey Goodness: From Fringe to Mainstream #dotnetfringe

Microsoft Got Involved• Validated the idea

• Adding/added OneGet or whatever it’s called today to Windows 10.

• Chocolatey is semi-builtin to next version of Windows!

Page 18: Chocolatey Goodness: From Fringe to Mainstream #dotnetfringe

That Seems Successful• Microsoft Involvement, Sort of Getting Into

Windows

• Except POSH code…

• …and not meeting user wants and needs

Page 19: Chocolatey Goodness: From Fringe to Mainstream #dotnetfringe

Long Overdue Rewrite• Started around March 2014.

• C# - b/c I already learned about writing production code in a language I didn’t know that well.

• But addressing longer term existence of choco?

Page 20: Chocolatey Goodness: From Fringe to Mainstream #dotnetfringe

Kickstarter • Started planning in June, live in October

Page 21: Chocolatey Goodness: From Fringe to Mainstream #dotnetfringe

Kickstarter • Over 1,000 folks said yes!

• Overfunded by 25%

• We made changes over the Kickstarter

Page 22: Chocolatey Goodness: From Fringe to Mainstream #dotnetfringe

Now What?

Page 23: Chocolatey Goodness: From Fringe to Mainstream #dotnetfringe

Where Is Choco Going? • Enhance packaging - NVRA

• Try to keep KISS while adding more complex scenarios

• Package signing (GPG)

• Pro Version - Kickstarter Enhancements (Stability / Virus Checking)

Page 24: Chocolatey Goodness: From Fringe to Mainstream #dotnetfringe

Host Your Own Chocolatey Package Server

Page 25: Chocolatey Goodness: From Fringe to Mainstream #dotnetfringe

Host Chocolatey Packages• Now it’s easy to set up

your own package feed• Make it custom/internal for

business purposes.• chocolatey.server package

• Beta• Simple server

Page 26: Chocolatey Goodness: From Fringe to Mainstream #dotnetfringe

Creating Packages

Page 27: Chocolatey Goodness: From Fringe to Mainstream #dotnetfringe

packagename.nuspec• This is a nuget

packaging specification

• Later: choco adding infrastructure, os versions, etc

Page 28: Chocolatey Goodness: From Fringe to Mainstream #dotnetfringe

chocolateyInstall.ps1• Helpers / Functions• Reduce work• PowerShell, you

can do anything

• Function reference http://bit.ly/chocolateyfunctionreference

Page 29: Chocolatey Goodness: From Fringe to Mainstream #dotnetfringe

Create Packages Visually• Nuget Package Explorer

(choco install nugetpackageexplorer)

• Ignore its warnings, it is geared towards NuGet proper

• NO content folder

Page 30: Chocolatey Goodness: From Fringe to Mainstream #dotnetfringe

Demo

Page 31: Chocolatey Goodness: From Fringe to Mainstream #dotnetfringe

Questions?• Join the newsletter for announcements -

https://chocolatey.org/#newsletter • ferventcoder { twitter, github, gmail }