Skip to content
This repository has been archived by the owner on Nov 5, 2021. It is now read-only.

282-deterministic-builds #297

Merged
merged 5 commits into from Sep 17, 2018
Merged

282-deterministic-builds #297

merged 5 commits into from Sep 17, 2018

Conversation

jakubgs
Copy link
Member

@jakubgs jakubgs commented Aug 16, 2018

Please help me to complete this. Not sure what I'm missing, this is the first idea definition I've created.

@status-github-bot
Copy link

status-github-bot bot commented Aug 16, 2018

Hey @jakubgs, and thank you so much for making your first pull request in ideas! ❤️ Please help us make your experience better by filling out this brief questionnaire https://goo.gl/forms/uWqNcVpVz7OIopXg2

Google Docs
First of all thank you so much for taking the time to make your first foray into the world of Status. We want to make sure that your experience with building the future of the decentralized web with us is not only enjoyable but gives you real purpose.

Please check out our wiki at https://wiki.status.im and our Dev forum at https://discuss.status.im for more in depth longform discussion -- You can also join our Riot at https://chat.status.im which has all of our developers to answer any pressing questions you may have.

## What exactly we going to do?

- Verify all of our dependencies are frozen and versioned (`Gemfile.lock`)
- Verify we depend on no resources pulled from internet during build
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is it about resources from Internet which we do not control or about any resources? For example, desktop builds status-go by doing git clone on-the-go for specific revision. Usually, there is no issue with doing that.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@jakubgs, during desktop mac build we also download a prepopulated zip file with libraries and frameworks needed to create StatusIm.dmg. Currently, it is stored in a separate github repository. Where should it be stored for a deterministic build?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I believe that we should be able to automate creation process of prepopulated zip file content. The main concern is ubuntu_server binary with modified realm node-js module.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@vkjr is right, this is the kind of external resources I'm talking about. Now as @Maxris said, this should be either:

a) built by us in a deterministic way
b) versioned and checksumed so we know we get the same thing every time

success-metrics: yes
clear-roles: yes
future-iterations: yes
roles-needed:
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Seems like it'd be useful to have Clojure/Go devs, or not?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

And perhaps security @corpetty as well, not sure

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes, definiely.


## Timeline / Checkpoints

__TODO__: Not sure?
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What's something reasonable that can be done in first iteration? Perhaps something like find out current state of each sub package/component and what biggest blockers are. This way the work can be distributed, so someone might look into JS vendoring, and someone else figuring out how to get out timestamps from some ObjC linked monster config file.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

That sounds reasonable, thanks.

Copy link
Contributor

@oskarth oskarth left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Generally looks good, added some comments.

One idea is to ask Clojure/Go people in #core to see if they want to help out with this.

Copy link
Contributor

@oskarth oskarth left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Awesome to see so many people committed to this

@jakubgs jakubgs requested a review from cammellos August 27, 2018 16:49
@oskarth
Copy link
Contributor

oskarth commented Aug 28, 2018

This can be merged right? Are there more people who want to review? What's the plan for starting it? the timeline/checkpoints seems a bit fuzzy (maybe on purpose)

@arnetheduck
Copy link
Member

arnetheduck commented Aug 29, 2018

A way to measure success here would be that apk is available on f-droid - this ensures that someone else can reproduce our build: https://f-droid.org/en/docs/FAQ_-_App_Developers/#will-my-app-be-built-from-source

@jakubgs jakubgs force-pushed the add/282-deterministic-builds branch from e26c7fa to aa5f5bd Compare August 30, 2018 14:29
@jakubgs
Copy link
Member Author

jakubgs commented Aug 30, 2018

I've added another interested person(@antdanchenko ), I also talked to people interested and we might have to wait a few weeks to start with this for real.
I can start right away by implementing a proof-of-concept for a simple go package, and once that is done we can start by doing the same but for the whole status-go package. I think it would make sense to involve others only once I have a working prood-of-concept for how this kind of build would work.
Not sure if this would be part of the swarm or separate, since initially it would be just me.

@Graeme-Code
Copy link

Hi everyone,

I’d like to be apart of this effort. I’m really interested in this because:

  1. I believe disruptive dapps will face restrictions on mainstream app distribution channels. Meaning that people will need to download these dapps via channels which don’t have the credibility/trust like a play store or App Store. In the future, deterministic builds will be key to distribution of Dapps.
  2. It has interesting UX implications in the sense of just how easily someone can “know” that a build has not been tampered with and is exactly the same as the one produced by a developer.

I can help here by coordinating with core contributors/marketing/UX/community resources to get people excited about deterministic builds and work to improve the users process of knowing their build is deterministic.

@oskarth oskarth merged commit 84820fa into master Sep 17, 2018
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

6 participants