Chocolatey Goodness: From Fringe to Mainstream #dotnetfringe
-
Upload
rob-reynolds -
Category
Software
-
view
628 -
download
2
Transcript of Chocolatey Goodness: From Fringe to Mainstream #dotnetfringe
![Page 1: Chocolatey Goodness: From Fringe to Mainstream #dotnetfringe](https://reader030.fdocuments.net/reader030/viewer/2022032616/55a8933b1a28ab21608b472c/html5/thumbnails/1.jpg)
Chocolatey Goodness : From Fringe To MainstreamRob ReynoldsSenior Software Engineer | Puppet Labs@ferventcoder
![Page 2: Chocolatey Goodness: From Fringe to Mainstream #dotnetfringe](https://reader030.fdocuments.net/reader030/viewer/2022032616/55a8933b1a28ab21608b472c/html5/thumbnails/2.jpg)
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](https://reader030.fdocuments.net/reader030/viewer/2022032616/55a8933b1a28ab21608b472c/html5/thumbnails/3.jpg)
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](https://reader030.fdocuments.net/reader030/viewer/2022032616/55a8933b1a28ab21608b472c/html5/thumbnails/4.jpg)
Is there anyone in the room that doesn’t know of Chocolatey?
![Page 5: Chocolatey Goodness: From Fringe to Mainstream #dotnetfringe](https://reader030.fdocuments.net/reader030/viewer/2022032616/55a8933b1a28ab21608b472c/html5/thumbnails/5.jpg)
Anyone? Bueller? Bueller?
![Page 6: Chocolatey Goodness: From Fringe to Mainstream #dotnetfringe](https://reader030.fdocuments.net/reader030/viewer/2022032616/55a8933b1a28ab21608b472c/html5/thumbnails/6.jpg)
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](https://reader030.fdocuments.net/reader030/viewer/2022032616/55a8933b1a28ab21608b472c/html5/thumbnails/7.jpg)
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](https://reader030.fdocuments.net/reader030/viewer/2022032616/55a8933b1a28ab21608b472c/html5/thumbnails/8.jpg)
How Did Chocolatey Begin?
![Page 9: Chocolatey Goodness: From Fringe to Mainstream #dotnetfringe](https://reader030.fdocuments.net/reader030/viewer/2022032616/55a8933b1a28ab21608b472c/html5/thumbnails/9.jpg)
It started as a thought experiment.
![Page 10: Chocolatey Goodness: From Fringe to Mainstream #dotnetfringe](https://reader030.fdocuments.net/reader030/viewer/2022032616/55a8933b1a28ab21608b472c/html5/thumbnails/10.jpg)
Seriously, did you ever look at the source?!
![Page 11: Chocolatey Goodness: From Fringe to Mainstream #dotnetfringe](https://reader030.fdocuments.net/reader030/viewer/2022032616/55a8933b1a28ab21608b472c/html5/thumbnails/11.jpg)
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](https://reader030.fdocuments.net/reader030/viewer/2022032616/55a8933b1a28ab21608b472c/html5/thumbnails/12.jpg)
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](https://reader030.fdocuments.net/reader030/viewer/2022032616/55a8933b1a28ab21608b472c/html5/thumbnails/13.jpg)
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](https://reader030.fdocuments.net/reader030/viewer/2022032616/55a8933b1a28ab21608b472c/html5/thumbnails/14.jpg)
![Page 15: Chocolatey Goodness: From Fringe to Mainstream #dotnetfringe](https://reader030.fdocuments.net/reader030/viewer/2022032616/55a8933b1a28ab21608b472c/html5/thumbnails/15.jpg)
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](https://reader030.fdocuments.net/reader030/viewer/2022032616/55a8933b1a28ab21608b472c/html5/thumbnails/16.jpg)
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](https://reader030.fdocuments.net/reader030/viewer/2022032616/55a8933b1a28ab21608b472c/html5/thumbnails/17.jpg)
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](https://reader030.fdocuments.net/reader030/viewer/2022032616/55a8933b1a28ab21608b472c/html5/thumbnails/18.jpg)
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](https://reader030.fdocuments.net/reader030/viewer/2022032616/55a8933b1a28ab21608b472c/html5/thumbnails/19.jpg)
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](https://reader030.fdocuments.net/reader030/viewer/2022032616/55a8933b1a28ab21608b472c/html5/thumbnails/20.jpg)
Kickstarter • Started planning in June, live in October
![Page 21: Chocolatey Goodness: From Fringe to Mainstream #dotnetfringe](https://reader030.fdocuments.net/reader030/viewer/2022032616/55a8933b1a28ab21608b472c/html5/thumbnails/21.jpg)
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](https://reader030.fdocuments.net/reader030/viewer/2022032616/55a8933b1a28ab21608b472c/html5/thumbnails/22.jpg)
Now What?
![Page 23: Chocolatey Goodness: From Fringe to Mainstream #dotnetfringe](https://reader030.fdocuments.net/reader030/viewer/2022032616/55a8933b1a28ab21608b472c/html5/thumbnails/23.jpg)
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](https://reader030.fdocuments.net/reader030/viewer/2022032616/55a8933b1a28ab21608b472c/html5/thumbnails/24.jpg)
Host Your Own Chocolatey Package Server
![Page 25: Chocolatey Goodness: From Fringe to Mainstream #dotnetfringe](https://reader030.fdocuments.net/reader030/viewer/2022032616/55a8933b1a28ab21608b472c/html5/thumbnails/25.jpg)
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](https://reader030.fdocuments.net/reader030/viewer/2022032616/55a8933b1a28ab21608b472c/html5/thumbnails/26.jpg)
Creating Packages
![Page 27: Chocolatey Goodness: From Fringe to Mainstream #dotnetfringe](https://reader030.fdocuments.net/reader030/viewer/2022032616/55a8933b1a28ab21608b472c/html5/thumbnails/27.jpg)
packagename.nuspec• This is a nuget
packaging specification
• Later: choco adding infrastructure, os versions, etc
![Page 28: Chocolatey Goodness: From Fringe to Mainstream #dotnetfringe](https://reader030.fdocuments.net/reader030/viewer/2022032616/55a8933b1a28ab21608b472c/html5/thumbnails/28.jpg)
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](https://reader030.fdocuments.net/reader030/viewer/2022032616/55a8933b1a28ab21608b472c/html5/thumbnails/29.jpg)
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](https://reader030.fdocuments.net/reader030/viewer/2022032616/55a8933b1a28ab21608b472c/html5/thumbnails/30.jpg)
Demo
![Page 31: Chocolatey Goodness: From Fringe to Mainstream #dotnetfringe](https://reader030.fdocuments.net/reader030/viewer/2022032616/55a8933b1a28ab21608b472c/html5/thumbnails/31.jpg)
Questions?• Join the newsletter for announcements -
https://chocolatey.org/#newsletter • ferventcoder { twitter, github, gmail }