Taking over maintenance of an existing open source application can be a scary prospect yet exciting and fun at the same time. I want to talk a little bit about how I ended up taking over maintenance of WebOb a Python HTTP request/response library that is used heavily by a huge variety of projects.
Length: Long Talk
Target Level: Beginner
Target Audience: Integrator, User, Developer
Maintaining a big open source project: lessons learnedLeonardo Tegon
About a year ago, I started to maintain Devise - one of the most popular Ruby Gems available. I had no knowledge of the code and a little experience with open source from a side project I developed myself.
Obviously, this was a very challenging task and I made a lot of mistakes in the process. The good thing is I learned a lot too.
In this talk, I will share with you some of the lessons I learned that I think can be valuable not only for open source but for our day-to-day work too.
Voor het maken van single page web applications lijkt MVC met databinding de standaard. Daarmee zijn fouten lastig te achterhalen. Facebook ondervond dat ook en koos voor een functionele aanpak: ReactJS. Deze sessie geeft een introductie, gaat dieper in op ogenschijnlijke snelheid nadelen en laat zien hoe je herbruikbare React componenten bouwt. Tevens zal ASP.NET MVC gebruikt worden voor server side rendering van de initiële state, ideaal voor search engines die meestal een probleem hebben met single page apps. Na deze sessie zul je nooit meer hetzelfde denken over web UI’s.
Maintaining a big open source project: lessons learnedLeonardo Tegon
About a year ago, I started to maintain Devise - one of the most popular Ruby Gems available. I had no knowledge of the code and a little experience with open source from a side project I developed myself.
Obviously, this was a very challenging task and I made a lot of mistakes in the process. The good thing is I learned a lot too.
In this talk, I will share with you some of the lessons I learned that I think can be valuable not only for open source but for our day-to-day work too.
Voor het maken van single page web applications lijkt MVC met databinding de standaard. Daarmee zijn fouten lastig te achterhalen. Facebook ondervond dat ook en koos voor een functionele aanpak: ReactJS. Deze sessie geeft een introductie, gaat dieper in op ogenschijnlijke snelheid nadelen en laat zien hoe je herbruikbare React componenten bouwt. Tevens zal ASP.NET MVC gebruikt worden voor server side rendering van de initiële state, ideaal voor search engines die meestal een probleem hebben met single page apps. Na deze sessie zul je nooit meer hetzelfde denken over web UI’s.
Keynote- We're going wrong: Choosing the web's future. Peter Paul KochFuture Insights
From FOWA London 2015
Web developers and browser vendors are trying too hard to emulate native apps; in vain, PPK says, because we can't out-native native. Meanwhile this quest for native emulation has a host of undesirable by-effects: too many new browser features that need too many new (and not always performant) tools to create polyfills, which cause too many people to think they only need to understand the tools in order to be a web developer. We're going wrong. We should take some time to figure out what the web is for, how we can have a successful web ecosystem next to, but not in competition with, native ecosystems, and how we should explain what web development is to Java developers and others who come from a non-web background. We need time to think.
Writing for software in school leaves out much of the true hassles in software development.
This brief lecture covers the hidden challenges when deploying to the real world.
/dev/fort: you can build it in a week @emwJames Aylett
Imagine a place with no distractions – no IM, no Twitter, in fact no internet access at all. Within, a dozen or more developers, designers, thinkers and doers. And a lot of a food. Now imagine that place is a fort. I talk about why anyone would want to go on holiday to do their day job, the bits of the internet we had to rebuild to work without the internet, and some tips you can use even when you don't have a fort.
People willing to add new features to their websites have too much of a choice. Choosing and testing addons is a task that requires either developer-superpowers and a unlimited budget or blind faith and dumb luck. In this talk we'll find out how to walk the middle ground and live to tell the tale.
See a video of the talk at http://www.youtube.com/watch?v=Sc6NkqaSjqw
React Native and the future of web technology (Mark Wilcox) - GreeceJS #15GreeceJS
What's all the hype about React Native? What is it? How does it work? Why does it matter and what clues does it give us about the future of web development? Did you know there's a React Native for the Web? What's that all about? It can't be all good, what's wrong with it? Where should you go to find out more?
Introduction to GraphQL (or How I Learned to Stop Worrying about REST APIs)Hafiz Ismail
Talk for FOSSASIA 2016 (http://2016.fossasia.org)
----
This talk will give a brief and enlightening look into how GraphQL can help you address common weaknesses that you, as a web / mobile developer, would normally face with using / building typical REST API systems.
Let's stop fighting about whether we should implement the strictest interpretation of REST or how pragmatic REST-ful design is the only way to go, or debate about what REST is or what it should be.
A couple of demos (In Golang! Yay!) will be shown that are guaranteed to open up your eyes and see that the dawn of liberation for product developers is finally here.
Background: GraphQL is a data query language and runtime designed and used at Facebook to request and deliver data to mobile and web apps since 2012.
Hafiz Ismail (@sogko) is a contributor to Go / Golang implementation of GraphQL server library (https://github.com/graphql-go/graphql) and is looking to encourage fellow developers to join in the collaborative effort.
CocoaPods talk given at the RubyMotion Inspect 2013 conference.
There is another version that does not include speaker notes available at: https://www.slideshare.net/alloy020/ruby-motion-inspect-2013-without-notes-18676749
The videos that were shown on slide 5 and 6 are available at: https://vimeo.com/63891717 & https://vimeo.com/63891716.
DevDay 2013 - Building Startups and Minimum Viable ProductsBen Hall
DevDay (http://devday.pl),
20th of September 2013, Kraków
Video at http://www.youtube.com/watch?v=L4eTOvq2WmM&feature=c4-overview-vl&list=PLBMFXMTB7U74NdDghygvBaDcp67owVUUF
At some point, the code you write today will be deleted and replaced with something new. This talk will discuss the life cycle of a large code base, and how to manage it over time to accommodate rewrites, giving examples from a major rewrite of the Firefox build and release pipeline over the last two years. You'll learn how to replace components of a running distributed system while keeping it operational, the proverbial replacing the wing of an airplane in flight.
The Junior Developer Survival Guide - GDI Ann Arbor 2/10/15James York
Are you new to the professional world of software development? Do you have new developers on your team? Are you wondering why college and the School of Hard Knocks did such a bad job preparing you to be a functional member of a high-performing team? Take some advice from a junior dev who has walked the path and learn to avoid rookie mistakes. Learn the skills employers value and how to get them. We will discuss quick return actions that can be undertaken immediately, as well as long term, slow-burn investments in your career. This session will focus on technical and interpersonal advice to help make your first job search, entry-level hire, and first year as a developer go smoothly. A great career won’t just fall into your lap. It takes dedication, skill, persistence, and more than a little luck. Happily, we make our own luck.
Talk given by Michael DeHaan and Greg DeKoenigsberg at All Things Open in October 2014, in which we discussed how we applied open source best practices to grow a large and active community of users and developers.
HTML5 is here and we should use it right now. It is fun and interesting to look at cool CSS3, Canvas and Video demos but our main goal should be to make our day-to-day life easier by using the cool things browsers offer us right now. Learn about local storage, simplifying interfaces and using HTML5 right now!
This is a quick introduction to webhooks I gave at GlueCon 2010. It was also a bit of an ad for a last minute 40 minute talk I was giving immediately after.
Keynote at the HTML5DevConf 2014 in San Francisco, explaining how many of the outreach we do these days looks a lot like sales pitches in the mid-noughties. They will make more sense once the video is out.
Keynote- We're going wrong: Choosing the web's future. Peter Paul KochFuture Insights
From FOWA London 2015
Web developers and browser vendors are trying too hard to emulate native apps; in vain, PPK says, because we can't out-native native. Meanwhile this quest for native emulation has a host of undesirable by-effects: too many new browser features that need too many new (and not always performant) tools to create polyfills, which cause too many people to think they only need to understand the tools in order to be a web developer. We're going wrong. We should take some time to figure out what the web is for, how we can have a successful web ecosystem next to, but not in competition with, native ecosystems, and how we should explain what web development is to Java developers and others who come from a non-web background. We need time to think.
Writing for software in school leaves out much of the true hassles in software development.
This brief lecture covers the hidden challenges when deploying to the real world.
/dev/fort: you can build it in a week @emwJames Aylett
Imagine a place with no distractions – no IM, no Twitter, in fact no internet access at all. Within, a dozen or more developers, designers, thinkers and doers. And a lot of a food. Now imagine that place is a fort. I talk about why anyone would want to go on holiday to do their day job, the bits of the internet we had to rebuild to work without the internet, and some tips you can use even when you don't have a fort.
People willing to add new features to their websites have too much of a choice. Choosing and testing addons is a task that requires either developer-superpowers and a unlimited budget or blind faith and dumb luck. In this talk we'll find out how to walk the middle ground and live to tell the tale.
See a video of the talk at http://www.youtube.com/watch?v=Sc6NkqaSjqw
React Native and the future of web technology (Mark Wilcox) - GreeceJS #15GreeceJS
What's all the hype about React Native? What is it? How does it work? Why does it matter and what clues does it give us about the future of web development? Did you know there's a React Native for the Web? What's that all about? It can't be all good, what's wrong with it? Where should you go to find out more?
Introduction to GraphQL (or How I Learned to Stop Worrying about REST APIs)Hafiz Ismail
Talk for FOSSASIA 2016 (http://2016.fossasia.org)
----
This talk will give a brief and enlightening look into how GraphQL can help you address common weaknesses that you, as a web / mobile developer, would normally face with using / building typical REST API systems.
Let's stop fighting about whether we should implement the strictest interpretation of REST or how pragmatic REST-ful design is the only way to go, or debate about what REST is or what it should be.
A couple of demos (In Golang! Yay!) will be shown that are guaranteed to open up your eyes and see that the dawn of liberation for product developers is finally here.
Background: GraphQL is a data query language and runtime designed and used at Facebook to request and deliver data to mobile and web apps since 2012.
Hafiz Ismail (@sogko) is a contributor to Go / Golang implementation of GraphQL server library (https://github.com/graphql-go/graphql) and is looking to encourage fellow developers to join in the collaborative effort.
CocoaPods talk given at the RubyMotion Inspect 2013 conference.
There is another version that does not include speaker notes available at: https://www.slideshare.net/alloy020/ruby-motion-inspect-2013-without-notes-18676749
The videos that were shown on slide 5 and 6 are available at: https://vimeo.com/63891717 & https://vimeo.com/63891716.
DevDay 2013 - Building Startups and Minimum Viable ProductsBen Hall
DevDay (http://devday.pl),
20th of September 2013, Kraków
Video at http://www.youtube.com/watch?v=L4eTOvq2WmM&feature=c4-overview-vl&list=PLBMFXMTB7U74NdDghygvBaDcp67owVUUF
At some point, the code you write today will be deleted and replaced with something new. This talk will discuss the life cycle of a large code base, and how to manage it over time to accommodate rewrites, giving examples from a major rewrite of the Firefox build and release pipeline over the last two years. You'll learn how to replace components of a running distributed system while keeping it operational, the proverbial replacing the wing of an airplane in flight.
The Junior Developer Survival Guide - GDI Ann Arbor 2/10/15James York
Are you new to the professional world of software development? Do you have new developers on your team? Are you wondering why college and the School of Hard Knocks did such a bad job preparing you to be a functional member of a high-performing team? Take some advice from a junior dev who has walked the path and learn to avoid rookie mistakes. Learn the skills employers value and how to get them. We will discuss quick return actions that can be undertaken immediately, as well as long term, slow-burn investments in your career. This session will focus on technical and interpersonal advice to help make your first job search, entry-level hire, and first year as a developer go smoothly. A great career won’t just fall into your lap. It takes dedication, skill, persistence, and more than a little luck. Happily, we make our own luck.
Talk given by Michael DeHaan and Greg DeKoenigsberg at All Things Open in October 2014, in which we discussed how we applied open source best practices to grow a large and active community of users and developers.
HTML5 is here and we should use it right now. It is fun and interesting to look at cool CSS3, Canvas and Video demos but our main goal should be to make our day-to-day life easier by using the cool things browsers offer us right now. Learn about local storage, simplifying interfaces and using HTML5 right now!
This is a quick introduction to webhooks I gave at GlueCon 2010. It was also a bit of an ad for a last minute 40 minute talk I was giving immediately after.
Keynote at the HTML5DevConf 2014 in San Francisco, explaining how many of the outreach we do these days looks a lot like sales pitches in the mid-noughties. They will make more sense once the video is out.
There has been lots of talk on the importance of writing good and manageable code – code whose inherent beauty bring tears to the eyes of the developer that looks at it. This talk is not like that. This talk will focus on the techniques that are used by millions across the world to bring tears to the eyes of the maintaining developer, as well as a graphic stream of profanities.We will investigate some of the most common anti-patterns and half-measures that occur in real live code, and will marvel at the ingenuity and outright creativity necessary to create ugly messes of unmaintainable code that still manages to work for it’s users.
Everyone wants (someone else) to do it: writing documentation for open source...Jody Garnett
Many people will cite how their adoption of software was based on the quality of documentation, and yet documentation can be one of the largest gaps in quality with an open source project. This talk will discuss why that is, what you (yes you) can do about it, and how the author has so far managed to avoid burnout by learning to accept less-than-perfect grammar.
A FOSS4G 2015 Presentation
Our world today is constantly changing. Multiple options, multiple models, multiple devices are the norm. How do we adapt and stay flexible for the future?
Presentation originally developed by Apex VP and Principal Consultant Bill Kasdorf for the benefit of an international institutional publishing office in 2014.
Plone is an excellent out of the box collaboration solution with rock-solid security track record. Learn how you can set up your own Plone [Intranet] in a Box™ in just a few minutes on any cloud provider and run it for as many users as you need, for only a few dollars per month.
https://2020.ploneconf.org/talks/your-plone-intranet-in-a-boxtm/view
https://2020.pythonwebconf.com/presentations/permissions-security-in-plone
Data security makes news headlines, often for the wrong reasons, when it has not been implemented correctly, or when it has been added to systems as an afterthought.
Plone is a secure, open source web content management system that is written in Python and has been under active development since 2001.
One of Plone's great strengths is its baked-in security model, which is comprised of:
object- and field-level permissions
roles
groups
workflow states, transitions, and guards
In this talk, I will explain the elements of Plone's time-tested security model and I will show how these elements work together to help developers create websites and web applications that are secure by default.
How to Setup a Plone Intranet in Half a Day (Python Web Conf 2020)T. Kim Nguyen
https://2020.pythonwebconf.com/tutorials/how-to-setup-a-plone-intranet-in-half-a-day
Whether at work or outside of work, we usually need to collaborate with others.
This collaboration can take many forms:
storing documents
organizing documents
sharing documents
creating and filling out forms
protecting documents and data from prying eyes
managing access to documents and data
finding documents and data
Enterprises enable this kind of collaboration by creating an intranet. Users must log into this intranet, quickly and easily find the documents and data they need, revise them, save them, and share them out to others on their project teams. Intranet administrators create teams and set aside workspaces for those teams.
Setting up this type of intranet does NOT have to be hard nor does it have to be expensive!
Plone is a longstanding, secure, open source web content management system that lets you create intranets like this.
In our interactive, hands-on tutorial we will cover how to:
install Plone on a brand new virtual machine
create a website using Plone
turn that website into an intranet
create user accounts
create user groups
create team workspaces
grant access to workspaces to the right group(s)
create and organize documents, files, and forms in workspaces
test the security of the intranet's access restrictions
And best of all: you will be able to do this for volunteer groups and any communities you're a part of.
What you'll need:
a laptop (any operating system)
an Amazon AWS account
See the training class guide for step-by-step instructions on creating an AWS account and setting up your own Plone server. It will save us some time if you do this before the class.
Melding React with the Ultra Secure Plone Content RepositoryT. Kim Nguyen
Plone 6 will be getting Volto, a revolutionary React-based front end, that will open up Plone app development and theming accessible to a new generation of integrators and designers. What does Volto look like, and how will integrators and designers work with it?
Have Content Quality, Will Search Your Intranet, by Fulvio CasaliT. Kim Nguyen
TriMet runs the public transportation system for the city of Portland, Oregon, and the surrounding area.
Over several years, TriMet's Plone-based intranet had accumulated lots of content, and the built-in search was not working very well anymore.
For this case study, I will show how we solved the problem by focusing on content quality. Faceted search was helpful both in the push for content quality, as well as in the final search functionality.
These ideas can help any Plone site, large or small, and should be considered for additional default features of Plone.
Length: Long Talk
Target Level: Intermediate
Target Audience: Integrator, User, Developer
TU Dresden: A Large-Scale Plone Deployment Case Study, by Sebastian GottfriedT. Kim Nguyen
In 2013 the Technical University of Dresden set out to relaunch their website. The plan was to replace the Plone2-based CMS with a modern Plone4 setup. Four years later, the process is now completed. In this talk I will present some of the challenges we met in the project and show how we did overcome them with Plone.
Length: Long Talk
Target Level: Expert
Target Audience: Integrator, Developer
TUD-Chat – a moderated chat add-on for Plone, by Sebastian SchietzoldT. Kim Nguyen
At Technical University of Dresden we developed an open source chat package for Plone
Length: Short Talk
Target Level: Intermediate
Target Audience: Integrator, User
Plone as a Conference Management System, by Adriana Ramírez V. and Gildardo ...T. Kim Nguyen
The Institute of Mathematics of The National University of Mexico organizes more than fifty meetings every year.
We show how Plone can help organizers with the complex and boring work before and after the meetings.
Length: Short Talk
Target Level: Beginner
Target Audience: Integrator, Developer
Castle CMS, an open source distribution of Plone with enhanced UI and integrated services for large scale sites.
Castle CMS is an enhanced distribution of Plone, released under GPL2, for large sites and security-conscious organizations.
Castle CMS is created and maintained by Wildcard Corp., provider of cybersecurity and open source web site solutions.
Find out about Castle CMS's content editing enhancements that make it easier to create and manage large amounts of content and its many integrated services for improved search, archiving, and collaboration.
Learn about Castle CMS's upcoming features and release roadmap, and how Castle CMS is in turn affecting the Plone roadmap.
Plone Futures, Plone Conference 2016 Keynote by Eric SteeleT. Kim Nguyen
Eric will cover what's in store for Plone 5.1 and beyond, including the work that's been done on plone.server and Mosaic. He will describe the multiple paths of modernizing the stack that are currently underway. This would move us right into the thick of the modern era of web development - with multiple front end implementations communicating with a RESTful back end.
Trajectory: Integrating SQL Data into your Plone Site, Plone Conference 2016,...T. Kim Nguyen
Eric will discuss different ways of using SQL data within Plone, primarily focusing on a methodology using SQLAlchemy and collective.trajectory that makes external data act as if it were Plone content.
Web Development with Vim by Johannes RaggamT. Kim Nguyen
Vim is everywhere. But out of the box, it is tedious to use and doesn't aid you much with your programming tasks. Due to its flexibility, it can be extended and configured to perfectly suit your needs.
This demo shows you what is possible with vim, how it can be configured to efficiently support your workflow and help you writing better code with auto completion, code analysis and auto formatting.
Easy online business processes with Plone forms and workflowT. Kim Nguyen
Plone is an open source content management system that can help your organization save money, improve efficiency, and enhance customer satisfaction through online forms and electronic workflow / business processing.
Plone for CMS review group at UW OshkoshT. Kim Nguyen
Covering ten great years of campus wide adoption of Plone at UW Oshkosh, highlighting the range of kinds of sites created: public, collaborative, intranets, workflow applications. For the video, please see http://www.kaltura.com/tiny/anow8
ER(Entity Relationship) Diagram for online shopping - TAEHimani415946
https://bit.ly/3KACoyV
The ER diagram for the project is the foundation for the building of the database of the project. The properties, datatypes, and attributes are defined by the ER diagram.
Multi-cluster Kubernetes Networking- Patterns, Projects and GuidelinesSanjeev Rampal
Talk presented at Kubernetes Community Day, New York, May 2024.
Technical summary of Multi-Cluster Kubernetes Networking architectures with focus on 4 key topics.
1) Key patterns for Multi-cluster architectures
2) Architectural comparison of several OSS/ CNCF projects to address these patterns
3) Evolution trends for the APIs of these projects
4) Some design recommendations & guidelines for adopting/ deploying these solutions.
This 7-second Brain Wave Ritual Attracts Money To You.!nirahealhty
Discover the power of a simple 7-second brain wave ritual that can attract wealth and abundance into your life. By tapping into specific brain frequencies, this technique helps you manifest financial success effortlessly. Ready to transform your financial future? Try this powerful ritual and start attracting money today!
1.Wireless Communication System_Wireless communication is a broad term that i...JeyaPerumal1
Wireless communication involves the transmission of information over a distance without the help of wires, cables or any other forms of electrical conductors.
Wireless communication is a broad term that incorporates all procedures and forms of connecting and communicating between two or more devices using a wireless signal through wireless communication technologies and devices.
Features of Wireless Communication
The evolution of wireless technology has brought many advancements with its effective features.
The transmitted distance can be anywhere between a few meters (for example, a television's remote control) and thousands of kilometers (for example, radio communication).
Wireless communication can be used for cellular telephony, wireless access to the internet, wireless home networking, and so on.
I broke what? Taking over maintenance on existing (well loved) projects, by Bert JW Regeer
1. I BROKE WHAT?!??!!?
TAKING OVER MAINTENANCE ON
EXISTING (WELL LOVED) PROJECTS
Welcome, today I am going to be talking about how I became the maintainer of a pretty well known Python request/response library: WebOb; and the struggles along the
way
2. BERT JW REGEER
WHO AM I?
But first, who am I?
- Bert Regeer
- Photographer
- tweeter
- blogger
- And as I am standing up on stage here, I dabble in programming!
3. WHAT DO I DO?
Day job: I am a team lead for a group of incredibly smart and talented individuals at crunch.io.
Open source: Oh, the list is pretty long but mainly:
- Pylons Project core contributor
- We maintain Pyramid/Waitress/Deform/WebOb/Webtest/and more
- Collective of individuals working on web related technologies
4. EXISTING CODE
NEEDS LOVE TOO!
We as a collective rely on a large amount of open source projects, how many dependencies does that pip install and yarn install pull down?
5. This is how people think Open Source is maintained… that there are teams involved that are pro-actively working on all aspects of the project and the lottery factor is
incredibly high
6. But as many of us at this conference know, it is actually a lot more like this. (Shamelessly stolen, with love, form CommitStrip.com, do check them out)
There is that one dedicated person with enough love for their project to keep things moving forward
7. EVENTUALLY THE
LOVE RUNS OUT…
However for some it is simply unsustainable to continue providing love when it starts taking over parts of their life, when the project is no longer fun or people move on to
other languages/tools and no longer require the project they helped bring to life and working on it becomes a slog.
8. YOU CAN HELP…
There are many tasks that you can do to help:
- Triage bugs
- Link tickets that are related
- Fix bugs and submit PR’s
- Write documentation or tutorials
9. YOU CAN HELP:
BECOME THE MAINTAINER
But the biggest one is reach out and ask to become the maintainer for the project, become it’s new champion, become that person that finishes one more ticket before
going to bed!
10. HOW I BECAME A
MAINTAINER
My story starts with the Pylons Project, a couple of years ago, when I was given a commit bit on the WebOb Github repository and added as the maintainer on PyPI.
11. STEP BACK, WHAT
IS WEBOB?
WebOb is a Python request/response library that was created by Ian Bicking who is also well known for Paste, WebTest, pip and virtualenv, just to name a few projects.
WebOb wraps WSGI and provides a convenience object for the request, as well as for providing a response, making it easier to create web applications that manipulate
the WSGI environment and provide a valid response.
12. WHO USES IT?
WebOb is used by a couple of web frameworks, Pylons the predecessor to Pyramid, Pyramid of course, and a variety of other smaller frameworks: Google AppEngine,
webapp2, Bobo, morepath, pecan, and OpenStack…
If you’ve ever visited Reddit, Yelp, SurveyMonkey, RhodeCode, or used some of Mozilla’s services, your HTTP request has gone through a pipeline that included WebOb.
The new PyPi is based on Pyramid and thus someday soon when that goes live, it too will use WebOb.
13. CODE STATUS
WebOb itself has organically grown over the years. The code has changed to handle newer HTTP headers, to meet new and changing standards. I am it’s third
“permanent” maintainer, coding styles are very different…
14. DETAILS
DETAILS…
Due to WebOb needing to support HTTP, and being a pedantic for correctness, I joined the project by fixing little bugs I had found, or inconsistencies with the RFCs and
what the code was actually doing.
I became a regular on IRC, and would argue for or against changes based upon the RFC
15. UH OH…
Before I know it, the following rolls by on my terminal in IRSSI, my IRC client:
16. MAKE X58 A COMMITTER AND
THROW THIS SHIT AT HIM
raydeo (Michael Merickel)
17. HE SEEMS INSANE ENOUGH
FOR THE TASK
raydeo (Michael Merickel)
Thanks raydeo :-P
18. X58 YOU NOW HAVE COMMIT
ACCESS TO WEBOB. MY
ADVICE: FIND A BLANKET
Chris McDonough
3 minutes later this appears. I never did find a good blanket, I think that is my only regret so far!
19. WELP; DON’T
MESS IT UP!
The story of how I became a maintainer is not that long, I just happened to be in the wrong place at the wrong time, and bam, there I suddenly had a bunch of extra
responsibilities.
Nah, just kidding, it was the right place, right time…
20. NO EXISTING
MAINTAINER
WebOb was also pretty special in that there was no existing maintainer for the project. It was being tended to by members of the Pylons Project, but there was no
singular person responsible for it.
21. SIDE-TRACK:
IMPOSTER SYNDROME
Before we continue, I wanted to quickly side-track, and hit on something important in our industry that I have seen from a lot of people, I too myself have a massive case
of imposter syndrome (the fact that I am up here talking to you today is a minor miracle)
22. “I’M NOT GOOD
ENOUGH”
The biggest challenge to overcome is the feeling of not being good enough. Imposter syndrome is like your brain lying to you about your successes, making them feel
minuscule or like you cheated, yet all your failures feel so much bigger.
“I’m not good enough”
23. YOU ARE.
In a lot of cases you won’t get handed the keys to the kingdom all at once, over time you will gain access here and there. First comes that email from Github that you’ve
been added to a new project or repository, you can now press buttons on Github and things go to “master”, then comes the message on IRC that you have been added
as maintainer on PyPi…
24. WHAT’S THE WORST
THAT CAN HAPPEN?
Seriously, give it a shot, and what is the worst that can happen?
27. ALL THE IDEAS
Almost instantly I had these great and grandiose ideas, things I wanted to fix, wanted to replace, I would make the library better than ever before and everyone will love
me!
28. RIP OUT THE OLD
It’s like moving into a new house, you want to get rid of the old color on the wall, you put down some new carpet (or deep clean it).
You want to just dive in, rip out various decrepit API’s and remove that code for supporting IE 6 on Windows XP
29. GOOD INTENTIONS
Slowly you clean up the code and it feels like a nice and clean API. Everything feels great, and things are looking up!
You’ve pushed a couple of alphas and betas and everything still seems to be okay. You do some simple smoke tests with projects you know use your little library and
nothing seems broken, so you push a new version to PyPI.
30. THE BUG REPORT
Not even 24 hours later you get an email from Github letting you know there is a new issue, the title: “Latest change breaks X in Y” where Y is a well known open source
project that relies heavily on your project
31. WAIT… WHAT
DID I BREAK?!?
When you were making your changes, you had no idea that a little used feature, likely undocumented was being used by downstream consumers of your project.
32. TAKE A STEP BACK
Yes, you are the new maintainer, and yes it is now your project to do with as you please, however if it is a well loved project (like WebOb) it is likely used by many people
around the world in ways you can’t even imagine.
33. CODE GROWTH
Over time code grows organically, it has all of these little “warts” that look like they are innocent but likely it is a bug fix that made things better for someone.
You just removed that little thing that person relied on in their project to make their project a success.
34. BACKWARDS
COMPATIBILITY
This is where the next question comes in, how much backwards compatibility do you keep just to allow users of your project to continue using your project?
35. LIBRARY
OR
TOOL
A library, such as WebOb has a very different use case compared to a tool like pip or virtualenv. In a tool you have a well defined interface, the CLI and the command line
arguments, the internals are less likely to matter, in a library internal changes that don’t affect the API can still have an effect on projects that depend on your library.
36. POLICIES
Does the project you inherited already have policies regarding deprecation? Are you expected to warn about impending deprecations in the code? The Python warnings
module is fantastic, and more people should run their tests/code with warnings turned on, especially during the development stages.
It is important to set these policies and hold yourself and others to them, it is what can make or break your project.
37. CAN YOU AFFORD
TO LOSE USERS?
Sometimes it makes sense to remove features or APIs. If they are ill-defined or no longer serve their purpose, but the question you should be asking is if you could afford
to lose your users. Can you afford a fork being made that then splits the community and lose potential changes/patches due to users using the fork instead?
38. (╯°□°)╯︵ ┻━┻
How am I supposed to improve things if small changes break someone?
39. TESTING
Are there tests? If not, can you write them? It’ll be much easier to know if you are about to break consumers if your tests are able to warn you ahead of time.
Writing a test suite that provides 100% coverage will help you understand the existing code.
40. RE-THINK
Instead of outright removal, are you able to implement new functionality and refactor the old API’s and functions to use the new functionality and keep backwards
compatibility in a clean way where you are only required to maintain the new and the old is a small little shim.
41. BREAKING
CHANGES
Breaking changes are going to happen, there are going to be times when you need to tighten the API requirements, or to implement newer RFC’s you may no longer be
allowed by the standard to generate the previous output/result.
This is where your deprecation policy comes in, have a well defined way to let your consumers know, and the breaking changes become much easier to handle.
42. NUCLEAR OPTION:
REWRITE
This is the most expensive option, and not one that I would recommend. You will still want to maintain the previous version, but also the new version at the same time
doubling your work load. Especially since you are not going to get buy-in for your new version from all of the existing users.
43. […] SINGLE WORST STRATEGIC
MISTAKE […]:
THEY DECIDED TO REWRITE THE
CODE FROM SCRATCH.
Joel Spolsky
The nuclear option while definitely viable, is not something that software development veterans like Joel Spolsky would ever recommend. This is a quote from his article
regarding the disaster that was Netscape 6 that took years to be released to the public. It is better to refactor the code over time than it is to rewrite.
44. WHAT’S NEXT
You’ve had your first bug due to making a huge change without necessarily knowing just how people are using your project, you’ve implemented policies around
deprecation and you are slowly refactoring while considering backwards compatibility.
45. GATEKEEPER
You are now the gatekeeper of the project, you have to uphold not just the standards set forth by the previous maintainer or maintainers, but set the bar higher by
continuing to improve the code base.
46. TEMPORARY
GUARDIAN
You are the projects new temporary guardian. Start looking for new people to help contribute to your project. Look for mentoring opportunities that allow you to find your
potential replacement. If you win the lottery, how long are you going to be around? Sailing around the Bahamas sounds much nicer than worrying about bug reports!
47. COMMUNITY
Find ways to engage the community, just because you are the maintainer continue to submit pull requests and encourage the community to review and or provide
feedback.
This is not as easy as it sounds, I have unfortunately not succeeded in doing this for WebOb… yet.
48. OUTREACH
Are your users open source projects? Do you have some extra time? Contribute to their project by reviewing their use of your library/tool.
You don’t need to submit patches, but understanding how your users are using the project can help guide your future changes.
49. CHANGE OF
PERCEPTION
For this last part I want to talk a little bit about how my perception of being a maintainer has changed.
50. “JUST”
I’ve been at fault for trying to push maintainers of projects to “just” accept my pull request.
There is a lot of thought and cognitive overhead that goes into maintaining a project.
51. UNDERSTANDING
CODE IS HARD
Understanding other peoples code is difficult. First you need to understand the existing code base, and then you need to understand the new code that was just
submitted as a pull request, and then you need to understand how that new code affects any other parts of the project and the users of your code.
52. BETTER BUG
REPORTS
While I always tried my best to provide good bug reports with adequate information, it wasn’t until I became a maintainer that I understood the pain of a drive-by report
with limited information and an issue comment of “it doesn’t work”.
Bug reports are now longer, more detailed and generally include code samples to either reproduce the bug, or line numbers where I think the issue lies.
Minimal Complete and Verifiable Example as defined on Stack Overflow.