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.
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