General

Open Source and Asserting “No”

A figurine of an oktokat within the guts, within the background a laptop laptop with the main web teach of the GitHub open.
Photo by Roman Synkevych 🇺🇦 / Unsplash

About a weeks ago I turned into once digging into an attractive advanced speak that turned into once perfect affecting no longer up to 1% of customers within the subject with an utility. With a constant mix of emotions working with React Native I love how I will be able to in total breeze the total methodology to the offer all the device thru an investigation.

So I come across a library acknowledged as react-native-fs and I learn what I have to, but additionally gain some appealing discoveries.

  • It has ~500 open components.
  • It has ~60 open pull requests.
  • It has a built in HTTP library for downloading recordsdata.
  • It has a library built in for uploading recordsdata.

So whereas I am attempting to appropriate learn a limited charset speak with a created file – I realized the characteristic residence of this project is slightly gigantic. So in a negate of affairs like this I deem the author inherits a lovely deal of tech debt of issues to defend up.

So I ranking rather selfish and sweetness if the library turned into once explicit to appropriate the filesystem and left out all those additional elements – may perchance presumably well additionally I await a extra ranking resolution?

From an Open Source maintainer myself I think its extraordinarily important to speak “no” to requests/elements that bloat your library too mighty. What I’ve considered happen repeatedly conducted out is something like this:

  • Proficient contributor Z delivers characteristic X to project Y.
  • Carrying out Y accepts it.
  • Feature X has a subject topic in most modern originate.
  • Carrying out Y did no longer delivery that characteristic so asks contributor Z for some benefit.
  • Contributor Z is no longer around and the repair is taken in by the project.

So a project mustn’t think about the immediate term fair appropriate thing about a brand original characteristic, but realize the lengthy bustle implication of supporting such characteristic.

I may perchance presumably well additionally have accredited a characteristic to re-add enhance for 32 bit binaries in Apktool, but I struggled for hours to determine re-add that enhance when the upstream AOSP project launched a brand original main model of Android.

I did on the replacement hand mumble “No” to including Apktool enhance for the yelp Android platform. Since I feared that enhance of conserving that characteristic added would be extraordinarily sophisticated.


So bright help to the filesystem learn I started with. I started exploring for a bundle that would be scoped to appropriate filesystem operations and nothing else.

I learned the reversal with rn-receive-blob a spell binding project that began as a result of React Native struggled with properly uploading Blob (binary) contents.

The bundle exploded with status and doubtless ample added a filesystem implementation to it. So very like we seen with the assorted filesystem bundle:

  • Forked and persevered below a brand original owner.
  • ~450 open components.
  • ~50 open components.
//github.com/joltup/rn-receive-blob

So I ranking selfish again. I may perchance presumably in any case desire this library turned into once split between file access and network module. It seems in my learn that the smaller a library’s characteristic residence is – the extra ranking it’s.

Here may perchance presumably well even be the Unix philosophy on the tip of day and I think I am beautiful aligned with it now. I appropriate desire libraries to shut appropriate to a tiny characteristic residence and attain it properly.

I am exhausted from seeing a library deserted as a result of it expanded too mighty in elements.

I am exhaused from seeing a library buggy as a result of it expanded too mighty in elements.

I am exhaused from internal debates rewriting a bundle and assuming that responsibility to have a smaller isolated characteristic residence.

All in all I am being mighty extra cautious when researching dependencies and libraries earlier than bringing them in.

Be taught extra posts by this author

Related Articles

Leave a Reply

Your email address will not be published. Required fields are marked *

Back to top button