[HN Gopher] Bring Your Own Client
       ___________________________________________________________________
        
       Bring Your Own Client
        
       Author : pcr910303
       Score  : 446 points
       Date   : 2021-03-05 11:47 UTC (11 hours ago)
        
 (HTM) web link (www.geoffreylitt.com)
 (TXT) w3m dump (www.geoffreylitt.com)
        
       | anthk wrote:
       | On Google Docs, there were some CLI tools that today are
       | deprecated.
       | 
       | EDIT: not yet:
       | 
       | https://coderwall.com/p/elfkaq/editing-google-docs-with-vim
       | 
       | The best setup would be:
       | 
       | Wordgrinder/nvi+py3-markdown for Google Docs.
       | 
       | Sc-IM+GNUplot opening Google Sheets.
       | 
       | MagicPoint generating HTML files usable for Google Slides.
       | 
       | Rclone for Drive.
        
       | hntestacc wrote:
       | blah
        
       | Andrew_nenakhov wrote:
       | All I want from office software is a clone of Google Docs that
       | would be open source, self hosted, allow concurrent file editing
       | and would use OpenDocument file standard for storing files.
       | 
       | Humanity really needs that.
        
       | polote wrote:
       | > even if Google wanted to expose an API for editing Google Docs
       | in third-party editors, it would probably be very challenging
       | 
       | It does,
       | https://developers.google.com/docs/api/reference/rest/v1/doc...
       | 
       | The reality is that building an editor for text is easy. Building
       | a rich text editor is faaaaaaar from being a simple thing
        
       | megous wrote:
       | BYOC for shopping online would be nice. Exchange formats for
       | product aggregators sort of solve one part of the equation. But
       | ordering is still an unsolved issue.
       | 
       | It shouldn't be that hard to do. You may need maybe 5 endpoints.
       | Get all product data for the whole stock, get individual product
       | images, get order requirements (can include terms and conditions,
       | desired information for the order, payment options, human contact
       | info, etc.), post an order, get order status.
       | 
       | On this API you can easily create a fully featured 3rd party
       | online shopping clients. Some shopping experiences these days are
       | atrocious.
       | 
       | Some hugely popular platforms have product lists hidden like 4
       | screens bellow the fold, separated by tons of crap, that just
       | gets in the way. Category selection is placed such, so that
       | categories slide away, when you get to the product list after
       | selecting one of the categories, and if you want to switch
       | category, you just have to scroll all the way up again. No
       | options for selecting alternative views, like in a file manager
       | (large icons with a ton of detail, list view, etc.)
       | 
       | Each new eshop you have to learn how to navigate it, and
       | collecting information about the ToC and payment/delivery methods
       | is a hassle.
       | 
       | Could be so much better if there was some simple web protocol for
       | this, and it could be exposed in addition to existing website,
       | too.
       | 
       | In the simplest implementation, everything but the POST could
       | just be some static json files uploaded to the http server. And
       | POST /order could just be sending an e-mail to someone.
        
       | noir_lord wrote:
       | Small note: Trello has an _excellent_ API - it is my goto example
       | of a pleasant API to work with as an end user.
       | 
       | That means you can "bring your own client", I have a "todo today"
       | list that I pull via the API and display via conky right on my
       | desktop.
        
         | brundolf wrote:
         | Part of the problem is that APIs are intrinsically harder to
         | interop with than a local file format, for fundamental reasons
         | like latency and shared state that others might modify from
         | underneath you. You couldn't just read once at the beginning
         | and then keep things in synchronous memory thereafter,
         | persisting as needed but never reading again.
         | 
         | Of course that doesn't mean the accessibility situation
         | couldn't be improved with (for example) more standardized APIs,
         | better documentation/discoverability, etc. iOS Shortcuts make
         | it easy to work with third-party services; what would the
         | equivalent in a real programming context look like? There's
         | probably some interesting brainstorming to be done here.
        
       | jasode wrote:
       | _> What would it look like to have a thriving ecosystem of third-
       | party clients for Google Docs style word processing, which can
       | all interoperate with each other, even supporting realtime
       | collaboration?_
       | 
       | Well, based on decades of history of other complex file formats
       | such as pdf, zip, and MS Office formats of doc, docx, xls, xlsx,
       | etc... it would be a buggy mess. It didn't matter whether the
       | format was reverse-engineered or an officially open
       | specification.
       | 
       | The issue is that a plain text file used for programming code is
       | _linear_ from top to bottom and so the _low_ complexity for
       | universal editors is just parsing CR /LF to interpret lines.
       | (Yes, there can be extra complexity of syntax highlighting but
       | the base level complexity of _opening the file for display_ is
       | still just parsing CR /LF.)
       | 
       | The complexity is higher for pdf/zip/xls because a common theme
       | is each have a _internal hashmap /dictionary/directory_ that has
       | byte pointers backwards and forwards to other parts of the file.
       | And they have internal _hierarchies of data structures_. And
       | changing from binary representation to XML such as Microsoft 's
       | OOXML doesn't change the base complexity which is why LibreOffice
       | has constant bug reports from users unable to open their
       | particular docx/xlsx file.
       | 
       | When I collaborate with others in MS Word/Excel, a best practice
       | is to make sure _everybody is using the same version of MS
       | Office_. If somebody is using MS Office 2007 while others are on
       | Office 2013, a roundtrip save  & open between different versions
       | will eventually corrupt the file or lose data. Even staying with
       | just one vendor like MS can get unreliable. The wild west has
       | lots of utilities/libraries that write incorrect zip files and
       | broken pdf files.
       | 
       |  _> Some successful existing examples of client ecosystems built
       | around open standards: [...] email clients _
       | 
       | I'm not totally sold on this example. Yes, the open standard is
       | SMTP for _network communication_... but there 's another aspect
       | that isn't standard: the on-disk file format for email archives.
       | Microsoft Outlook uses binary PST files but Mozilla Thunderbird
       | uses text-based MBOX files. But Mozilla's MBOX is slightly
       | different from other tools that use MBOX.
        
         | swiley wrote:
         | Maybe collaborate using markdown with stylesheets instead of
         | word then.
         | 
         | As for the mbox problem: on a normal machine that _must_ be
         | shared between multiple tools (at the very least: biff,lmptpd,
         | and the MUA) if thunderbird can 't interoperate that's a
         | serious bug.
        
           | Arainach wrote:
           | "Give up all of these cool features because it's 'open'"
           | isn't a winning argument with any consumer.
           | 
           | WYSIWIG rich-text documents are table stakes. Users have had
           | them for 30 years, love them, and are never giving them up.
           | Their layout (and thus their schema) are also incredibly
           | complex by necessity.
        
       | hirundo wrote:
       | This applies well to the remote work environment. My employer
       | makes no requirement about which editor or terminal or operating
       | system or anything else we use to access their resources. The
       | deliverables are (mostly code) files, and they just don't care
       | what we use to manipulate those. They don't provide any hardware
       | either.
       | 
       | What reads to some as worker exploitation is actually empowerment
       | in practice.
        
       | stupidcar wrote:
       | The competitive advantages of owning both the application and the
       | data are so high that don't see widespread BYOC ever happening
       | without government intervention.
       | 
       | I'd like to see an enforced separation in law between commercial
       | application providers and storage providers. So, if someone
       | writes an app like Google Docs, they _can 't_ just store the data
       | opaquely on their own cloud servers. They legally _have_ to
       | integrate with a separate storage provider. And that storage
       | provider has an obligation to make my data accessible and
       | manageable by me.
       | 
       | This wouldn't be a panacea, but it at least makes it
       | theoretically possible to write a replacement client for Google
       | Docs that could be a drop-in replacement.
        
         | TheRealDunkirk wrote:
         | > without government intervention
         | 
         | Well that's the real trick, isn't it? </Han Solo>
         | 
         | Our government is "captured" by campaign financing. Now we have
         | 2 problems: ineffective governmental oversight, AND Citizens
         | United. We have to solve the latter before we can ever solve
         | the former.
        
         | julienreszka wrote:
         | We need not only separation of storage and UI but also labeling
         | providers between the ui and the data so you can find your data
         | easily.
        
         | [deleted]
        
         | istjohn wrote:
         | Even better: They have to use the storage provider of your
         | choosing.
        
         | nickez wrote:
         | We just have to do what the phone manufacturers did for the
         | mobile phone connectivity. GSM was a huge hit thanks to
         | interoperability.
        
           | nimrody wrote:
           | It was but then deteriorated into a big patent war with every
           | company trying to shove its proprietary patents into the next
           | cellular standard.
           | 
           | So while everyone can implement the standard, very few can do
           | this profitably (In practice, Qualcomm, Mediatek and to some
           | extent Samsung)
        
         | dec0dedab0de wrote:
         | _I 'd like to see an enforced separation in law between
         | commercial application providers and storage providers. So, if
         | someone writes an app like Google Docs, they can't just store
         | the data opaquely on their own cloud servers. They legally have
         | to integrate with a separate storage provider. And that storage
         | provider has an obligation to make my data accessible and
         | manageable by me._
         | 
         | I think that is a bit much, I would much rather make reverse
         | engineering/screen scraping/whatever for interoperability be
         | 100% legal with zero grey area. Including a bit that says
         | TOS/Eula/NDA/NonCompete/any contract can not give away this
         | right.
         | 
         | Edit: basically let asshole companies use technical means to
         | try to stop us, but give them no legal recourse if we manage to
         | get the cheese out of their trap.
        
           | mindslight wrote:
           | We can split the difference by mandating that whatever
           | storage services are provided via "webapps" must also be
           | provided via a plain API. Users shouldn't have their data
           | locked behind proprietary javascript. This would create zero
           | additional burden, as every webapp needs such an API for the
           | front end to talk to anyway.
        
             | IX-103 wrote:
             | Maintaining a stable API surface _is_ a burden.
             | 
             | That said, I would agree with such a mandate, as the costs
             | are probably worth it.
        
               | mindslight wrote:
               | It wouldn't have to be any more stable than what's
               | already required to coordinate with the proprietary front
               | end. A company would actually have an incentive to
               | stabilize the API, to encourage cooperative use rather
               | than migration.
               | 
               | (And if a company starts churning their API in bad faith,
               | that's exactly the kind of thing courts are meant to
               | figure out)
        
         | 3np wrote:
         | OTOH, give it time. Open alternatives exist for every private
         | walled garden. I believe the decentralization/federalization
         | and FLOSS movements have a real chance, even if they move at
         | 0.05 velocity. Private platforms are subject to closure, but
         | the light of an open source project will shine as long as
         | there's someone spending time on it.
         | 
         | In due time we'll have networks of small providers catering for
         | BYOC hosting. Cryptocurrencies can play a part in efficient and
         | fair compensation.
         | 
         | But then again, maybe by the time we catch up to current date,
         | everything happens in walled VR moats.
         | 
         | Maybe I'll be the oddball in the metaphorical cabin in the
         | woods, but given the progress we're making so far I'll refuse
         | to enter a closed VR/AR ecosystem.
        
           | TimTheTinker wrote:
           | Maybe the best solution would be legislated government
           | donations to open source projects, with a mandatory
           | legislative bill each year on who they go to.
        
             | Shared404 wrote:
             | > with a mandatory legislative bill each year on who they
             | go to.
             | 
             | Another option would be something similar to farm
             | subsidies, although I don't know if that would be enough.
        
         | gklitt wrote:
         | (post author here)
         | 
         | While I agree that commercial incentives are critical to
         | consider, two caveats I'd add:
         | 
         | 1) I think the nature and depth of the incentives problem
         | varies a lot by industry. Social media is a really complex
         | case, for example. But I'm most interested in collaborative
         | productivity tools, where I think many companies are okay being
         | incentivized to build the best product rather than build data
         | moats.
         | 
         | 2) Cutthroat commercial incentives aren't the only thing that
         | got us here. There are also tech barriers.
         | 
         | If I was starting a Google Docs competitor today, even if I
         | wanted to make it open, I think it would be hard to pull off.
         | What kind of API would I expose to enable realtime editing with
         | good offline mode and conflict resolution? How would I deal
         | with clients that have slightly different rich text
         | representations than my own?
         | 
         | In an alternate universe where we already had a user-owned "web
         | filesystem" with good answers to these questions, I could just
         | hook up my client to that existing system and not even worry
         | about persistence at all. It needs to be _easier_ for devs to
         | build the right thing for users, not harder. And it needs to be
         | a _better_ experience for end users, not a sacrifice. The
         | convenient thing will win.
        
         | CyberRabbi wrote:
         | I generally support the spirit of requiring cloud apps to
         | provide equivalently powerful API access to their service. The
         | (solvable) problem is how do you regulate this without stifling
         | development of new cloud apps?
         | 
         | Another more practical problem is how do you even get something
         | like this on the agenda of a lawmaker? This isn't a readily
         | apparent problem to most people but it likely would result in
         | less monopolistic outcomes for cloud providers and potentially
         | better and/or more efficient products.
        
         | simonebrunozzi wrote:
         | > The competitive advantages of owning both the application and
         | the data are so high that don't see widespread BYOC ever
         | happening without government intervention.
         | 
         | This.
        
         | visarga wrote:
         | Separation of application and storage is a great idea!
         | 
         | How about web search and social news feeds? Can there be a
         | similar frontend / back-end separation for Google, FB and
         | Twitter? I am thinking - different search front ends with
         | different UIs, rankings and filters. We could have an EFF-
         | Google and a Conservative-Google. Users could pick their
         | preferred flavor, as I don't think it's fair for Google to
         | decide for us all.
        
         | pjc50 wrote:
         | Interesting proposal, but I see it greatly reducing development
         | and also further entrenching the cloud providers as Lords Of
         | Everything.
        
           | vages wrote:
           | I don't think that's true.
           | 
           | In the areas in which "bring your own client" is the standard
           | ("text editors / IDE, RSS readers, email clients, web
           | browsers" to cite the article), there is a seemingly greater
           | diversity in hosting than when it comes to the backends of
           | the services mentioned.
           | 
           | Yes, many of these _may_ use AWS in the end, but there is a
           | great many of them that don't.
        
           | stupidcar wrote:
           | Can I ask why?
           | 
           | As I see it, cloud providers are currently entrenched as
           | Lords of Everything because they can both provide the
           | infrastructure and the products that run on top of it. Making
           | them act more like utility providers would reduce their
           | power, I think.
        
             | pjc50 wrote:
             | Think it through:
             | 
             | > enforced separation in law between commercial application
             | providers and storage providers. So, if someone writes an
             | app like Google Docs, they can't just store the data
             | opaquely on their own cloud servers. They legally have to
             | integrate with a separate storage provider.
             | 
             | Now, is the law going to mandate the exact API as well?
             | 
             | The likely implementation of this is that, just as every
             | app developer copies every other app developer, when
             | choosing which User Storage Backend to integrate with, they
             | will pick the most popular one, or a near competitor. AWS,
             | Azure, or Google Cloud. (Apple-focused developers may
             | choose Apple Cloud; I'd expect Facebook to spin up one if
             | this became law too).
             | 
             | Just as you don't get general-purpose OAuth integration so
             | much as "log in with Facebook / Google" buttons. Those are
             | your two choices.
             | 
             | Yes, the original intent would be targeted at Google and
             | Microsoft, which currently own both big web apps and big
             | cloud platforms to run them on. I'm not convinced that
             | splitting them vertically would stick; the convergence
             | effects are very strong. So you end up with (choice of two
             | office suites) x (choice of two backend providers), big
             | deal.
             | 
             | Is it sufficient that Google Cloud Storage would have a
             | separate stock ticker from Google Cloud Apps?
             | 
             | It reminds me of rail privatization and the nonsense of
             | having thin shell companies run the trains while leasing
             | all the rolling stock from a couple of companies and
             | running on tracks owned by exactly one company. It didn't
             | really expand choice and it provided plenty of opportunity
             | for blame deflection.
        
               | wongarsu wrote:
               | With storage we already have "S3-compatible" as a widely
               | implemented and supported standard. Just allow the user
               | to set an arbitrary API endpoint for your regular S3
               | library and you support a breath of providers
        
               | stupidcar wrote:
               | Your objections seem to be predicated on the assumption
               | that the attempt to separate storage providers from
               | application providers wouldn't be properly enforced. Yes,
               | obviously if Alphabet can just set up Google Cloud
               | Storage and Google Cloud Apps and continue with business
               | as usual, then this won't work.
               | 
               | But what I'm suggesting would be a functioning regulatory
               | regime: An independent authority who classifies cloud
               | providers as utilities, writes regulations specifying
               | standards of interoperability, hears complaints from
               | people and businesses and acts to enforce them. Antitrust
               | regulation that stops collusion between service and
               | application providers, and prevents companies or
               | individuals owning a controlling stake in both.
               | 
               | And the major difference I see in contrast to railways is
               | digital infrastructure is not limited in they same way
               | physical infrastructure is. So long as there's only one
               | set of tracks, you can never have a functioning market
               | running trains on them, and it's impossible to build a
               | second set. But while the capital costs of setting up a
               | new data centre are large, they are still within the
               | realm of possibility for many large companies.
        
               | stickfigure wrote:
               | Any such regulatory regime would serve primarily to
               | entrench incumbents by creating vast compliance
               | requirements on newcomers. How's your <pick random>
               | healthcare startup doing?
               | 
               | You imagine a benevolent dictator making optimum choices.
               | I think the F35 design/procurement process is a better
               | metaphor.
        
         | throwaway316943 wrote:
         | We need NPT for software
         | 
         | https://en.m.wikipedia.org/wiki/National_pipe_thread
        
           | finiteseries wrote:
           | I genuinely cannot tell you how relieved I am this isn't a
           | link to the Treaty on the Non-Proliferation of Nuclear
           | Weapons, the thought of FAANG cos "disarming" but snuffing
           | out competitors with government approval is terrifying.
           | 
           | https://datatransferproject.dev/ from yesterday's iCloud
           | photos thread seems to be a step in _this_ NPT direction
           | though.
        
           | sly010 wrote:
           | I don't know if this is a good example :) Anecdote: I
           | recently wanted to extend the hoses for my tabletop
           | dishwasher (the one that hooks up to your tap, not to the
           | wall). It's 2 hoses with 2 connectors each, should be easy.
           | But all 4 are different. After 3 trips to 3 different
           | hardware stores, I found exactly 1 fitting that fits 1 (of
           | the 4) connectors. I ended up slicing the existing hose and
           | extending it in the middle, because that was easier than
           | finding the right fittings. I thought about ordering them
           | online, but that would assume I successfully identified them,
           | which I didn't. Granted, I don't know anything about
           | plumbing, but neither do the average person know anything
           | about technology.
           | 
           | That said, I agree, standards are necessary, I just wanted to
           | rant about NPT.
        
         | Vinnl wrote:
         | There's been some of that already, not in the sense of
         | governments forcing the separation, but in the sense of
         | governments making the keeping of data a liability, e.g. with
         | the EU's GDPR.
         | 
         | There's certainly still a whole class of applications when
         | owning the data is a competitive advantage, but there are also
         | lots of organisation whose core competency is not selling data,
         | even though they do have to work with user data. When storing
         | data yourself is a risk, it becomes a lot more attractive to
         | just let the user store that data somewhere themselves and have
         | them give your application access to it.
         | 
         | I'm sure this one of the reasons we're seeing a lot more
         | interest from Europe than elsewhere in Solid [1].
         | 
         | Then of course, there are also lots of organisations struggling
         | to maintain correct and up-to-date data. If multiple
         | organisations access the same data as controlled by the user,
         | the user is more likely to have kept that data up-to-date.
         | 
         | (Disclaimer: views are my own.)
         | 
         | [1] https://solidproject.org/
        
           | 9dev wrote:
           | From a European perspective, it depends. I wouldn't ever even
           | consider something like Auth0 to store our user records for
           | example, due to the potential legal fallout of storing all
           | our PII on American servers. You have to be really careful
           | just what kind of storage provider you pick, where their
           | servers are located and which specific regulation your
           | business falls under.
           | 
           | That being said, I'm a huge fan of splitting concerns - such
           | as connecting anything and everything via OAuth delegations
           | with narrowly scoped permissions!
        
         | deepstack wrote:
         | _> I'd like to see an enforced separation in law between
         | commercial application providers and storage providers. So, if
         | someone writes an app like Google Docs, they can't just store
         | the data opaquely on their own cloud servers. They legally have
         | to integrate with a separate storage provider. And that storage
         | provider has an obligation to make my data accessible and
         | manageable by me._
         | 
         | Same can be said about gmail. In the old days, one can access
         | gmail via imap/pop3. I believe that was removed. All email
         | ought to provide an alternative way of getting the email other
         | than company's web interface.
        
           | dmd wrote:
           | Why do you believe that?
           | https://support.google.com/mail/answer/7126229?hl=en
        
             | throwaway135919 wrote:
             | Probably because as described in the linked article IMAP &
             | SMTP is disabled by default - though if you're willing to
             | ignore the scary warnings they're still possible to use.
        
           | Lex-2008 wrote:
           | > In the old days, one can access gmail via imap/pop3
           | 
           | I believe it's still possible.
           | 
           | Also IIRC it required some adjustments from mail clients to
           | the "imap as gmail sees it" protocol, like "one message being
           | visible in several folders", since "folders" in imap sense
           | were mapped to "labels" in gmail
        
           | [deleted]
        
           | timw4mail wrote:
           | Gmail still allows imap access, although it requires an app-
           | specific password. (Or it has to be allowed on the enterprise
           | side with G-Suite)
        
           | jimktrains2 wrote:
           | I'm still using imap and smtp, unless k9 mail for Android is
           | abstracting something else away?
        
         | alanpearce wrote:
         | remoteStorage[1] is already a thing. I don't think anyone's
         | made a full Word-style document editor for it yet, though.
         | 
         | [1]: https://remotestorage.io
        
         | polote wrote:
         | > The competitive advantages of owning both the application and
         | the data are so high
         | 
         | Honestly this is wrong. Google drive has API for everything,
         | Notion is working on an API, Confluence has API for everything,
         | Trello ... Any serious text editor (and all the ones wrongly
         | cited in the article) software has API for everything. Want to
         | export your Confluence data to Notion ? you can. In the
         | documentation tools space owning the data is not something
         | looked for, because company pay for the service so the data
         | belong to them
         | 
         | BYOC can exists today, the only reason it doesn't. Is that the
         | documents format is super complex and require complex editors.
         | But the format themselves are not secret, the application is
         | (and not even always, for example the Confluence editor is open
         | source).
        
           | draw_down wrote:
           | Look at what happened with Twitter and its third party
           | clients. GP is correct.
           | 
           | (I'm not saying it's good and I like it, I'm saying it makes
           | sense)
        
           | zolland wrote:
           | You touch on an important point here. Even if you were able
           | to gain full access to the data behind say Confluence, the
           | schema is probably very specialized to their client, contains
           | lots of tech debt, and design is probably very opinionated.
           | You would most likely find it easier to just write your own
           | schema rather than integrate with theirs.
        
           | MichaelApproved wrote:
           | Those APIs are not meant for building a full blown dedicated
           | clients, they're for application integrations.
        
             | polote wrote:
             | Check that https://developers.google.com/docs/api/reference
             | /rest/v1/doc...
             | 
             | You have the full specification of Google docs documents
             | and API to edit any kind of blocks inside
        
               | MichaelApproved wrote:
               | First, that's not the full spec for Google docs. It's
               | missing many aspects of the environment.
               | 
               | Second, is that meant for building a full blown client or
               | is it meant for 3rd party integrations, like plugins?
        
               | polote wrote:
               | > It's missing many aspects of the environment.
               | 
               | I'm curious of what is missing
               | 
               | > Second, is that meant for building a full blown client
               | or is it meant for 3rd party integrations, like plugins?
               | 
               | It is certainly not for plugins, as there libraries to
               | call that API from python, ruby and others which are then
               | not meant to be run in the browser.
               | 
               | My point, is that if you want to build an editor of
               | Google Docs, then you can do it, there is an API to get
               | the doc format and an api to make modification to that
               | document
        
         | rozab wrote:
         | I think it's not completely inconceivable that this could be
         | regulated some day with music streaming. There are zero
         | technical hurdles (unlike with complex apps like Google docs),
         | and because there is such potential for decoupling the client
         | the consumer benefits would likely be much greater.
         | 
         | I've been meaning to switch from Apple Music to Spotify for a
         | while now (I'm on Android). I just had a look around the
         | Spotify app today and the interface is terrible, it won't let
         | me play and view my library like I want to. It would be so much
         | easier if I could just use both from a single open source
         | client, and then I wouldn't have to switch off to soundcloud
         | and bandcamp for certain artists.
         | 
         | Wouldn't it be in the interests of players like Google and
         | Apple to create this service/protocol, even before the
         | regulatory net starts closing in?
        
           | moistbar wrote:
           | You should check out Spot[0]. It's a Spotify client written
           | in Rust using GTK. It's quite barebones at the moment and
           | only works with premium accounts, but the interface is much
           | cleaner than the official Spotify client.
           | 
           | [0] https://github.com/xou816/spot
        
             | Bishop_ wrote:
             | If a terminal is more your style you can even use Spotify-
             | tui[0].
             | 
             | Requires some setup and having an additional client
             | installed for the actual audio playback but it's still
             | interesting using Spotify from a terminal.
             | 
             | [0] https://github.com/Rigellute/spotify-tui
        
         | kjrose wrote:
         | Well it can happen if a significant enough open source project
         | establishes a protocol early enough and doesn't get co-opted.
         | 
         | That or a consortium of companies agree on some sort of
         | standard. (See the work on pc buses in the early pc days)
         | 
         | But you are right. When companies run under trying to get as
         | many users locked in as possible during a paid for investors
         | period. This model is precisely the opposite outcome expected
         | as the whole point is to build a moat around the sales model.
        
           | api wrote:
           | For something to get traction, it has to have excellent UI
           | and UX. So far open source hasn't been very successful at
           | providing that since there is no economic model to finance
           | the immense amount of work required for good UX.
        
             | ivan888 wrote:
             | I posited a similar point to a former colleague (mine was
             | more about eventual market dominance due to excellent
             | UI+UX), and he came back with Craigslist as a perfect
             | example of a product that gained a massive user base well
             | into an era where its UI felt very outdated. A few years
             | after this exchange, I feel more like I was right about my
             | point: FB Marketplace has almost completely taken over as
             | far as a classified product marketplace, but the point
             | still stands that Craigslist was able to do a ton with very
             | lackluster UI+UX
        
               | cycomanic wrote:
               | Another counter example: amazon. By far the worst
               | userinterface of any webbshop, no filters, hardly any
               | categories a search were very small changes in
               | spelling/wording make huge changes in results. And still
               | they are by far the biggest game in town.
        
               | TeMPOraL wrote:
               | I think the problem with this analysis of Craigslist vs.
               | Facebook is twofold. One, Craigslist had, in fact, a
               | great UI. It was simple, clean and accessible to
               | everyone, no matter whether you were using the newest
               | desktop browser, a screen reader, a cheap phone or a
               | potato. Craigslist is a success story of bullshit-free
               | UI.
               | 
               | It got beaten by FB Marketplace because Facebook has
               | almost three billion captive users, and a marketplace
               | bundled in the service they use many times a month takes
               | less effort to visit than a completely separate site.
               | 
               | From this, and many other cases - like e.g. everyone
               | hating the IM/videoconference system they use and yet
               | using them anyway, I conclude two rules of thumb:
               | 
               | - UI that's good for users has very little to do with
               | what UI/UX specialists peddle today;
               | 
               | - Network effects trump UIs - a sticky service with bad
               | UI will beat a competitor that offers much better UI, but
               | doesn't hold the user captive.
        
             | nvrspyx wrote:
             | That view seems a little shoehorned because the parent
             | comment specified "protocol", implying that it would be the
             | connection between client and storage, thus not user-
             | facing.
             | 
             | Regardless,
             | 
             | * Blender
             | 
             | * Godot
             | 
             | * Krita
             | 
             | * GitLab
             | 
             | * Olive
             | 
             | * Firefox
             | 
             | * Thunderbird
             | 
             | * NextCloud
             | 
             | * Amarok
             | 
             | * Vital
             | 
             | * and more
             | 
             | The problem isn't an "economic model". The problem is that
             | most open-source projects simply don't attract UI
             | designers, UX researchers, and users because contribution
             | flows are more technical or geared toward developers.
             | 
             | UX research isn't "expensive" when referring to open-source
             | projects because it predominantly requires people:
             | designers, researchers, and users. The whole foundation of
             | open-source is volunteerism.
        
               | Lammy wrote:
               | This view is the one that feels shoehorned. "Normies"
               | (not pejorative) have no idea what a protocol is. They
               | just want something that works and is convenient as
               | possible. That's how we ended up at the
               | $free+$surveillance App Store / modern Web model.
        
               | nvrspyx wrote:
               | Since when was HN a _normie_ site?
        
             | edoceo wrote:
             | GitLab? Xfce?
        
           | ivan888 wrote:
           | One of the better examples still seeing widespread mainstream
           | use is email, and this even applies to multiple stages
           | throughout the email ecosystem: sending mail, receiving mail,
           | managing mailboxes. Imagine if email wasn't cross provider
           | compatible
        
             | TeMPOraL wrote:
             | The surviving open protocols are like libraries: they were
             | created before the space got commercialized. They got
             | grandfathered in. If libraries didn't exist for centuries
             | already, there is no way they could have been created under
             | current intellectual property laws and IP economy.
             | Similarly, new open protocols don't generally gain
             | widespread adoption - and in the rare case they do, that's
             | only because some companies are using them to gain
             | adoption; once those companies gain the market share they
             | want, they switch to proprietary protocols and the open one
             | dies. See e.g. Google and XMPP or RSS.
        
               | texasbigdata wrote:
               | What about, tangentially, cellphone standards or HTML
               | standard that have iterated and are now at version X?
               | Your point stands and a simultaneous coevolution of the
               | standard, the userbase, and the (app/thing) functionality
               | does seem possible.
        
             | mbreese wrote:
             | Email is only useful _because_ it is cross platform
             | compatible. Otherwise, we'd all be back to writing to some
             | friends in AOL, others in MSN, maybe some back in
             | Compuserve. Some people like to send messages only in
             | Facebook and others via Twitter DMs. None of these are
             | /were interoperable which is why they aren't ubiquitously
             | used.
             | 
             | Email is only useful because each server can send and
             | receive with other servers.
             | 
             | But we all know this, so what the point here?
             | 
             | I would say that my point is that if interoperability
             | becomes more useful than the walled garden approach, then
             | we will see something like this posts call for BYO client.
             | Email is an example. We have interoperable email because it
             | is was more useful than service specific inboxes.
             | 
             | Until interoperability is necessary for Word, we won't see
             | an opening for other Word "clients".
             | 
             | Aside: you could argue that Google built Gmail to make a
             | dent in the ubiquity that was Exchange for corporate
             | messaging. It exploited the openness/interoperability of
             | email in order to do this. If you accept that argument,
             | then maybe they should take a page from that playbook and
             | work to make Google Docs as open as possible. Allow for
             | more interaction with external clients. Let a more open
             | ecosystem develop. That might have the potential to
             | diminish the position of Office for document creation.
             | 
             | Or maybe email is just so old, the owners got established
             | before it could be commercialized... it might happen again,
             | but I'm not hopeful. For example, I don't expect Twitter to
             | care about federating their system with other messaging
             | applications. There is too much to be gained (selling ads)
             | by keeping people on their site.
        
             | kjrose wrote:
             | Absolutely, however a major problem occurs, and email is a
             | great example of this. When there is a fundamental need to
             | change the protocol for reasons of privacy, security,
             | authentication, etc. It becomes almost impossible to do
             | when it is as wide spread as email, or it takes a very very
             | long time to spread enough.
             | 
             | When one person controls the whole system, it's easy to
             | pivot rapidly. I guess that's another argument against
             | having widely used protocols (even though I disagree with
             | it.)
        
               | gmfawcett wrote:
               | I think that's a great argument for _keeping_ widely used
               | protocols. I don 't want any one person, or one entity,
               | to rapidly pivot my critical infrastructure (whether it
               | is "broken" or not). The slowness of change is a feature.
        
       | ghoshbishakh wrote:
       | I trust someone from the HN community will get started working on
       | some of these :)
        
       | allenu wrote:
       | Immutability and mutability of content, and expectations or
       | conventions surrounding it, seems to play a large role in
       | feasibility here. The successful examples listed are generally
       | cases where content is immutable to the general audience (someone
       | produces content and then publishes it to others) or the way
       | content is mutable is "understood" by the participants. That is,
       | text editors mutate content, but no one expects there to be
       | multiple editors of a text file, and the convention of a file is
       | understood and encapsulates the "state" of the data.
       | 
       | In the wishful cases listed, collaboration is the norm, so to
       | make it BYOC, you'd have to expose core "mutation" API or else
       | use a general convention that is understood across the board.
       | 
       | In my dream world, we'd be use CRDTs for data and the "schema" of
       | the data for a given "service" (say something like Google Docs)
       | is open. The data storage layer would be a commodity and you can
       | swap in different providers as you see fit. Of course, there is
       | no benefit to the creators of such services to do this, and I
       | don't think CRDTs are quite there yet with defining mutation
       | efficiently with respect to multiple collaborators. However, from
       | a data portability standpoint, it feels like the ideal to me.
        
       | asim wrote:
       | We had standardisation at the protocol level for the internet
       | which let us build services on top, but now we're looking for the
       | same at the app level. HTTP was meant for web pages, we never
       | created anything for Apps and Services. What that new standard is
       | going to look like, I have no idea, gRPC does well to define the
       | APIs and so we use it across dozens of services here
       | https://github.com/micro/services. Curious to hear what others
       | think will happen.
        
         | carapace wrote:
         | FWIW, my $0.02: I think this problem has been noticed and
         | solved over and over again. If you squint a little stuff like
         | CORBA are in the same stew pot, eh?
         | 
         | There's relatively recent work on collaborative editing and
         | CRDTs, but as it says in the Wikipedia entry:
         | 
         | > The first instance of a collaborative real-time editor was
         | demonstrated by Douglas Engelbart in 1968, in The Mother of All
         | Demos. Widely available implementations of the concept took
         | decades to appear.
         | 
         | https://en.wikipedia.org/wiki/Collaborative_real-time_editor...
         | 
         | There are a lot of these protocol/API tools like gRPC, Thrift,
         | Swagger/OpenAPI, or even good old ASN.1, eh?
         | 
         | To me the question is how to drive _convergence_? How to
         | alleviate https://xkcd.com/927/ ? (The "Standards" comic.) Who
         | shall forge the "one true ring to bind them"?
         | 
         | - - - -
         | 
         | Also, I think Data Model catalogs (like "Data Model Patterns: A
         | Metadata Map" by David C. Hay) should be part of the answer.
         | Instead of rolling your own data models you should be able to
         | just pull models from a standard catalog.
         | 
         | - - - -
         | 
         | In sum, if we're lucky, we'll start to get convergence in the
         | protocol and model space. Anything that _isn 't_ working
         | towards convergence is just adding another log to the burning
         | pile of standards, eh?
        
       | GameOfKnowing wrote:
       | This article is basically describing the UNIX philosophy from a
       | user-facing perspective, right?
        
       | bitwize wrote:
       | There is a company called EditShare whose primary stock in trade
       | is (or was, times do change) digital video server appliances.
       | AVID sold such a thing, but it requires AVID software to work...
       | and it turns out that film editors are about as persnickety about
       | their choice of NLE software as programmers are about their text
       | editor choice. So Alice may favor AVID, Bob likes Final Cut, and
       | Claire uses Adobe Premiere. All three are competent editors and
       | the director wants them all on the project. By using standard
       | file sharing protocols like AppleTalk and SMB, the EditShare
       | server lets them work on the same footage.
        
       | ndespres wrote:
       | I think a major omission from the authors' wishlist of BYOC-
       | capable applications is chat. Maybe in their case they are lucky
       | enough to have a choice in the matter, but I think overall the
       | walled gardens and closed APIs for the major chat programs is a
       | shame. Every day that I have to use Microsoft Teams in an attempt
       | to communicate with coworkers is an exercise in patience. Basic
       | chat functionality should be open and interoperable.
        
         | judge2020 wrote:
         | Maybe you should suggest to your company to set up a bridge[0]
         | to mirror it to something like irc.
         | 
         | 0: https://github.com/42wim/matterbridge
        
       | marmada wrote:
       | The problem with BYOC client for Google docs / Figma is that the
       | underlying data isn't simple plaintext, it's too complex, and the
       | protocol requires things like operational transforms, so BYOC
       | wouldn't make sense.
        
         | karlicoss wrote:
         | Clients don't have to have exact same power. For example it
         | would totally make sense to grep over a google doc represented
         | as a plaintext file. Or at least traverse over the complex
         | structure to extract some data, even if it's read only.
        
       | imwillofficial wrote:
       | This article was pleasant to read. Well reasoned, well delivered,
       | and timely.
        
       | intrasight wrote:
       | I'm a developer. Pretty much everything is a text file. Text
       | files get edited with Emacs :)
        
       | lewisjoe wrote:
       | I work on a popular Google Docs alternative product in the
       | market.
       | 
       | I gave some thoughts around this idea of experimenting a standard
       | for collaborative rich text, that any client can implement. The
       | problem though is that people want easy collaboration, more than
       | the freedom to bring their own clients.
       | 
       | To simply put how can we deal with assigning people (for
       | @mentions, comments, document ownership and content locking for a
       | group of people) in such file formats? SaaS universe has a
       | concept of a userbase with unique ids. So when a person is
       | assigned/mentioned the product knows who is relevant and what to
       | do. This implies we need a universal userbase standard (which is
       | already hugely complicated) and is adopted by the SaaS that your
       | target users belong to.
       | 
       | This is one huge roadblock that I don't see any practical
       | solution for.
        
         | thomastjeffery wrote:
         | Rich text is expressed with markup. The rest can be done with
         | protocol.
         | 
         | Just like clients would have to implement markup parsing and
         | rich text rendering, they would need to implement protocol
         | endpoints like notifications,etc.
        
         | diggan wrote:
         | Decentralized Identifiers are aimed to solve this, basically
         | having interoperable identifiers you can use across different
         | applications but still referring to the same user.
         | 
         | Initial concept for DIDs were made for blockchains and other
         | decentralized projects (I think, someone please correct me if
         | I'm wrong) but useful for federation or for centralized
         | projects that want to offer flexible data migration too.
         | 
         | - Specification: https://www.w3.org/TR/did-core/
         | 
         | - https://en.wikipedia.org/wiki/Decentralized_identifiers
         | 
         | - One organization working on DIDs:
         | https://identity.foundation/
         | 
         | - Project leveraging DIDs: https://sovrin.org/
        
       | vhanda wrote:
       | disclaimer: Markdown Notes App Author
       | 
       | At least for simpler text documents, where formatting isn't a big
       | concern, markdown seems to be wining as the standard. Sure, each
       | of these have added a few features on top of the markdown
       | standard, but even those features are slowly getting quite
       | standardized. [0][1][2][3][4][5][6]
       | 
       | [0] https://obsidian.md
       | 
       | [1] https://zettlr.com/
       | 
       | [3] https://dendron.so/
       | 
       | [4] https://foambubble.github.io/foam/
       | 
       | [5] https://logseq.com/
       | 
       | [6] https://gitjournal.io
       | 
       | I wish using Git as the VCS would also become more standardized,
       | but we're still lacking good clients which hide the complexity
       | [6] (my project, fails at hiding all of the complexity, but
       | hopefully it'll get there)
        
       | luplex wrote:
       | It's a situation like parents: There should be an incentive for a
       | company to build a closed, innovative system. But once that
       | system converges on features, and they reaped their rewards, it
       | should be replaced by an open standard.
       | 
       | Instant messaging was fine, WhatsApp and Slack brought a lot of
       | innovation and drove adoption, and I would argue it has gotten to
       | a stable place where we should all use Matrix.
       | 
       | We need to figure out that process of standardization and opening
       | up.
        
         | tantalor wrote:
         | > situation like parents
         | 
         | patents?
        
           | luplex wrote:
           | yes. patents :)
        
       | nippoo wrote:
       | For the "todo list" item: check out Todo.txt and any number of
       | the clients that use the same, human-readable/editable text-based
       | format. I really enjoy being able to choose the client I want on
       | my Mac, iPad and Android phone while keeping the same todo list
       | file...
        
       | zomglings wrote:
       | The problem (currently) is that most people simply don't care
       | about being forced to use a particular client - as long as that
       | client looks nice.
       | 
       | I say this with a lot of love for the idea. My company sells a
       | collaborative knowledge base that supports Bringing Your Own
       | Client. Out of the hundreds of users I have spoken to, only ONE
       | has ever asked me if they could use their favorite markdown
       | editor to access their knowledge base.
       | 
       | On the positive side of things, having the capability to bring
       | your own client makes it really easy for us to support many
       | different use cases. We just have to write those clients
       | ourselves.
        
         | Cthulhu_ wrote:
         | I think it makes sense to at least have the mindset from a
         | developer's point of view. It helps prevent lock-in between the
         | client and whatever APIs or storage your product uses.
         | 
         | I've tried to build apps with a strict client / server
         | separation for a decade now, it made sense at the time because
         | of mobile apps, and it makes sense now due to application half-
         | life (front-ends don't last as long as their back-ends).
         | 
         | In my current project we may offer API access to our customers
         | in addition to a user interface.
        
           | zomglings wrote:
           | Agreed - with the understanding that maintaining distinct
           | clients is a LOT of work.
        
         | thomastjeffery wrote:
         | Most people just aren't familiar enough with the underlying
         | idea. You can't express or even recognize a desire for your own
         | client if you don't know what a client is.
         | 
         | Because businesses focus on meeting users' desires instead of
         | needs, they are content with the _status quo_ of rigid UI /UX
         | design.
         | 
         | This is why we see BYOC so prevalent in developer tools like
         | text editors and terminal emulators, but not in office tools
         | like Google Docs or art/design tools like Photoshop and Maya.
         | 
         | I've heard a million times or more the phrase, "industry
         | standard" used to defend rigid proprietary tooling, even by
         | users who would benefit from want sincerely enjoy more freedom
         | in their tooling.
        
       | ilaksh wrote:
       | So maybe something like CRDT or OT on top of libp2p?
       | 
       | Does something like that exist already?
        
         | jamil7 wrote:
         | Not exactly that I know of but the automerge project is one of
         | the more active open source CRDT spaces.
         | 
         | https://github.com/automerge/hypermerge for example
        
       | pixelkritzel wrote:
       | Prosemirror might be a good starting point for a headless
       | collaborative rich text environment. It manages rich texts state
       | and is collaborative out of the box.
       | 
       | https://prosemirror.net/examples/collab/#edit-Example
        
       | Fnoord wrote:
       | Open network and interface protocols. This was Sun's argument
       | before they opened up Solaris and Java.
        
       | awinter-py wrote:
       | msft's docx is only a documented open format bc the european
       | union sued them in like 07 for antitrust
       | 
       | fight for open file formats for common things
        
       | jimbokun wrote:
       | > Today we generally think about BYOC at the "app" level. But can
       | we go finer-grained than that, picking individual interface
       | elements?
       | 
       | Reminds me of this:
       | 
       | https://en.wikipedia.org/wiki/OpenDoc
        
         | thomastjeffery wrote:
         | The only thing I've used that has gotten close to this is
         | emacs.
         | 
         | Even then, you have to fight the default ui/ux.
        
       | dgudkov wrote:
       | Another great example of BYOC is SQL. Even despite popular
       | relational databases have slightly different SQL dialects, it's
       | still possible to use different clients to
       | query/view/design/update a relational database.
        
       | phren0logy wrote:
       | I'm in medicine, and I desperately want this model for electronic
       | health records.
       | 
       | The current state of lock-in has been effectively maintained by
       | the entrenched players, and it's really bad.
        
         | jimbokun wrote:
         | Closest we have so far:
         | 
         | http://hl7.org/fhir/
         | 
         | I really like their documentation. My team has moved a lot of
         | our stuff to produce FHIR (or something close to it), for
         | interoperating with other teams and clients.
        
         | wittyreference wrote:
         | Since HLX has become increasingly required, I've seen that the
         | lock-in doesn't mean diddly squat. Now we're not "locked in",
         | but for my new vendor to drop-in means I have to pay an extra
         | "API Fee" for them to whip up the API interface to pull
         | everything from the old EMR and into the new EMR.
         | 
         | So either we get to the point where we are legislating perfect
         | compatibility (and I can't imagine how good EMRs will get once
         | the federal government has to outline every individual data
         | field, and update them through, what, the rulemaking process?);
         | or we'll always be paying up for this transition, and lock-in
         | is beside the point.
        
           | phren0logy wrote:
           | Maybe we need a coalition of second-tier EMRs to band
           | together and commit to supporting an API and a group to keep
           | it open and updated? I agree that the current approach isn't
           | really working, and doing more of the same is probably not
           | going to help.
        
           | TedPetrou wrote:
           | I saw that you doubled down on [this
           | comment](https://news.ycombinator.com/item?id=26181228). Week
           | 5 excess mortality for 65+ in Israel is now up to 7.4 times
           | above normal. It increased every update for the last three
           | weeks. Unbelievable that people like you take 1 minute to
           | read something, think you are an expert and try and proclaim
           | victory. I'm 100% sure you will double down again instead of
           | taking the honorable path of admitting you were wrong. People
           | like you never get held accountable.
        
       | abbiya wrote:
       | I want to add Music services to the list
        
       | throwaway316943 wrote:
       | I'm reading Thinking Forth at the moment and there's a part in
       | the description of Forth about how it decouples words from their
       | parameters and return types by only allowing stack manipulation.
       | This means that all words share a common interface and so they're
       | infinitely composable. The reason I started reading this book is
       | due to learning how WebAssembly works which turns out to be quite
       | similar to Forth. It got me thinking if there might be a way to
       | make all code modules interoperable. Being able to compose an
       | application or client out of many independent parts would be a
       | dream come true.
        
         | carapace wrote:
         | Yup yup. I'm on the trail of just this using a purely
         | functional Forth-like language called Joy.
         | 
         | Your hunch is correct, you're intuiting the "Categorical" (as
         | in Category Theory) nature of "point-free" format:
         | 
         | http://conal.net/papers/compiling-to-categories/
         | 
         | > It is well-known that the simply typed lambda-calculus is
         | modeled by any cartesian closed category (CCC). This
         | correspondence suggests giving typed functional programs a
         | variety of interpretations, each corresponding to a different
         | category. ... This paper describes such an implementation and
         | demonstrates its use for a variety of interpretations including
         | hardware circuits, automatic differentiation, incremental
         | computation, and interval analysis. ... The general technique
         | appears to provide a compelling alternative to deeply embedded
         | domain-specific languages.
        
       | z0r wrote:
       | I'd love to be able to pay a music streaming service a monthly
       | fee to play their catalog without having to use any of their
       | first party software.
        
       | alexf95 wrote:
       | What about options of importing and exporting files? For example
       | Google Docs lets download your file in another format making it
       | easy to open in another client e.g. MS Word. Wouldn't that be
       | somewhat of a BYOC approach.
        
       | bombcar wrote:
       | This strikes at something that people often WANT when they say
       | "text files are better than the registry/binary formats" - they
       | want to easily bring their own tooling to bear.
       | 
       | Standard APIs let you do this - even if you have a "binary
       | format" like MySQL or PostgreSQL (on disk) - nobody really
       | complains about that because they have a defined API you can
       | interact with.
        
         | ori_b wrote:
         | Standard APIs still can require a fair amount of code to write.
         | A plain text format with a well defined grammar allows me to
         | pull out any old text editor, and get to a working change with
         | trial and error.
         | 
         | Protocols and binary formats have their place too -- but
         | there's simply nothing as universal as text.
        
         | vbsteven wrote:
         | And this works both ways. Like the Postgres standard API you
         | mention: Not only does it allow you to bring your own client,
         | you can swap the underlying implementation and still use all
         | the clients that speak the protocol.
         | 
         | Like the author I would really like to see some open protocols
         | (and adoption) for todo's and calendars. I mention adoption
         | because for calendars there are some standards but popular
         | software like Google Calendar and Exchange do not implement
         | them properly or fully.
        
           | bombcar wrote:
           | Calendaring is a huge embarrassment and a mess, and it is
           | super annoying if you have to deal with anyone "outside" your
           | group. Emailed ical files seems to be the norm but only work
           | over email. :(
        
             | SahAssar wrote:
             | Calendaring is surprisingly complex. Especially when it
             | comes to stuff like rules for repeating events and
             | timezones. I had to do work on this at a previous job and
             | it was pretty hard even with all the libraries and tools
             | out there.
        
               | bombcar wrote:
               | It's insanely complex - one of those problems that is
               | easy to state and nearly impossible to solve (which means
               | there's opportunity here).
        
               | karatinversion wrote:
               | Or in a lot of places, that's Microsoft outlook's moat
        
         | okl wrote:
         | Or SQLite, which I would recommend over some homebrewed text
         | file format, see https://www.sqlite.org/appfileformat.html
        
           | Aeolun wrote:
           | Unless you like your database to take types as a little more
           | than suggestions.
        
             | TeMPOraL wrote:
             | We're talking about SQLite instead of text files, not
             | instead of RMDBS. Plaintext files don't even _have_ the
             | concept of a type, they 're just unstructured blob with a
             | well-known mapping to printable characters. SQLite is a
             | step up, because it lets you express structure and hint at
             | the desired interpretation.
        
       | o_m wrote:
       | I feel Reddit is another thing that has "Bring your own client".
       | I'm using the old design and Reddit Enhancement Suite to tweak it
       | to whatever I want. Reddit also gives you everything as JSON if
       | you just add ".json" behind any URL.
        
         | tonyarkles wrote:
         | And Apollo, a wonderful alternative client for iOS.
        
       | uyt wrote:
       | I think no one wants to go through the work of creating a full
       | featured client. What most people want is just adhoc
       | customizability.
       | 
       | For this reason, the web is great if you know how to code. Most
       | sites are pretty easy to reverse-engineer so you can add whatever
       | feature you want via extensions.
       | 
       | For example I do a lot of simple stuff with greasemonkey scripts
       | like making stuff sortable or filterable, creating a bulk
       | download and rename button, or just customizing appearances/css.
        
       | rakoo wrote:
       | I don't see Google Drive ever providing an API for bringing your
       | own client; it will probably have to be from the other side.
       | 
       | We already have OT and CRDTs for concurrently defining changes
       | from each user and a way to merge them. There is also the Braid
       | spec (https://datatracker.ietf.org/doc/html/draft-toomim-
       | httpbis-b...) attempting to standardize state synchronization on
       | top of which one can bring any client
        
         | falcolas wrote:
         | > I don't see Google Drive ever providing an API for bringing
         | your own client
         | 
         | In a way, they already have, since you can mount your Google
         | drive on your local file system, and interact with the files
         | from there. The problem lays with the proprietary Google Doc
         | format.
        
           | xd1936 wrote:
           | https://developers.google.com/docs/api
           | 
           | Most things you would want to do to a Google Doc are
           | available via oAuth API, right?
        
             | falcolas wrote:
             | Not... really? I can't open it with a local application.
             | 
             | At least, not until someone (not me, no time) creates a
             | local application which interacts with Google Docs via this
             | API.'
             | 
             | In the mean time, I'll continue to use .docx, since Google
             | docs can export and import form this format.
        
         | gklitt wrote:
         | Yes! I think Braid is a good effort in this area, will add to
         | the prior art section.
        
       | benjamir wrote:
       | That's why I hate forums without a proper E-mail gateway -- for
       | me plain text E-Mail is the most essential API between humans. My
       | mail client is the main reason and I really hate everyone
       | changing something that disables using either my preferred
       | editor.
       | 
       | Everytime some modern hype takes that from me I cannot stop
       | thinking of goose fattening: forcefully stuffing it down the
       | throat and not for good.
        
       | indymike wrote:
       | Most of these closed systems exist because of gaps in the open
       | alternatives, and those gaps may be be difficult to close. For
       | example, an open client for Google docs, which works
       | fundamentally differently than say, a closed-source word
       | processor that was written in the 90s.
        
       | ChrisMarshallNY wrote:
       | Really, a good API is all that is necessary.
       | 
       | Also, maybe an SDK, but I am not particularly enthused by some of
       | the SDKs I encounter, these days.
       | 
       | If a service can be exposed by a good, basic API that doesn't
       | require (but also affords) an SDK, then this allows development
       | of connectors. Many client packages, these days, are written to
       | allow connectors to be developed.
        
         | kgwxd wrote:
         | For data-only applications. But if an application wants or
         | needs to promise pixel-perfect results, at the very least,
         | there would need to be a single standard rendering engine.
        
           | ChrisMarshallNY wrote:
           | I would suggest otherwise. One of the reasons that people
           | choose differing clients, is because they have preferences in
           | how they like the data/process represented.
           | 
           | If it is necessary for a team to be "all on the same page,"
           | then the management needs to require that everyone use the
           | same rendering client.
        
         | asim wrote:
         | Can you elaborate. What kind of API? Just a HTTP/JSON api?
        
           | ChrisMarshallNY wrote:
           | I prefer a REST-like API, like Google uses for their services
           | (basically, sending is done with "raw" GET/POST/PUT
           | arguments, instead of blocks of JSON/XML), and Raw/JSON/XML
           | responses.
           | 
           | But realistically, some levels of functionality are so
           | intense, you need a "beefier" API, like GraphQL.
           | 
           | If that is the case, it might not be a bad idea to review the
           | API. In my opinion, overcomplicated APIs are likely to be the
           | result of the service, trying to exert too much control over
           | the interaction/presentation.
           | 
           | Many times, an API is a "back window" or partial view to a
           | more ambitious effort. For example, if the project is a Web-
           | based framework, it will have a lot of rendering and
           | View/Controller functionality that may be of no interest to
           | something like a specialized text editor for content
           | maintenance, so there would be no reason to expose that
           | functionality.
           | 
           | It may be a good idea to provide a suite of APIs, as opposed
           | to a single one.
        
       | madeofpalk wrote:
       | Git does not have colaboration tools. It's very much a "work in a
       | silo for a period of time and then evtually figure out how to
       | mash these things together" approach.
        
         | jimbokun wrote:
         | It may be the case that the Git model is good enough for the
         | way a lot of people want to collaborate, if combined with a
         | nice UI.
         | 
         | Maybe "save" tries to commit, and pulls up a diff interface if
         | there is a conflict? UI indications of other people's commits
         | pending, and maybe merge those with current state of the
         | document if there is no conflict?
         | 
         | There are a lot of edge cases to consider. But I feel like
         | there might be a way to design UX for a Git workflow that makes
         | it comfortable and intuitive to Muggles.
        
         | EuAndreh wrote:
         | That is false. See the built-in git-send-email [0] and git-am
         | [1] commands.
         | 
         | You may not like it, don't use it, etc. But Git does have
         | collaboration tools.
         | 
         | [0]: https://git-scm.com/docs/git-send-email
         | 
         | [1]: https://git-scm.com/docs/git-am
        
           | madeofpalk wrote:
           | I meant in the sense how it was compared to google docs
        
         | tobr wrote:
         | Has anyone tried to build real-time collaboration on git? What
         | if every participant would run a system that saved on every
         | keystroke, committed and synced with the remote? It would break
         | due to conflicts as soon as two concurrent edits were too close
         | to each other, but you could probably just accept either commit
         | when they're so granular and happening in real time. The
         | conflict is going to be obvious and fairly easy to resolve
         | since you will see it happen in the document itself.
         | 
         | EDIT: For some reason, speculating about the potential to
         | _repurpose_ a technology is attracting replies that point out
         | how it wouldn't work seamlessly with how they are _currently_
         | using it. I'm not even mentioning editing code, and I'm
         | certainly not proposing that you try this in a random Git repo
         | where other contributors aren't expecting it.
        
           | vbsteven wrote:
           | This problem is what CRDT's are good for. I'm not sure if Git
           | is the right tool to build this on top off.
        
             | tobr wrote:
             | My comment speculates about what it might be like to
             | repurpose Git for this, so I hope it's clear that I'm also
             | not _sure_ if it's the right tool.
             | 
             | CRDTs have the problem the article brings up, that they're
             | usually very specific to the data they're modeling and need
             | support from a very purpose-built editor. Git is supported
             | by a lot of tooling and uses plain text which works
             | everywhere.
        
               | ilaksh wrote:
               | True but how would you create a useful client without
               | having access to a data format that is specific to the
               | application?
        
           | okl wrote:
           | Keep in mind that a big part of working with a VCS is
           | refining your code until it is done or ready to be merged.
           | Syncing on every keystroke would drown others in noise and
           | I'm usually not interested to see my colleagues' unpolished
           | work-in-progress code.
        
           | luplex wrote:
           | I think that's close to what overleaf.com is doing for LaTeX.
        
             | tobr wrote:
             | That's interesting. Their website mentions Git integration
             | [1] but I don't get the impression that their real-time
             | editing is built on Git. Do you have a reference for that?
             | 
             | 1: https://www.overleaf.com/learn/how-
             | to/Using_Git_and_GitHub
        
           | pjc50 wrote:
           | ... why would you want that? How would you ever run the
           | program when it's broken on every keystroke?
        
           | pharke wrote:
           | Every time you modify a file in git you're actually creating
           | a new file. Committing every keystroke would create a massive
           | number of files that only differed by a single character. If
           | you wanted to have a history of changes that can be shared
           | and potentially merged then you would want deltas instead. A
           | better underlying technology would be something like CouchDB
           | https://docs.couchdb.org/en/stable/index.html
        
       | blfr wrote:
       | This idea suffers from the same problem federation does. It's
       | harder to move a whole ecosystem. Makes it harder to innovate.
       | Leads to centralized platforms outperforming these
       | BYOC/federated/open options. Basically how Reddit replaced Usenet
       | with upvotes and basic spam filtering.
       | 
       | There's more on this from 'moxie
       | 
       | https://www.youtube.com/watch?v=Nj3YFprqAr8
       | 
       | https://signal.org/blog/the-ecosystem-is-moving/
        
         | lifeisstillgood wrote:
         | tl;dr
         | 
         | >>> So while it's nice that I'm able to host my own email,
         | that's also the reason why my email isn't end-to-end encrypted,
         | and probably never will be. By contrast, WhatsApp was able to
         | introduce end-to-end encryption to over a billion users with a
         | single software update.
        
         | platz wrote:
         | > Leads to centralized platforms outperforming these
         | BYOC/federated/open options. Basically how Reddit replaced
         | Usenet with upvotes and basic spam filtering.
         | 
         | That is a nice insight.
        
         | drjgk45839 wrote:
         | >...Reddit replaced Usenet...
         | 
         | According to Wikipedia, Reddit was created the same year Usenet
         | service was discontinued by AOL. Reddit "replaced" Usenet in
         | the same sense that cell phones "replaced" telegrams.
        
           | wizzwizz4 wrote:
           | AOL's only contribution to Usenet was to fill it with people
           | who didn't understand Usenet, all at once, almost completely
           | eradicating the existing community.
           | 
           | They discontinued the service when Usenet was no longer a
           | selling point, because they had destroyed it.
        
           | Aeolun wrote:
           | Reddit also has tons of unofficial clients that interact with
           | it. It's not quite the same since you still don't own the
           | data, bit it comes close.
        
         | rapnie wrote:
         | > This idea suffers from the same problem federation does.
         | 
         | Yes, this is a problem you also see with the Fediverse (based
         | on W3C ActivityPub). You get innovators and laggers, and the
         | latter when they are popular can hold the former back (you see
         | this with Mastodon, which as early adopter created their own
         | client API's, but are now lagging to implement the Client-to-
         | Server part of the AP specification).
         | 
         | At the same time standardization of federated protocols can
         | also be an advantage in that it allows many different projects
         | and applications [0] to be developed and mature independently.
         | Innovation can come from unexpected corners here (heads up to
         | openEngiadina with ERIS [1], DREAM [2] and Spritely [3]
         | project).
         | 
         | [0] https://git.feneas.org/feneas/fediverse/-/wikis/watchlist-
         | fo...
         | 
         | [1]
         | https://gitlab.com/openengiadina/eris/-/blob/main/doc/eris.a...
         | 
         | [2] https://dream.public.cat/
         | 
         | [3] https://spritelyproject.org
        
           | grishka wrote:
           | The C2S part of ActivityPub isn't for everyone, and it's
           | okay. It basically moves too much logic to the client. It
           | prevents any semblance of a good UX because you have
           | _everything_ -- posts you would display in the feed,
           | interactions with your content, etc -- in the same inbox. You
           | have to connect to _many_ different domains to render
           | something to the user, and you also have to have a
           | sophisticated caching system on the client. Also good luck
           | loading those full-size images over an EDGE connection.
           | 
           | There are 2 kinds of ActivityPub servers.
           | 
           | - The "dumb" one, that does minimal processing and simply
           | stores JSON objects. Someone POSTs an activity to its inbox,
           | the server does minimal required verification, stores it, and
           | the client then queries it with GET. And does the reverse for
           | the outbox. That's it. That's where c2s would work fine.
           | 
           | - The "smart" one, that treats s2s ActivityPub like an API,
           | comes with a built-in web interface, and stores everything in
           | a way which makes sense for its particular presentation.
           | That's the kind I'm making (Smithereen, it's on the list you
           | linked, btw), and that's what Mastodon is. Implementing c2s
           | in this kind of server is a major pain in the ass, and I
           | won't. You'd have to throw away all your careful
           | optimizations, synthesize ActivityPub objects out of things
           | that never were ActivityPub objects in the first place, do
           | horribly inefficient things to merge notifications and feed
           | and other conceptually unrelated stuff from several different
           | database tables just for the client to split them back
           | apart... Doesn't make much sense. A domain-specific API is
           | the only way to make a client for this kind of server.
        
         | nickez wrote:
         | Can you imagine a world where you could only use a specific
         | phone model with a specific operator? or where you could only
         | send text messages to people that is on the same network? If we
         | can regulate phones we should be able to regulate social
         | networks.
        
           | lultimouomo wrote:
           | When the iPhone originally came out in the US it was locked
           | together with a 2 year contract with AT&T.
        
             | grishka wrote:
             | And it took how long for people to figure out how to unlock
             | it?
        
               | nemothekid wrote:
               | No amount of unlocking would have enabled you to use your
               | iPhone in the second largest operator in the US; Verizon
        
               | grishka wrote:
               | Ah. Right. I always forget that the US is about the only
               | country in the world where there still are widely used
               | CDMA networks.
        
             | karatinversion wrote:
             | (Deleted my identical but less detailed comment)
             | 
             | Then again, this was never the case in the EU, where
             | bundling handsets with a GSM subscription was banned.
             | 
             | But yes, we don't have to imagine - and the change
             | certainly didn't come out of the goodness of the carrier's
             | hearts!
        
               | progval wrote:
               | > this was never the case in the EU, where bundling
               | handsets with a GSM subscription was banned.
               | 
               | It is not:
               | https://en.wikipedia.org/wiki/SIM_lock#European_Union
               | 
               | Last time I was looking for a phone (~8 years ago), in
               | France, I had to check which ones were simlocked.
        
           | [deleted]
        
         | dredmorbius wrote:
         | There can be considerable use-value to ecosystems which _don
         | 't_ move as a whole, or do so with deliberation and in a
         | component-wise manner.
         | 
         | As with, say, LaTeX, or Unix/Linux.
        
         | cyberlab wrote:
         | > Reddit replaced Usenet
         | 
         | Many things replaced Usenet. Usenet is more of a protocol (that
         | uses NNTP) than a social media platform. If you're any way a
         | systems thinker, you would know that _protocols_ are more
         | resilient than _services_.
        
           | hollerith wrote:
           | When making the point that protocols are more resilient than
           | services, consider including an example of a protocol that
           | has at least .0001 as many users as Reddit does.
        
             | texasbigdata wrote:
             | It's also not the _same_ users, which may not matter but
             | probably does.
        
           | imwillofficial wrote:
           | " If you're any way a systems thinker, you would know that
           | protocols are more resilient than services." This is not just
           | a terrible saying, it's also completely wrong. All things are
           | not equal, so a crappy protocol may or may not be more
           | resilient than a service. "Systems thinking" is not code for
           | "Lazy thinking."
        
           | blfr wrote:
           | NNTP is basically dead, maybe abused* for piracy in some
           | corner of the Internet, while Reddit ate half of the web that
           | Facebook didn't eat.
           | 
           | * To be clear, I'm rather ok with piracy. NNTP is just really
           | poorly suited for it.
        
       | eric4smith wrote:
       | The main reason for using google docs is not it's superlative
       | editor... /sarcasm
       | 
       | It's the collaboration features. And no I don't mean the multiple
       | people typing the doc at the same time.
       | 
       | It's the ability to quickly share a document with a set of people
       | that you want.
       | 
       | Sure I use Vim every day, but without that git push and a trip to
       | GitHub to invite collaborators I'm a man on a desert island
       | waiting for that next weekly ferry.
       | 
       | Code editors and that ecosystem is good for code, but too slow
       | for people who just want to share some recipes with their brother
       | and not think about it too much.
       | 
       | Until we have some sharing infrastructure easy enough for a any
       | client to sit on top of, it's all a dream.
        
         | alexf95 wrote:
         | I think your point is spot on and probably one of the bigger
         | reasons why we won't see any change happening in the Google
         | Docs department.
        
         | munificent wrote:
         | _> It's the ability to quickly share a document with a set of
         | people that you want._
         | 
         | In particular, it lets you do that _while maintaining a single
         | source of truth_.
         | 
         | It's equally easy to just email people a document. But then if
         | you change the doc, they still have the old version. Maybe they
         | forwarded it on to some other people you don't know about it
         | after making some changes. The next thing you know, there are
         | twenty versions of this file floating around all slightly
         | different and everyone _thinks_ they are on the same page.
        
       | markandrewj wrote:
       | This isn't to detract from what the author has said, but Google
       | Docs does have a public API now. I wanted to mention this because
       | the public API is fairly new, and people may not know about it. I
       | am not sure if the API is rich enough to achieve what the author
       | is describing though. It's also not built on any kind of
       | standard, like email, or other examples that are described.
        
       | EGreg wrote:
       | _It seems like local-first software is a good foundation for
       | promoting Bring Your Own Client more broadly._
       | 
       | It also goes hand in hand with end-to-end encryption. This sounds
       | a lot like the Case I made for building Client-First web apps, I
       | just posted it on HN:
       | 
       | https://news.ycombinator.com/item?id=26356391
        
       | dnissley wrote:
       | I've got lots of small tweaks I'd love to incorporate into a
       | Twitter client. Unfortunately, I think many of them would violate
       | the developer TOS.
       | 
       | For example: hiding avatars completely or generating replacement
       | avatars using the username to remove any chance of internal bias
       | associated with an account's avatar. Another one: hiding images
       | by default and forcing you to click to expand/open to see them
       | (no previews). A lot of these ideas are intending to modify
       | Twitter's default salience landscape.
       | 
       | However disappointing it might be though that I can't do this, I
       | get it. These kinds of modifications could totally change the
       | ways in which a user experiences Twitter, and how Twitter would
       | be able to monetize those users. Simply forcing Twitter (via
       | legislation) to allow BYOC doesn't seem like a good idea because
       | of this. It doesn't seem right to force them to run a service
       | with a reduced potential for monetization -- e.g. many clients
       | could just not show any ads, which would totally remove Twitter's
       | ability to monetize at all.
       | 
       | An idea might be to charge users money in order to allow BYOC, so
       | Twitter could focus on building out the core offering, which is
       | just basically the public messaging substrate of the internet.
       | But I'm not at all sure how well that would work out in practice.
        
         | nsgi wrote:
         | Couldn't you accomplish that with a browser extension?
        
           | texasbigdata wrote:
           | I think OP maybe made a meta point about a
           | (company/team/project) having carte blanche ability to, or
           | perhaps restated to not give you the ability to restrict
           | someone from, modify your initiative towards your existing
           | end users (who may prefer your setup) in a way which
           | threatens your survival.
           | 
           | Extending the analogy to absurdium, should (CompanyX/Twitter)
           | be allowed to have ToS against a (browser extension/etc)
           | which would reduce it's revenue to $0, and theoretically
           | force it to shut down and lay off all the
           | (engineers/employees)? If no, what rights does Twitter have
           | to decide alterations to it's product if any, and where do
           | they begin? If yes, who makes that decision: a government, a
           | regulatory body etc?
           | 
           | What if the ToS said "don't circumvent our API rate limiting"
           | and someone made a browser extension doing just that. Is it
           | okay to have it in the Google chrome store? If it got in,
           | should it stay up?
           | 
           | Note, against my points, the Supreme Court decision on
           | scraping in the LinkedIn case.
        
         | t0astbread wrote:
         | FWIW the Twitter web client can be somewhat easily hacked by
         | blasting it with an interval from a web extension or
         | userscript. It's a bit inefficient and you have to awkwardly
         | navigate the DOM since they're using obfuscated class names but
         | it works and it can be stable.
         | 
         | Here's some example code from a web extension I wrote that
         | removes promoted tweets: https://gitlab.com/t0astbread/no-
         | promoted-tweets/-/raw/maste...
        
         | tshaddox wrote:
         | Tweetbot on iOS supports hiding images in tweets (but not
         | hiding avatars). It costs a bit of money, but I have bought
         | every version so far.
        
       | folex wrote:
       | Background gradient makes me dizzy after reading a single
       | paragraph
        
         | gklitt wrote:
         | (author here) sorry to hear that! Out of curiosity, what screen
         | size are you reading on? Anyone else have similar problems?
         | 
         | Sounds like I should add a button to disable the gradient.
        
           | neurotrace wrote:
           | It's a cool idea but I wrote a userstyle to override it.
           | Reading on a plain color is easier for me
        
             | gklitt wrote:
             | Thanks for the feedback everyone! Never realized it was
             | causing problems. Will change or at least add an option.
        
           | bombcar wrote:
           | It might be that it goes left to right instead of top down.
        
           | berekuk wrote:
           | I'm having issues with this gradient too. (Though I'm running
           | a fever after being vaccinated yesterday, so my perception
           | might be different than usual today).
           | 
           | It feels like that optical illusion with disappearing
           | background [1] where your brain attempts to re-tune itself,
           | and it's kind of uncomfortable.
           | 
           | My screen width is 1280px.
           | 
           | [1] https://knowyourmeme.com/photos/834411-optical-illusion
        
       | [deleted]
        
       | harha wrote:
       | Another one is storing data, Apple for instance can easily lock
       | in users with iCloud because it is so much more complicated
       | keeping all devices and apps in sync without, with iCloud you
       | have one login for passwords, browser, files, etc.
       | 
       | In theory a shared folder with clients that handle multiple
       | devices/operating systems in their dot-files well would be able
       | to replace that, but with most phones in a closed ecosystem, I
       | don't see that happening.
        
       | RcouF1uZ4gsC wrote:
       | >Today we generally think about BYOC at the "app" level. But can
       | we go finer-grained than that, picking individual interface
       | elements?
       | 
       | Maybe will will end up re-inventing OLE from the 1990's for the
       | web. In OLE 2, there was a standard OLE Compound Document file
       | storage API/format. Different apps could all work with different
       | parts of a document. You could even change which app you wanted
       | to handle a certain type of feature. It was complicated, but when
       | it worked, it was pretty neat. This was done during the time when
       | most people had maybe 4-8MB of RAM. With much more powerful CPUs
       | and vast amounts of RAM, we could probably come up with something
       | even better.
        
       | godot wrote:
       | Interesting premise, but some of the examples given as BYOC
       | wishlist is a little weird to me. Google doc (the main example)
       | makes sense, sure.
       | 
       | With others like Notion -- I recently started using Notion at a
       | personal level and I feel like much of the draw about Notion is
       | basically the UI (client). I don't use it to publish public pages
       | or anything, only private notes. Most of its usefulness to me
       | comes down to it having a really nice client and it syncs between
       | desktop/mobile/etc. I don't know what Notion would be without the
       | built in client. Simply a set of markdown files?
       | 
       | Other examples like Trello / Asana seem to already have
       | solutions. They offer APIs, and while I haven't worked with them
       | to know them extensively, my understanding is you can do basic
       | CRUD operations on tickets. You could possibly build your own
       | clients there.
        
       | hanspagel wrote:
       | Great read! Just wanted to chime in and say I'm working on a
       | collaborative editing backend [1] based on Y.js, which already
       | makes some of the things you write about possible.
       | 
       | For example interop between different editors, like CodeMirror
       | and Monaco. And thanks to Y.js, the server helps with syncing,
       | but isn't the single source of truth anymore. It's more like Git,
       | where every copy has all changes.
       | 
       | I really hope we all can leave the cloud behind soon.
       | 
       | [1] https://hocuspocus.dev
        
       | derefr wrote:
       | Re: Notion, Trello, etc. -- wouldn't enabling interoperability on
       | top of a presumably-free "open core", completely commoditize
       | these services? (As, for anything they offered on top of their
       | open core, you could instead substitute a third-party service
       | that does the same thing by operating against the service's API.)
       | 
       | Which is to say -- in a world where interoperability is a social
       | norm or legal requirement, how would these services exist? (I
       | would suspect they wouldn't.) And, without them, would there be
       | any money in advancing the state of the art in these verticals?
       | 
       | It'd be a lot like if there were a legal requirement for every
       | drug to have a generic available from the start. Would there
       | still be an incentive for drug research?
        
         | TeMPOraL wrote:
         | > _in a world where interoperability is a social norm or legal
         | requirement, how would these services exist? (I would suspect
         | they wouldn't.) And, without them, would there be any money in
         | advancing the state of the art in these verticals?_
         | 
         | They would. The verticals wouldn't. A service like Trello is at
         | least two components - a storage layer for lightly connected
         | lists of rich data, and UI for displaying/managing them. In a
         | world where interoperability would be the norm, these two
         | components would be two different markets. The user would be
         | free to choose or buy the UI separately from the storage layer.
         | Most would probably choose a vendor that provides both
         | services, just out of convenience.
         | 
         | The main difference would be that all these companies would
         | operate on lower margins, and wouldn't support such insane
         | valuations like our-world tech companies have these days.
        
         | [deleted]
        
       | pbreit wrote:
       | Unirest is the BYOC that I was hoping would get traction:
       | https://github.com/kong?q=unirest
       | 
       | I don't understand why each API needs it's own SDK. Or even why
       | developers use SDKs instead of just calling the RESTful endpoints
       | directly.
        
         | mmcdermott wrote:
         | I understand both sides of it. The thing is that most code
         | bases that aren't using an official SDK will tend to wrap the
         | raw HTTP calls in something that performs the relevant
         | operations anyway. A good SDK cuts out a few classes/functions
         | that would have been written anyway.
         | 
         | Of course, that assumes that the SDK exists and is good.
        
         | granos wrote:
         | If the SDK in question is just a thin wrapper on REST then
         | sure, it isn't providing very much value. But most of the SDKs
         | I've used implement higher level logical operations -- things
         | that require understanding the intent of the API/data model and
         | how things are supposed to fit together. By being able to write
         | my code against that higher level abstraction I'm able to save
         | time and offload some of the responsibility for knowing how the
         | pieces all fit together to the people who know that best.
         | Ultimately my goal is not to make REST requests, it's to
         | provide value to my customers, and the APIs I call are means to
         | that end.
        
         | scottlamb wrote:
         | I think the problem described in this article is more
         | fundamental: these services don't have documented, stable APIs
         | for clients to build on. Not HTTP APIs. Not libraries either.
         | In some cases they go out of their way to prevent third parties
         | from using whatever internal API their own apps use. [edit to
         | add: to combat abuse/spam, or because they have ads, or as
         | deliberate lock-in.]
         | 
         | But to answer your question: when an API exists, why have an
         | SDK? One reason is to provide strong typing (and everything
         | that goes with it, like IDE auto completion). A very thin layer
         | over the HTTP requests is enough to provide this. Eg, in one of
         | my projects [1] I wrapped a HTTP API with Go calls like this:
         | Method(ctx context.Context, req *MethodRequest)
         | (*MethodResponse, error)
         | 
         | where each method call corresponds to exactly one HTTP request.
         | It handles deadlines, cancellation, HTTP error checking, and
         | using Go's built-in json marshalling/unmarshalling on structs.
         | That's about all I want in an SDK. The unirest project you
         | linked doesn't seem to offer strong typing so I wouldn't use it
         | (even if it weren't dead).
         | 
         | [1] https://github.com/scottlamb/luxor
        
       | rullelito wrote:
       | It does not suprise me that it's a kid proposing this. They
       | probably live and breathe open source and still dream of a free
       | and open world, where companies prioritize the user far above
       | over profit.
        
         | platz wrote:
         | He's at MIT in the Software Design Group, so his objective is
         | to do blue-sky thinking for things that will never make sense
         | economically.
        
       | [deleted]
        
       | greenie_beans wrote:
       | I would like something like this but for banking logs. I got an
       | alert from the bank about suspicious activity yesterday. The
       | customer support rep couldn't give me much information about it.
       | I had to stop myself from asking if I could see the logs to
       | determine myself whether it was a bug in their code or a real
       | risk... I wondered if it was a bug because they had a similar
       | buggy incident in the past.
        
       | teekert wrote:
       | Nice thoughts, now please think of some nice pro "bring your own
       | OS" arguments I can make towards my IT department ;)
       | 
       | Regarding BYOC, I guess Git is where it is at right now, not?
       | Allthough I switch clients for my personal note-taking every now
       | and the which works well with NextCloud syncing of MD files.
        
       | crails124 wrote:
       | I agree that you should choose your own clients. I think the
       | examples provided beg a different question as to why it's not
       | like this today?
       | 
       | PDF and DocX files are open specifications that provide for
       | extension. Nothing is stopping anyone from building clients
       | around these formats with the features listed in the article. PDF
       | is definitely more common as most programming languages have
       | comprehensive libraries to work with it.
       | 
       | The path forward would to be build the features you want and
       | publish the extension specifications for others to use. Perhaps
       | the interesting question however isn't technical possibility but
       | if a market exists for it? Email clients were very widespread
       | over a decade ago but have consolidated to 3-4 over the years.
       | Hey.com has been the first big new email clients that I am aware
       | of. I'm curious if it can prove there is big business in
       | improving on existing, standardized specifications.
        
       | mandliya wrote:
       | I admire the thought here however as author himself pointed out
       | this is an innovation killer in some way. I think then we need to
       | separate what can be shipped with universal BYOC and what can't.
       | Any new innovation is build up on existing features. Extending it
       | to heterogeneous clients will be neither cost effective nor
       | innovation friendly. I work for MS office and shipping the same
       | feature on online client vs win32 apps takes 1-2 quarter and
       | sometime whole rewrite.
        
       | vladmk wrote:
       | To work day?
        
       | grose wrote:
       | I went with the BYOC route for my current side project:
       | https://inter.tube
       | 
       | It's a music locker service with a custom web client. Instead of
       | writing my own native app I implemented the Subsonic protocol:
       | http://www.subsonic.org/pages/api.jsp
       | 
       | It's awesome to have a polished native app for "free" (eg.
       | play:Sub on iOS is really nice) but it's such an underspecified
       | and loose spec that implementing it was a huge pain in the ass.
       | For example, clients will choke on results missing values that
       | are specified to be optional in the spec. The spec imposes
       | integer offsets for pagination but my database wants string
       | continuation tokens. It's specified as XML but there's an option
       | to make it JSON with zero information on how to deal with
       | discrepancies. Some clients use GET, some POST, some mangle the
       | URL or capitalize random paths. I just had to reverse engineer
       | pre-existing servers to figure out what clients can handle and
       | there's still a few clients that are mysteriously broken. I'm
       | going to have to test as many as possible and create a list of
       | recommended ones.
       | 
       | I'm happy I went with BYOC but I highly recommend to plan for it
       | from the start so you can deal with the protocol's weaknesses
       | sooner than later.
        
         | loceng wrote:
         | Looks neat. Mind shooting me an email matt@engn.com?
        
           | grose wrote:
           | Thanks! Just sent one.
        
       | hntestacc wrote:
       | test comment blahlqjbwejlkblrq blahnmeqwflbeqlwblew
       | blahkasjflkanweklqwbfkelbqlfbklqweblfkbq
        
       | amelius wrote:
       | I want BYOC for consuming social media.
        
       ___________________________________________________________________
       (page generated 2021-03-05 23:00 UTC)