SlideShare a Scribd company logo
1 of 36
Download to read offline
Camp Sass
April 19, 2014
Thank Hampton and Michael
Who am I?
Creator of Compass
Sass Developer
Family man
Engineer at LinkedIn
* New Baby in November
* LinkedIn pays me to work on Open Source Software
I don’t think that Sass is good
because it’s an abstraction; I
think that Sass is good because
it’s a we!-designed abstraction.
Crucia!y, it’s also easy to learn
…just like CSS.
– Jeremy Keith
What makes Sass so
Syntactically Awesome?
A story of taste, co!aboration, and responsiveness.
“It's a new syntax that I don't want to learn or support.”
“It's a terrible idea for a CSS preprocessor
to be whitespace sensitive.”
“Good luck supporting two syntaxes.”
“Why the $ak do I need control directives in CSS?”
–Nathan Borror circa 2009
Sass 2.0 Source
* I thought this kinda sucked but not for any of the reasons it does.
* good things: left-side-scannable, merge conflicts, I like white-space
* Bad things: repetition -- sass 2.2 fixed this.
Sass 3.3 Source
Sass 2.0 Output
Sass 3.3 Output
Same input API, more configurable/flexible, equivalent to hand-crafted output.
How did we get here?
Sass’s Vision
Make CSS syntactica!y similar to Ruby and Haml.
Sass’s Vision
Make the experience of authoring stylesheets truly enjoyable
Chris Wright’s talk: “joy & excitement”. Every day I see a tweet where someone thanks the internet that Sass exists.
What Makes Writing Sass Enjoyable?
Creative Expression.
Remove Drudgery.
Clear understanding of how Sass works.
Straightforward debu%ing.
Trust.
A Problem
No one on the Sass core team
writes stylesheets for a living.
My life has taken me down a path that doesn’t involve as much front-end code.
I don’t think this is a big problem with the right process and approach.
Not a hero -> a servant.
We Listen
Features are added to
solve the needs
of CSS authors.
We Listen
I find myself o!en doing X,
if Sass did Y,
then X would be simpler & more maintainable.
Even if you don’t know what Y is, once you’ve discovered a pattern, I guarantee you we want to solve it.
We Listen
We Listen... to the trolls.
Be careful who you ca! a tro!.
Most tro!s are speaking to some
form of the truth.
People who speak out against are
o&en tech promoters too.
Public critique != trolling
Real trolls are trying to make you angry. Genuine engagement is often not expected and is disarming.
Personal Pride
We never ship anything we don’t love.
Minutia Matters
Naming.
Edge cases.
Aesthetics.
Error messages.
Not a Democracy
Consensus breeds mediocrity.
Great projects require great leaders. The quality of the Sass language is thanks to Nathan’s unwavering commitment
to perfection (or as close as we can approximate our understanding of perfection)
New Feature Evaluation
What other ways are there to accomplish the same feature in Sass or CSS.
How does the feature interact with the other Sass features?
Is it intuitive?
Does it make things harder to maintain?
Potential for misuse?
Import globbing
strip-­‐unit function
@include	
  foo	
  !important
Properties that are mixins.
@extend	
  within	
  @media.
We (Kind-of) Listen
Give users what they need, not what they ask for.
@extend within @media
Sometimes the request, as made, cannot be fulfilled.
We would love to allow user to write this.
@extend within @media
Users wanted Sass to move the selectors involved in the @extend query to the media query.
Moving selectors is a very dangerous operation and can break expectations based on source order.
Furthermore, the act of moving selectors is more like @include another break of expectation
@extend within @media
After approximately 1000 requests for this feature it occurred to us that there was another possible output, that
while bloated, didn’t behave unpredictably.
We Listen
“In preparation for its release, we've
put out a couple of release candidates
to be sure that everything was set and
ready to go. Unfortunately, it wasn't.”
Usually, it falls on Nathan and me to tell other people why their features do not cut the mustard. But in this case, the
community told us. & in SassScript failed to be intuitive for the use case of handling multiple parent selectors. Full
write up: https://gist.github.com/nex3/8050187
Patience
AVirtue it is
Understanding cannot be rushed.
When we don’t know, we wait.
We trust our instincts that something is not right.
Long Release Cycles
Let the community adjust
Provide stability
Fewer features, more thought
This Was Amazing to 2008 Me
“It's a new syntax that I don't want to learn or support.”
“It's a terrible idea for a CSS preprocessor
to be whitespace sensitive.”
“Good luck supporting two syntaxes.”
“Why the $ak do I need control directives in CSS?”
–Nathan Borror circa 2009
We were pretty sure control directives did make sense. and it was thanks to the weird syntax...
We Need You!
Subscribe to the issue tracker &
watch issues that look interesting to
you.
Help triage common issues
Confirm bug reports and improve the
information about them.
Identify the commit that caused a
regression (git bisect!)
Provide a workaround for the user
Leave us useful issue comments ~
Disagree with us!
Te! us when we’re on the right track
Community Interaction Guidelines
Not everyone is going to be as tapped
into Sass development as you.
Educate, don't chastise.
The correct response to someone who
is being an entitled jerk is to
disengage.
We Need You!
Test new features in alpha releases.
Blog about your experiences. Think
out loud.
Speak at local meet-ups.
Make feature su%estions
Polish patches - Documentation
improvement
Sass-lang.com documentation.
Thank You!
I hope this talk has helped you understand how Sass works
& more genera!y, a way of running and working with open source projects.

More Related Content

Viewers also liked

Primer on BlueprintAsia
Primer on BlueprintAsiaPrimer on BlueprintAsia
Primer on BlueprintAsiablueprintasia
 
Sam Mc Gee Winter Fashion Franchise
Sam Mc Gee Winter Fashion FranchiseSam Mc Gee Winter Fashion Franchise
Sam Mc Gee Winter Fashion Franchiseblueprintasia
 
Activitats colònies
Activitats colòniesActivitats colònies
Activitats colònieslabartra
 
Unobtrusive Stylesheets
Unobtrusive StylesheetsUnobtrusive Stylesheets
Unobtrusive Stylesheetschriseppstein
 
Authoring Stylesheets with Compass & Sass
Authoring Stylesheets with Compass & SassAuthoring Stylesheets with Compass & Sass
Authoring Stylesheets with Compass & Sasschriseppstein
 

Viewers also liked (7)

Primer on BlueprintAsia
Primer on BlueprintAsiaPrimer on BlueprintAsia
Primer on BlueprintAsia
 
Sam Mc Gee Winter Fashion Franchise
Sam Mc Gee Winter Fashion FranchiseSam Mc Gee Winter Fashion Franchise
Sam Mc Gee Winter Fashion Franchise
 
Activitats colònies
Activitats colòniesActivitats colònies
Activitats colònies
 
Unobtrusive Stylesheets
Unobtrusive StylesheetsUnobtrusive Stylesheets
Unobtrusive Stylesheets
 
Cuaresma Ayuna
Cuaresma AyunaCuaresma Ayuna
Cuaresma Ayuna
 
Xcode7 UI Automation
Xcode7 UI AutomationXcode7 UI Automation
Xcode7 UI Automation
 
Authoring Stylesheets with Compass & Sass
Authoring Stylesheets with Compass & SassAuthoring Stylesheets with Compass & Sass
Authoring Stylesheets with Compass & Sass
 

Similar to What makes Sass so Syntactically Awesome?

Is everything we used to do wrong?
Is everything we used to do wrong?Is everything we used to do wrong?
Is everything we used to do wrong?Russ Weakley
 
An Organizational Story: Salesforce Lightning Design (Nalini Kotamraju at Ent...
An Organizational Story: Salesforce Lightning Design (Nalini Kotamraju at Ent...An Organizational Story: Salesforce Lightning Design (Nalini Kotamraju at Ent...
An Organizational Story: Salesforce Lightning Design (Nalini Kotamraju at Ent...Rosenfeld Media
 
Schemas for the Real World [Madison RubyConf 2013]
Schemas for the Real World [Madison RubyConf 2013]Schemas for the Real World [Madison RubyConf 2013]
Schemas for the Real World [Madison RubyConf 2013]Carina C. Zona
 
Designing with content-first
Designing with content-firstDesigning with content-first
Designing with content-firstAndy Parker
 
Is Content Strategy About To Overtake Interaction Design? (2014 WIAD)
Is Content Strategy About To Overtake Interaction Design? (2014 WIAD)Is Content Strategy About To Overtake Interaction Design? (2014 WIAD)
Is Content Strategy About To Overtake Interaction Design? (2014 WIAD)Joe Hass
 
How Chunky Do You Need To Be?: Adaptive Content Strategies For The Real World
How Chunky Do You Need To Be?: Adaptive Content Strategies For The Real WorldHow Chunky Do You Need To Be?: Adaptive Content Strategies For The Real World
How Chunky Do You Need To Be?: Adaptive Content Strategies For The Real WorldChristopher Grant Ward
 
How ANYONE can make insanely better slides
How ANYONE can make insanely better slidesHow ANYONE can make insanely better slides
How ANYONE can make insanely better slidesSean Johnson
 
HarambeeNet: Data by the people, for the people
HarambeeNet: Data by the people, for the peopleHarambeeNet: Data by the people, for the people
HarambeeNet: Data by the people, for the peopleMichael Bernstein
 
Mobile and Responsive Design with Sass
Mobile and Responsive Design with SassMobile and Responsive Design with Sass
Mobile and Responsive Design with Sassnyccamp
 
Stop Worrying & Get On With It (FOWD Tour 2009)
Stop Worrying & Get On With It (FOWD Tour 2009)Stop Worrying & Get On With It (FOWD Tour 2009)
Stop Worrying & Get On With It (FOWD Tour 2009)elliotjaystocks
 
HTML5 and the future of the web (Dr. Seuss style)
HTML5 and the future of the web (Dr. Seuss style)HTML5 and the future of the web (Dr. Seuss style)
HTML5 and the future of the web (Dr. Seuss style)Christian Heilmann
 
EmberConf 2015 closing keynote
EmberConf 2015 closing keynoteEmberConf 2015 closing keynote
EmberConf 2015 closing keynotechriseppstein
 
Stop Worrying & Get On With It (WDC Bristol 2009)
Stop Worrying & Get On With It (WDC Bristol 2009)Stop Worrying & Get On With It (WDC Bristol 2009)
Stop Worrying & Get On With It (WDC Bristol 2009)elliotjaystocks
 
CSS Best Practices
CSS Best PracticesCSS Best Practices
CSS Best Practicesnolly00
 
Design and CSS
Design and CSSDesign and CSS
Design and CSSnolly00
 
CMS Refresher: Content is King
CMS Refresher: Content is KingCMS Refresher: Content is King
CMS Refresher: Content is KingCassandra Ketrick
 
Taking the Reins: Website Redesign by the Librarians, for the Users
Taking the Reins: Website Redesign by the Librarians, for the UsersTaking the Reins: Website Redesign by the Librarians, for the Users
Taking the Reins: Website Redesign by the Librarians, for the UsersMark O'English
 

Similar to What makes Sass so Syntactically Awesome? (20)

Is everything we used to do wrong?
Is everything we used to do wrong?Is everything we used to do wrong?
Is everything we used to do wrong?
 
An Organizational Story: Salesforce Lightning Design (Nalini Kotamraju at Ent...
An Organizational Story: Salesforce Lightning Design (Nalini Kotamraju at Ent...An Organizational Story: Salesforce Lightning Design (Nalini Kotamraju at Ent...
An Organizational Story: Salesforce Lightning Design (Nalini Kotamraju at Ent...
 
Schemas for the Real World [Madison RubyConf 2013]
Schemas for the Real World [Madison RubyConf 2013]Schemas for the Real World [Madison RubyConf 2013]
Schemas for the Real World [Madison RubyConf 2013]
 
Designing with content-first
Designing with content-firstDesigning with content-first
Designing with content-first
 
Is Content Strategy About To Overtake Interaction Design? (2014 WIAD)
Is Content Strategy About To Overtake Interaction Design? (2014 WIAD)Is Content Strategy About To Overtake Interaction Design? (2014 WIAD)
Is Content Strategy About To Overtake Interaction Design? (2014 WIAD)
 
How Chunky Do You Need To Be?: Adaptive Content Strategies For The Real World
How Chunky Do You Need To Be?: Adaptive Content Strategies For The Real WorldHow Chunky Do You Need To Be?: Adaptive Content Strategies For The Real World
How Chunky Do You Need To Be?: Adaptive Content Strategies For The Real World
 
How ANYONE can make insanely better slides
How ANYONE can make insanely better slidesHow ANYONE can make insanely better slides
How ANYONE can make insanely better slides
 
HarambeeNet: Data by the people, for the people
HarambeeNet: Data by the people, for the peopleHarambeeNet: Data by the people, for the people
HarambeeNet: Data by the people, for the people
 
Mobile and Responsive Design with Sass
Mobile and Responsive Design with SassMobile and Responsive Design with Sass
Mobile and Responsive Design with Sass
 
Stop Worrying & Get On With It (FOWD Tour 2009)
Stop Worrying & Get On With It (FOWD Tour 2009)Stop Worrying & Get On With It (FOWD Tour 2009)
Stop Worrying & Get On With It (FOWD Tour 2009)
 
HTML5 and the future of the web (Dr. Seuss style)
HTML5 and the future of the web (Dr. Seuss style)HTML5 and the future of the web (Dr. Seuss style)
HTML5 and the future of the web (Dr. Seuss style)
 
EmberConf 2015 closing keynote
EmberConf 2015 closing keynoteEmberConf 2015 closing keynote
EmberConf 2015 closing keynote
 
Stop Worrying & Get On With It (WDC Bristol 2009)
Stop Worrying & Get On With It (WDC Bristol 2009)Stop Worrying & Get On With It (WDC Bristol 2009)
Stop Worrying & Get On With It (WDC Bristol 2009)
 
CSS Best Practices
CSS Best PracticesCSS Best Practices
CSS Best Practices
 
FOWD NYC 2009
FOWD NYC 2009FOWD NYC 2009
FOWD NYC 2009
 
Micro services
Micro servicesMicro services
Micro services
 
Design and CSS
Design and CSSDesign and CSS
Design and CSS
 
Sass: An Introduction
Sass: An IntroductionSass: An Introduction
Sass: An Introduction
 
CMS Refresher: Content is King
CMS Refresher: Content is KingCMS Refresher: Content is King
CMS Refresher: Content is King
 
Taking the Reins: Website Redesign by the Librarians, for the Users
Taking the Reins: Website Redesign by the Librarians, for the UsersTaking the Reins: Website Redesign by the Librarians, for the Users
Taking the Reins: Website Redesign by the Librarians, for the Users
 

Recently uploaded

FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | DelhiFULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhisoniya singh
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking MenDelhi Call girls
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Servicegiselly40
 
Maximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxMaximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxOnBoard
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...shyamraj55
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsEnterprise Knowledge
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slidevu2urc
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Alan Dix
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Allon Mureinik
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking MenDelhi Call girls
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxMalak Abu Hammad
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersEnhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersThousandEyes
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024Results
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityPrincipled Technologies
 

Recently uploaded (20)

FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | DelhiFULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
 
Maximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxMaximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptx
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersEnhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 

What makes Sass so Syntactically Awesome?

  • 1. Camp Sass April 19, 2014 Thank Hampton and Michael
  • 2. Who am I? Creator of Compass Sass Developer Family man Engineer at LinkedIn * New Baby in November * LinkedIn pays me to work on Open Source Software
  • 3. I don’t think that Sass is good because it’s an abstraction; I think that Sass is good because it’s a we!-designed abstraction. Crucia!y, it’s also easy to learn …just like CSS. – Jeremy Keith
  • 4. What makes Sass so Syntactically Awesome? A story of taste, co!aboration, and responsiveness.
  • 5. “It's a new syntax that I don't want to learn or support.” “It's a terrible idea for a CSS preprocessor to be whitespace sensitive.” “Good luck supporting two syntaxes.” “Why the $ak do I need control directives in CSS?” –Nathan Borror circa 2009
  • 6. Sass 2.0 Source * I thought this kinda sucked but not for any of the reasons it does. * good things: left-side-scannable, merge conflicts, I like white-space * Bad things: repetition -- sass 2.2 fixed this.
  • 9. Sass 3.3 Output Same input API, more configurable/flexible, equivalent to hand-crafted output.
  • 10. How did we get here?
  • 11. Sass’s Vision Make CSS syntactica!y similar to Ruby and Haml.
  • 12. Sass’s Vision Make the experience of authoring stylesheets truly enjoyable Chris Wright’s talk: “joy & excitement”. Every day I see a tweet where someone thanks the internet that Sass exists.
  • 13. What Makes Writing Sass Enjoyable? Creative Expression. Remove Drudgery. Clear understanding of how Sass works. Straightforward debu%ing. Trust.
  • 14. A Problem No one on the Sass core team writes stylesheets for a living. My life has taken me down a path that doesn’t involve as much front-end code. I don’t think this is a big problem with the right process and approach. Not a hero -> a servant.
  • 15. We Listen Features are added to solve the needs of CSS authors.
  • 16. We Listen I find myself o!en doing X, if Sass did Y, then X would be simpler & more maintainable. Even if you don’t know what Y is, once you’ve discovered a pattern, I guarantee you we want to solve it.
  • 18. We Listen... to the trolls. Be careful who you ca! a tro!. Most tro!s are speaking to some form of the truth. People who speak out against are o&en tech promoters too. Public critique != trolling Real trolls are trying to make you angry. Genuine engagement is often not expected and is disarming.
  • 19. Personal Pride We never ship anything we don’t love.
  • 21. Not a Democracy Consensus breeds mediocrity. Great projects require great leaders. The quality of the Sass language is thanks to Nathan’s unwavering commitment to perfection (or as close as we can approximate our understanding of perfection)
  • 22. New Feature Evaluation What other ways are there to accomplish the same feature in Sass or CSS. How does the feature interact with the other Sass features? Is it intuitive? Does it make things harder to maintain? Potential for misuse?
  • 23. Import globbing strip-­‐unit function @include  foo  !important Properties that are mixins. @extend  within  @media. We (Kind-of) Listen Give users what they need, not what they ask for.
  • 24. @extend within @media Sometimes the request, as made, cannot be fulfilled. We would love to allow user to write this.
  • 25. @extend within @media Users wanted Sass to move the selectors involved in the @extend query to the media query. Moving selectors is a very dangerous operation and can break expectations based on source order. Furthermore, the act of moving selectors is more like @include another break of expectation
  • 26. @extend within @media After approximately 1000 requests for this feature it occurred to us that there was another possible output, that while bloated, didn’t behave unpredictably.
  • 27. We Listen “In preparation for its release, we've put out a couple of release candidates to be sure that everything was set and ready to go. Unfortunately, it wasn't.” Usually, it falls on Nathan and me to tell other people why their features do not cut the mustard. But in this case, the community told us. & in SassScript failed to be intuitive for the use case of handling multiple parent selectors. Full write up: https://gist.github.com/nex3/8050187
  • 29. Understanding cannot be rushed. When we don’t know, we wait. We trust our instincts that something is not right.
  • 30. Long Release Cycles Let the community adjust Provide stability Fewer features, more thought
  • 31. This Was Amazing to 2008 Me
  • 32. “It's a new syntax that I don't want to learn or support.” “It's a terrible idea for a CSS preprocessor to be whitespace sensitive.” “Good luck supporting two syntaxes.” “Why the $ak do I need control directives in CSS?” –Nathan Borror circa 2009 We were pretty sure control directives did make sense. and it was thanks to the weird syntax...
  • 33. We Need You! Subscribe to the issue tracker & watch issues that look interesting to you. Help triage common issues Confirm bug reports and improve the information about them. Identify the commit that caused a regression (git bisect!) Provide a workaround for the user Leave us useful issue comments ~ Disagree with us! Te! us when we’re on the right track
  • 34. Community Interaction Guidelines Not everyone is going to be as tapped into Sass development as you. Educate, don't chastise. The correct response to someone who is being an entitled jerk is to disengage.
  • 35. We Need You! Test new features in alpha releases. Blog about your experiences. Think out loud. Speak at local meet-ups. Make feature su%estions Polish patches - Documentation improvement Sass-lang.com documentation.
  • 36. Thank You! I hope this talk has helped you understand how Sass works & more genera!y, a way of running and working with open source projects.