bigchaindb / js-bigchaindb-driver

Official BigchainDB JavaScript driver for Node.js and the browser
https://docs.bigchaindb.com/projects/js-driver/en/latest/usage.html
Apache License 2.0
216 stars 92 forks source link

Gitcoin bounty for enhancement of the JavaScript driver size by < 1MB #221

Closed innopreneur closed 6 years ago

innopreneur commented 6 years ago

Hi there!

Thank you for dropping by. BigchainDB is open source project that has many moving parts. We try to allocate time to each issue and feature request but sometimes we run out of time or the problem is out of our maintainers expertise reach. To combat this problem we add bounties to issues / features. this is our way of saying Thanks for your contribution to our cause.

If you do not have any gas (Gwei) to pay transaction fee for work submission, we will be happy to send Gwei to you :)

We will try to help you help us getting this issue closed. But, if for some reason you would not be able to work on this bounty, please see our Gitcoin profile for our other open bounties. We would also encourage you to watch this repo as we are planning more upcoming bounties and we would love to have your contributions.

How can you help?

We are looking for some help to minimize the size of our javascript driver to < 1MB. We investigated the cause of size bloating for this driver and found that one of the dependencies crypto-conditions takes up quite some size. Bad thing is we only use a fraction of its code base. So, one of the optimisation strategy, we believe would be to somehow bundle only the used code. This may either be achieved by updating configurations in webpack 4 or feel free to be creative and propose alternate solutions. Our end goal is to optimise the size of the driver to less than 1 MB and you are free to use other means to optimise the size without breaking the build and tests.

What needs to be done?

We are very happy when -

Seen this problem before ?

Any help solving this is welcome. Feel free to leave any comments and help someone else to solve it. We might airdrop tokens to someone even if not directly completing bounty.

Questions & Reviews

Pull requests will be reviewed by one of maintainers or long term contributors. In case of any additional questions feel free to ask in this thread (preferred) or message me personally on Gitter (username - innoprenuer) and we will do our best to add the missing info :)

gitcoinbot commented 6 years ago

Issue Status: 1. Open 2. Started 3. Submitted 4. Done


This issue now has a funding of 0.5 ETH (214.79 USD @ $429.59/ETH) attached to it.

gitcoinbot commented 6 years ago

Issue Status: 1. Open 2. Started 3. Submitted 4. Done


Work has been started.

These users each claimed they can complete the work by 7 months ago. Please review their action plans below:

1) dmvt has been approved to start work.

I will be altering the build configuration to remove the crypto-conditions source map from the compilation.

Learn more on the Gitcoin Issue Details page.

dmvt commented 6 years ago

Thanks for accepting my proposal! I took a look at the builds and it seems like the actual source code compiles to around 600k. The extra bloat on top is the inline source map. My proposal is to eliminate the source mapping for vendor modules by altering the webpack config for the development environment. I aim to have a functional PR within the next several days.

chalidbdb commented 6 years ago

Thank you, makes sense. If you would like sharing any progress update feel free to post here. Looking forward.

gitcoinbot commented 6 years ago

@dmvt Hello from Gitcoin Core - are you still working on this issue? Please submit a WIP PR or comment back within the next 3 days or you will be removed from this ticket and it will be returned to an ‘Open’ status. Please let us know if you have questions!

Funders only: Snooze warnings for 1 day | 3 days | 5 days | 10 days | 100 days

dmvt commented 6 years ago

Apologies for the delay on that. This was my first time doing this type of configuration with Webpack 4 so it took me a good bit to get fully up to speed. I wound up configuring webpack to split out the vendor and main source files. From there I was able to exclude the compiled vendor asset from source mapping. A plugin ties it together by merging the vendor and main assets back into one file with inline source mapping for the first line (all of the non-vendor code) and nothing else.

Production still works the same way, providing a separate source map file for the combined vendor and non-vendor source code.

screenshot from 2018-07-17 02-31-13

innopreneur commented 6 years ago

Thanks @dmvt for helping us with this. We would like to help us with other upcoming issues and bounties. It would be nice if you could join our gitter channels - https://gitter.im/bigchaindb/bigchaindb https://gitter.im/bigchaindb/js-bigchaindb-driver

We will be releasing bounty reward to you soon :)

gitcoinbot commented 6 years ago

Issue Status: 1. Open 2. Started 3. Submitted 4. Done


The funding of 0.5 ETH (248.69 USD @ $497.38/ETH) attached to this issue has been approved & issued to @dmvt.