SAFEbeaker Browser Proposal

I am resending this proposal and now fully support SAFEr Browser(s) Proposal - #33 by cretz

SAFEbeaker Browser Proposal

Summary:

This is proposal for the SAFEnetwork community to fund and support the development of a standalone SAFE Browser that directly interacts with SAFEnetwork Launcher and directly with the network. We will use a forked version of Beaker Browser, which is an electron based cross platform engine. The vision of this project is to not only build a core application for the SAFEnetwork that will become the default platform bundled application, but also provide valuable data on how to successfully build utility software needed for the community.

Description:

The simplest and most sensible way seems to work with the FS-API Beaker, which is already implemented in Beaker browser, with the ability to intercept calls and redirect them to the API Launcher. https://github.com/pfraze/beaker/blob/master/app/lib/fg/fs-api.js

This will require the creation of a new module based on fs-api, and it will be necessary to put the cap which will redirect all requests to a new module, banning all other outputs (including the file system and to the Internet).

Thus two tasks will be implemented -

  1. The browser will be able to work only with SAFEnetwork traffic, other traffic will be blocked.
  2. Work will be available through the API Launcher.

Budget:

We anticipate this project will require at least 90,000 MaidSafeCoins to complete. This amount was derived from current MAID market value, developer cost estimates, and a small amount to reimburse @MrAnderson’s initial investment and risk.

Stretch Goals:  

(If we are over the minimum funding goal, then we will introduce an exciting way we will hire/fund/build these features)

Node filesystem

The beaker.fs API is a safe way to access the SAFEnetwork filesystem.

Beaker applications that are loaded via SAFE Launcher have a sandboxed folder available to them. But, they also need a way to get outside the sandbox, eg to work on a spreadsheet in ~/Documents This is an API for both use-cases.

App Folder

Each application has a sandboxed folder, which they can use without asking permission. This is the 'App' folder.

User Files and Folders

Applications can ask for files and folders outside of their sandbox. These are 'User' files and folders. The permission to use these objects will persist until released by the application.

Merge SAFE Launcher and SAFEbeaker

Used to serve SAFE applications, and provided as a permissioned API.

As @happybeing smartly describes “merging SAFEbeaker with SAFE Launcher so for most activity the user has just one desktop application with websites and Web Apps apps on the browser tabs.”


Node filesystem is on the Beaker’s Dev planned list and should have a SAFE style effect of “raising all boats.” We are open to community input to other desired features and will later introduce a way for the community to vote on what feature to work on next, once the core browser is complete.

Team:

Our team consists of:

@PureF - Dev company

@dkarataev has agreed to build this application and has been vetted by @MrAnderson to be more than capable to produce a quality product in stated time of one month. PureF represents a software dev company based in the United States. They develop web applications, ecommerce and mobile apps that bring real value to businesses and online communities. Dev Company are a professional team with 10+ years of experience each that has worked with clients ranging from local businesses to global brands and enterprises. Technologies: Ionic/Cordova (Android&iOS), HTML5, PostCSS, CSS Modules, LESS, NodeJS, AngularJS, ElasticSearch, ReactJS, Gulp, AWS, Webpack, MongoDB, Socket.io. Get in touch for our full portfolio.

@MrAnderson - SAFEnetwork Community Member

Travis Remington will be the point of contact for this project development. He personally reviewed, interviewed, and has a mutually agreed contract with @PureF to build the application. Travis has maintained an active role in the SAFE community forum since early 2014 and has spent extensive time in the crypto-sphere since 2011. In addition to SAFEnetwork community, @MrAnderson is a founding member of Crowd Found Hub and sees this SAFEbrowser as an important milestone in proving the power of community driven development that allows people to labor in freedom. Travis has several projects ready to be built on SAFE and is doing everything possible to contribute to the quick success of MaidSafe and the SAFEnetwork.

POC duration and justification:

We will need to test, which is anticipated to take two weeks; (debugging). Writing a code itself is 20-25 days

27 Likes

Is this the first browser proposal??! I can’t wait to see you get backed @MrAnderson although I hope you also get some healthy competition :wink: I can’t wait see what this community comes up with

2 Likes

Yes this is the first proposal and only 5-6 days left…? @frabrunelle could we get a review on how this will go down.

I left on holiday right after the announcement and was quite surprised there hadn’t been anything yet when I returned. Well, I think I found a great solution for a community already over commited to other things.

Competition can only help the community as a whole. One of the beautiful things about open source development, no us versus them…just a continuous progression of wins.

2 Likes

Great. Using the Beaker Browser as a base will contribute to other great decentralised technologies and build bridges with those communities. This would be less so if using Brave or Firefox as a starting point.

3 Likes

I might be a little bit off here, but isn’t the “new tabs” on browsers something like a appstore? Although I don’t know if this can carry the weight of a website, I’m just guessing/hope that it could.


The only powerful difference here is, that as soon as a user clicks on the “new tab” they could get the appstore, instead of having to type in a url. At first sight it would be the perfect play ground for @whiteoutmashups appstore, I could be wrong, but I’m just thinking out loud here (actually started thinking about it, just now).

Thanks for taking this task and you can absolutely count on me with financial support. :stuck_out_tongue:

Metamask looks fun and might give some ideas :stuck_out_tongue:

6 Likes

Great to see a proposal for browser, good luck hope you can make something really cool.

Like the Metamask movie looks great

1 Like

I think the line between “APPS” and “website” will further blur with SAFEnetwork. I like the starter block style page most browsers are doing now and what @whiteoutmashups is doing with the app store is a prime option to be the default starter page. When we move forward with the stretch goal of combining the browser with the launcher, this line of thinking should organically happen.

I initially had several other stretch goals, but after reading @frabrunelle 's well placed advice. We are going to focus on the stuff we can build today. We will be utilizing the KISS protocol, or for those that are sensitive: “less is more.”

Since you brought it up though :wink: , this is what I envisioned for a galaxy far far away :sunny: :wink:
Interledger with Blockchain, legacy and the “mother of all coins” SAFEcoin integration - All electronic transfers have to be recorded in stateful systems. Otherwise the same instance of an asset could be sent to two different destinations, essentially duplicating the asset. This is also known as a double-spend. We call these stateful systems ledgers.

Ledgers consist of accounts. Accounts are individual buckets containing a decimal amount of one type of asset, usually (but not always) associated with an owner. This amount is also called the account’s balance. Balances can be positive or negative, representing assets or liabilities.Assets can be transferred between accounts on the same ledger. We call these events book transfers or just transfers.
A transfer of assets across ledgers requires two or more local book transfers. Some system must know the relationship between the two transfers. We call this system a connector. The same system may act as both a ledger and a connector.
The Interledger is a network of independent and diverse ledgers. Each account is part of a particular ledger; the Interledger itself is only conceptual.

5 Likes

Why do we need a SAFE exclusive browser? Seems unnecessary.

2 Likes

I want the equivalent of a Swiss Army knife, and one with pluggable options at that, rather than a scalpel:

A browser in which you can have each tab on a different network, especially including networks currently not even imagined: Clearnet, Tor, SAFEnet…

My current browser provides for a (add-to-able) choice of search engines, one of which it defaults to if I type some random thing. It also has plug-ins that put convenient buttons on the toolbar.

I want a browser that opens by default on some user-selectable network, with addable-by-plugin radio buttons on the toolbar that allow the user to open a tab and select a network.

A one-network browser will lose out to the sort of browser I describe above. Making it a framework for other developers to add to, as described, will make it much more future proof.

EDIT: I’m not saying they need to build it out and include Tor, for example. I’m just saying, start with creating an API for a generic network to use the browser, then add the options for cleanet and SAFE, and leave it to future devs to add plugins for other networks. And after all, we can expect SAFEnet itself to be fluid in its structure and interface during alpha and into beta, so adding it as a plugin rather than hard-wiring it into the browser will make such upgrades much easier to handle.

4 Likes

The central goal here is to a simply build a browser for users that has privacy, security, freedom set as the default. Non tech users will not have to make any adjustments to the settings to view the SAFEnetwork.

Additionally, this gets the ball rolling for future devs to more easily (Other browsers are massively complex) build onto this core browser with the features they want.

I will follow up with more details to how this API for a generic network could possibly work. I think we would fail with this build if it didn’t make it easier for others to integrate SAFEnetwork into all of the more complex browsers in the future.

Having endless options and customization is amazing and something I seek out, but my target end-user is my 87 year old grandparent who still calls the Internet Explorer Icon her email and writes down every step she has to do to buy something from Amazon; but still calls me to order something. When her home page of yahoo email (set by me) some how changed she called me immediately and said her email was broken. Last but not least she manages to click on every spamware, virus, scam you could imagine and has had her credit card information stolen multiple times.

Finally, MaidSafe felt this community driven build was important enough to be the first project for the Community Engagement Program so I will do everything in my power to make sure this is completed. It seems logical starting with something simple and achievable now so we all can learn and build from this initial project.

10 Likes

You have my support.

Please get in touch when you are ready to work on integration / fluidity across projects.

Our tests have primarily been around Firefox, Chrome, Safari and Opera (with the Droplet Test Network), but if your project succeeds (will support with part of my personal savings) then we will be very excited to begin developing around your Beaker browser as well.

Let us all push for a very out-of-the-box experience at SAFE Network launch, with access to files, an App Store, a browser, basic Decorum, early crypto trading platforms, and all the basics that a SAFE user would require.

6 Likes

Thank you so much for the kind support. :sparkles:

A united SAFE community of developers will produce amazing things. All the flashy proprietary chrome/firefox plugins will come later as the value of the network/SafeCoin grows…we know they will build them and that will be fine for a specific end user. The thing that will make a huge difference to how things are done in SAFE is the user friendly ecosystem will already be built and be the core reason why the network and SafeCoin are growing in value.

3 Likes

Below is a set of notes and questions, numbered for easy response. Please don’t take them personally, they are all just my opinion. I have a million more items worth discussing, but I’ll try to keep the list short for now.

  1. Please do not try to abstract SAFE into some common FS API. It has many more features that an abstraction can’t address. Also, it is highly unlikely that you will get benefit from this abstraction because it’s not like people are switching from IPFS to SAFE and vice versa frequently. Please just support all SAFE API features as minimally as possible. If an abstraction over different APIs is required, it can be done in a library. Also, as part of this project, please document the API in exact detail, because some of us may make our own browsers and we want interoperability :slight_smile:
  2. Please discuss how you plan to handle HTTP links/requests. Outright block them all and allow the user to open HTTP requests (that happen on the main frame only) in their browser (my preference)?
  3. Please provide all of the features/permissions you plan to enable on the Electron web view.
  4. Please discuss how the webpage will use the API and how you will ask the user for permission. Specifically looking for how granularly you store this information
  5. Please provide information on how you are going to handle user login w/ the launcher. Is it going to be on first FS mutation request? On startup (my preference)?
  6. Please provide information on how you are going to store state including user permission items and user auth success info. This is especially important in multi-user scenarios.
  7. I do not agree with the “app folder”. Use of cookies or HTML5 local storage is a better option. If there needs to be an “app folder”, it should be 100% opt-in, not defaulted.
  8. Please provide information on how you plan to handle web caching and state management (i.e. cookies, local storage, session storage, etc). I suggest no caching whatsoever and cookie and local storage management just like normal browsers do.
  9. Please discuss the URL format. I strongly suggest safe://.
  10. Please please please do not merge this application with the launcher. There is no real benefit (we can make installation easy by having your install fetch the launcher install if not already present on the system). It is a huge issue if this browser is embedded into maidsafe software for many reasons, the least of which is the folly of having a single, “blessed” implementation.
15 Likes

Thank you for the very thorough review. We will get started in addressing each excellent point.

@cretz you mentioned on the other thread about being open to consulting with the build. Is there a specific component or part of this you are most passionate about? You obviously have the right motivation and skill. If there is anyway I can make it easier for you to work on any part, let me know.

3 Likes

I am not interested in participating in the code (though I might make an alternate implementation if I get the time). However, I am happy to code review, give advice, test, etc as an outsider. The things I am most passionate about are basically what’s there in the notes. Mainly I just want extreme security, simplicity, and very few features :slight_smile: If the entire (granularly opt-in) API is exposed to site devs, they can do wonders. I look forward to seeing the updates, thanks!

4 Likes

Lets start with the simple scalpel first and then build the complicated Swiss-army knife.

I think it would help with adoption if the Launcher had a built in browser that just worked right out of the box. The browser and launcher should be one in the same. This will let the user know that the Safe Network works just like their old internet and that SAFE is not HTTP and that it is a new protocol.

You have my support to the tune of 10,000 MSC.

7 Likes

Making it usable by your grandmother is a matter of the user interface, (in particular, its default configuration) and does not conflict with making it extensible to an arbitrary number of and types of networks.

2 Likes

You’ll have my support for 5-10k maids.

I agree with your grandmother analogy. If it isn’t completely idiot-proof then you alienate the idiots, which is the vast majority of the population.

7 Likes

You have me getting stomach cramps from laughing, I totally get it and feel that way sometimes. My grandmother is a great use-case for me though, because she is a brilliantly smart person (how many 80 year olds do you know that email) who taught school for thirty years. She apologizes all the time and says she’s an idiot, but my response is often “grandma I was the idiot who assumed you would be able to use lastpass with yubikey 2FA and also their password generator (So when her “grandmapassword” gets hacked she doesn’t lose access to everything).” I come across tech all the time that I think would make her life easier, but I have to remember why she uses the computer. She wants to communicate with family and friends and work on her genealogy tree and she doesn’t want to keep getting pop up screens that tell her the computer is infected with viruses (click here for example)…that is it. Even at this most rudimentary use I think there is great promise for SAFE.

3 Likes

Totally agree and hopefully we build something that can have extensibility for an infinite amount of networks. If we finish this initial implementation and the community speaks by financially supporting further features then I will hire whoever needs to be hired to keep doing this same approach; over and over. Sooner or later talented developers will realize they can work directly for the community and don’t need people like me…and that is great too.

Wow, already close to half of what would be required from the community to move forward. 45k MAID from MaidSafe and 45k MAID from community and just between the two of you (assuming max stated amount) 20k is almost half way. This is exciting stuff!

2 Likes