Was anyone realistically thinking about creating a #dotnet implementation of #mastadon ?

I sorta started on it, but wasn't going to continue if there's a #Microsoft led effort.

If there's no existing project, I'll try to gather some collaborators and continue.

Who's interested in trying to get a #dotnet7 version going?

#OSS #foss

Please boost to help me find people or a project! Thanks! 

@brendoneus disclaimer, I work for Microsoft, but not in devdiv. I have no idea if there's a Microsoft led effort...but that shouldn't stop you! foss thrives when there's a healthy ecosystem of different implementions that bring some efferent ideas to the table :)
@joelmartinez yes, but if the team were working on one, my efforts initially might be better collaborating with them on a first one!
@brendoneus I think the optimal way for new Mastodon client libraries to be written would be for someone to tackle https://github.com/mastodon/mastodon/issues/1404 to hook up a tool to automatically generate an #OpenAPI spec. Then tools like openapi-generator could be used to generate a client. Very little code would need to be written by hand, and it would benefit the creation of clients in any language supported by the generator. #MastoDev
API Documentation via Swagger / RAML / Others · Issue #1404 · mastodon/mastodon

In order to provide more accessible informations about REST API usage, it would be great to have an API specification in Swagger (http://swagger.io/) or RAML (http://raml.org/). Great job ^^

GitHub
@Eliot_L @brendoneus fwiw there are at least a couple of (recent) efforts to make an OpenAPI spec for the Mastodon API that I've found on GitHub to help to address that issue
@andypiper @brendoneus
That's good. Still, I think a handwritten OpenAPI spec is always going to be inferior to an autogenerated one because it will have to be manually kept up to date as the API evolves. Also, autogenerated specs make it easier to generate clients on demand that could consume new APIs exposed by mastodon forks.
@Eliot_L @andypiper @brendoneus shouldn’t it be the other way around? Manually write and update the OpenAPI spec and then automatically derive from that the stubs for the server and clients? Just like RPC, CORBA and WSDL?
@lpacheco @andypiper @brendoneus I think you can go about it either way. At my last job we used to use a framework plugin to generate our OpenAPI spec and it worked well, and it kept the same development flow as before we had a spec. You can go spec-first but I think it would require a bigger shift in development mindset that might be difficult for people to adapt to in an open source project.
@andypiper @Eliot_L @brendoneus I was quite surprised it was a stock HTTP style API - I was kinda expecting some fancy modern day GraphQL type thing - but that doesn't really fit with ActivityStreams etc.
@talios @andypiper @brendoneus To be fair, keep in mind that development of Mastodon was started in 2016 by a single developer. What might seem obvious in hindsight might not have been as obvious then. And I think these things are more difficult to bolt on after-the-fact.
@andypiper @brendoneus @Eliot_L true - I'm not even sure Graphql would be good either (subscriptions maybe) but you'd still need federation.

@Eliot_L @brendoneus perhaps we can start by implementing the ActivityPub specification, and then moving into cloning the Mastodon feature set?

https://www.w3.org/TR/activitypub

ActivityPub

The ActivityPub protocol is a decentralized social networking protocol based upon the [ActivityStreams] 2.0 data format. It provides a client to server API for creating, updating and deleting content, as well as a federated server to server API for delivering notifications and content.

@brendoneus YES please. I searched yesterday but couldn't find one. Ideally one that can run serverless as well.
@kurtsh @brendoneus @shanselman I have started creating a #maui client. I would b3 interested in making a server implementation ss well.
@brendoneus I'm curious to hear, in your opinion, what's the value of reimplementing Mastodon on a different technology stack?
@brendoneus I'm considering it as part of my AZ-204
@brendoneus is there a repo? a list of tasks? I'd be happy to contribute a few hours if I can.
@brendoneus F# or C#? I'd be interested to help out if I can.
@brendoneus Would love to have @avaloniaui based mastodon client... perhaps a full stack dotnet mastodon solution as well :D
@brendoneus performance and scaling seem to be a big issue on the current stack, seen lots of posts from instance admins where costs have doubled overnight.
@brendoneus I'm trying to clarify if David Fowler et al are moving forward with it or just bouncing an idea around.
@brendoneus I'm also interested to contribute, please let us now if you're starting something and I've seen @patriksvensson mention his interest in this too
@brendoneus I'm not smart enough to participate, but wouldn't mind looking over the shoulder as it happens :D
@brendoneus I've very much though about it; as a driver to learn Angular for the front end. All my free time is currently going on a construction project, however.
@brendoneus You might want to check out https://github.com/glacasa/Mastonet/ - it states that it's a library for Mastodon, so not sure how much it covers, but it might be a good start.
GitHub - glacasa/Mastonet: C# Library for Mastodon

C# Library for Mastodon. Contribute to glacasa/Mastonet development by creating an account on GitHub.

GitHub

@brendoneus I've been thinking about it the last few days - would be cool to make a super optimized implementation.

Thinking about it personally from the POV of self hosting etc too - want something to be super simple.

@turnerj we started if you want to join in!
@brendoneus I would definitely be interested in contributing, for sure.
@brendoneus I’m more than happy to contribute!
@brendoneus
I did see a library here https://github.com/glacasa/Mastonet @glacasa
But let me keep eyes on this!
GitHub - glacasa/Mastonet: C# Library for Mastodon

C# Library for Mastodon. Contribute to glacasa/Mastonet development by creating an account on GitHub.

GitHub
@brendoneus Do you mean ActivityPub or the Mastodon API? I came across this ActivityPub implementation a few weeks back but it looks a bit old and not very complete, could be a good starting point though https://github.com/Meep-Tech/ActivityPub.Net
GitHub - Meep-Tech/ActivityPub.Net: Activity Hub .net implementation.

Activity Hub .net implementation. Contribute to Meep-Tech/ActivityPub.Net development by creating an account on GitHub.

GitHub

@elliot @brendoneus
For ActivityPub, I also started working on something :
https://dev.azure.com/pericia/_git/cichAP

Still a lot to do, though
It serves actors and activities, can retrieves remote ones, but I didn't make push work (some sign bug I think)

Also code is a little old, it uses old asp.net mvc routing, needs some rewrite.

For Mastodon API, this one is functionnal :
https://github.com/glacasa/Mastonet/

Files

@brendoneus Step one is creating a functioning ActivityPub server in .NET, the mastodon API on top of that is secondary.
@brendoneus are you talking just backend?

@thatzacdavis yes, that's what I'd intended as the #dotnet part, the backend.

Regarding the front-end, I'd want to chat with others about that. I know some will push blazor, which is viable. I'm a fan of vue, but wouldn't insist on anything specific.

I was thinking the first step is #ActivityPub with a rudimentary front-end at most while we create the backend.

@brendoneus @thatzacdavis Creating an ActivityPub server is definitely the first step. That's the federation and discovery part, the database etc.

Then adding an API on top that conforms to the Mastodon API surface area, then potentially more specific.

Remember that there's a plethora of Mastodon apps, so I think the 3 things can be very effectively decoupled.

@brendoneus @thatzacdavis The ActivityPub server is something I think would be generally useful though.

Being able to have [email protected] would be cool to have it publish via ActivityPub etc. without a full instance. Have it sync comments for blogs, that kind of thing.

@brendoneus @thatzacdavis I'm actually less interested in a Mastodon server, more in the implementation of ActivityPub and how that can be leveraged in various ways.

@Martindotnet @thatzacdavis Yeah, the ActivityPub with a minimal front-end is basically the "Hello World" of the Fediverse, so that's gotta be first.

I'm also thinking that we separate things, so that someone could take pieces of it and use them without needing the whole application.

@brendoneus @thatzacdavis Honestly, I'm not even thinking about the minimal front-end.

I'm looking at SDKs that provide the ActivityPub endpoints, and interfaces for repositories.

Those could be reused in something that can provide Client Facing UI/APIs. So a full separation at a library level.

@Martindotnet @thatzacdavis Exactly!

The minimal front-end is the "Hello World" part of it to confirm that your ActivityPub endpoints, etc. are working.

I think whatever we build should be as separate parts that we *can* use together, but don't *require* each other to function.

@brendoneus @Martindotnet yeah, with an open patriotically like this, the front end should work with any back end and vice versa
@brendoneus @Martindotnet gotta love autocorrect for “protocol”

@thatzacdavis @brendoneus https://github.com/NicolasConstant/BirdsiteLive

Found that which could be a good starting point, ironically, couldn't find them on mastodon :D

GitHub - NicolasConstant/BirdsiteLive: An ethical bridge from Twitter

An ethical bridge from Twitter. Contribute to NicolasConstant/BirdsiteLive development by creating an account on GitHub.

GitHub

@brendoneus

I'd be interested in such a project. I've been considering trying to build a #WebXR interface for ActivityPub streams. I build web-based VR apps for a living and my server software is all .NET.

@brendoneus suggestion: update IronRuby instead

http://ironruby.net/

IronRuby.net /

@ZiggyTheHamster Ha! I wonder if that's been updated, or if it's still just for .net framework.
@brendoneus I’m down!

@ben great! It sounds like there are a handful of us who are interested in starting.

Have you looked at the specs for ActivityPub or Webfinger yet?

@brendoneus I’ve glanced through but haven’t fully absorbed them. Glad that there’s an eager group!
@brendoneus I’d love to try! Never had an oss experience though
@brendoneus don't know how many hours I would have to throw in. But I am interested!

@adenner No worries! I think we're all thinking of this as spare time stuff!

Have you looked at the specs for ActivityPub or Webfinger yet?

@brendoneus I haven't done a great deal yet, but was reading up on a simple toy implementation https://blog.joinmastodon.org/2018/06/how-to-implement-a-basic-activitypub-server/
How to implement a basic ActivityPub server

Today we’ll be looking at how to connect the protocols powering Mastodon in the simplest way possible to enter the federated network. We will use static files, standard command-line tools, and some simple Ruby scripting, although the functionality should be easily adaptable to other programming languages. First, what’s the end goal of this exercise? We want to send a Mastodon user a message from our own, non-Mastodon server. So what are the ingredients required?

Official Mastodon Blog
@adenner yeah, I've been reading the spec, but haven't implemented much. I can send you the repo if you want to help. We're loose on the contribution guidelines for now.
@brendoneus sure I am game and fine with loose chaos. Denner at gmail for the email.
@brendoneus I’m interested in helping.
@LowcountryCoder awesome. We're planning to implement the ActivityPub and Webfinger spec first. We've started structuring the project, but don't have much of the code yet.