Thinking about building a Markdown editor for macOS and iOS

You are probably right, but I’ve never let something incredibly difficult stop me. I taught myself HTML and CSS in a weekend after a client asked me a decade ago if I could “code websites,” and I said yes just because I figured it couldn’t be hard. That doesn’t mean I’m better than anybody else at anything; it just means I’m a lunatic.

It does what I want technically, but I want a nice writing environment, and that’s not it.

2 Likes

Fair enough. Though, as @karlnyhus just hinted at, DEVONthink is constantly advancing. They’ve done a lot of work on the editor environment recently. Hopefully this screen recording works…:

Pretty sure the look/feel is user-configurable via CSS stylesheets. I chose Futura, at least, at some point. I just can’t remember how, heh.

Okay, I’ll quit harping on DEVONthink now. :upside_down_face:

2 Likes

It’s a great app, no denying. But I definitely want something more minimal. Closer to Ulysses or iA Writer. And more focused on type. I’m a designer. Typography is my jam. I think I just need to make this app for me, and like I said, the 11 other people who share my priorities.

3 Likes

That’s fantastic! The thing about programming is that it really has hidden humps. You finally understand one thing only to encounter 3 more you didn’t even know you needed to think about. (That’s what makes it fun though)

6 Likes

Scratching one’s own itch is always an excellent idea, as is learning a new language with a concrete project in mind. And it feels incredibly good to get behind the wheel oneself.

That said, I’d also like to chime in with a word of warning. What you’re after sounds like a very ambitious project and I personally think that such a project would last way longer than a year. SwiftUI is still pretty new, and in some(many?) cases, you’ll likely need to resort to the older frameworks. Also, app development is usually a pretty bumpy road, especially if one is new to a language/framework. And writing a fully-featured & performant Markdown renderer is no easy task (though you may be able to build on an existing rendering engine). In any case, there will be many many bigger & smaller issues to solve, with a few big road blocks ahead.

But the hardest thing is actually something entirely else: You need to be prepared to be in for the long haul. It’s indeed like having a child. OTOH, if you’re doing this mostly for yourself, then maybe it’s ok to abandon it later on should you lose interest or get stuck.

With the above in mind, it may be a better idea to find an app that most closely fits your requirements, and submit feature requests for the parts that you’re missing. Or, find an app that’s pluggable/hackable/scriptable and customise it to your needs.

If you decide to instead pursue your own project, then don’t skimp on the planning phase. Is your planned technology stack capable of fulfilling all your requirements (and can you test the critical aspects in advance)? What would really differentiate your app from others? What’s your elevator pitch? What would be your minimum viable product so that it’s actually usable for you personally? And is this all doable within your estimated timeframe?[*] Whom can you ask if you get stuck? Will you still be motivated to work on this project, say, 5 years from now? And will your beloved ones support you dedicating a lot of time to this project long-term?

[*] From my experience, any (serious) time estimate should be multiplied by a factor of at least 2 (though often it’s actually 4 to up to 10(!) times greater).

6 Likes

I had thought the same. In a parallel thought, I would have recommended to “volunteer” to help (co-)develop a missing feature set to an existing app. Or for example, propose to take over Outlinely.

The average multiplier is Pi … 3.14 (three significant digits usually gets all situations nicely). It is the estimate by taking the direct distance between two points and accounting for the fact that you end up going around in circles about half the time. For the non-math inclined, the circumference length C of a circle with a radius R is C = 2 Pi R.


JJW

3 Likes

Absolutely true, and exacerbated by:

  1. Swift and SwiftUI are still changing, and
  2. The Apple frameworks are very deep, very wide, and vary in consistency.
3 Likes
  1. Documentation is often lacking or may be outdated.
  2. What works for the current macOS release may not work for the next one:
    The system environment is constantly changing underneath you, so native apps have quite a high maintenance cost. Successfully staying on top can be a task by itself.
3 Likes

Agreed regarding both value and effort with regard to personal apps.

I have gone down the same road recently and decided that - at least with regard to an initial prototype -there are some amazing low-code app generators available. If my project(s) are a modest success, I will continue using them on the low-code platform. If I hit a home run with regard to usage either within my office or publicly, then the process of engaging a developer to turn such an app into a traditionally coded app would be much simpler with the foundation of a solid working prototype.

There are many such low-code apps - two of them I have found particuliarly useful are:

1 Like

I admire anyone who is wiling to scratch an itch and build their own software to make up for shortcomings they find in the software available to them. It’s a huge mountain to climb, no doubt. But maybe a little applause can ease the journey :clap: :clap:

If I were to say “oh no, you can’t succeed at that” it would just be because I know I couldn’t succeed and have no idea how to succeed at writing my own editor. So @snelly – go for the dream :clap:

Katie

3 Likes

thanks @dustinknopoff , I shall keep this in mind. The fact that I do not do this for living takes the pressure off a lot :joy:

1 Like

I’ll second this. Most of the best tools I’ve ever made (and I’m a rank amateur – these have been serviceable, not polished or pretty), I’ve made in the face of people saying not to bother, just make do with what’s out there.

@snelly may fail horribly. I’m sure he realizes that, especially after all the well-meaning advice here. Be he wants to succeed, and seems willing to put in a lot of work to learn what he needs to learn. Bravo!

I predict success of one sort of another (whether or not that means the commercially viable markdown app I hope he builds), and look forward to hearing more.

2 Likes

For simple note-taking, DEVONthink’s Markdown editor is functional, albeit utilitarian. For any long-form writing, I use iA Writer. I’ve created some scripts for iA Writer that make it easy to search notes in DEVONthink and output a wiki link to the note or include a note’s contents inline (i.e., “File Transclusion”). These scripts provide a little bit of Obsidian-like linking functionality into iA Writer, making the two tools—with bit of scripting sprinkled in—a powerful combination.

One other nice thing about DEVONthink is that you can customize the rendering of Markdown notes through custom CSS and JavaScript. I’ve authored a bit of code that adds the following functionality to DT’s Markdown preview:

  1. Click to copy code blocks
  2. Hover over linked note previews (ala Andy’s Notes)
  3. One-click publishing to web or Google Docs, allowing me to share notes with friends and colleagues

Again, YMMV, but apps like iA Writer and DEVONthink are fairly extensible while offering pretty rich feature sets all their own.

3 Likes

Thank you @KVZ and @tf2 for your kind words of encouragement! If I fail, at least I’m learning. But I’ve been a professional designer for a decade and a front-end developer for nearly as long. Swift changes a lot, but so does literally every web technology. I’ve been there before.

@jacobio I applaud your creativity in coming up from this solution, and I think it’s probably the best solution for a lot of people. But it doesn’t scratch the itch I have. I’ve got some very specific tools and features in mind for the editor that aren’t available in one tool right now. If I can’t do it, I’ll circle back, but I want to give making this thing a go. (I also know from owning DT in the past that its usefulness is limited for me outside of this one thing, and I want something tailor made for me. So I’ll just have to make it.)

But like I’ve said, if the situation changes and iA Writer or even Ulysses add the features I’m looking for, I’ll let you all know! I’d love if if somebody built the absolute perfect tool for my needs.

I think that’s super! :clap:t3: I, too, came to the same problem that you’re facing and decided instead to use a handful of tools that are highly scriptable so that I could create a note-taking system that works for me.

I may, like you, one day decide to make my own PKM app :slightly_smiling_face:

1 Like

You might want to follow Simon B. Støvring on Twitter. Simon is a very bright iOS developer (creator of Scriptable and DataJar) who’s currently developing a text editor for iOS (Runestone, currently only available via TestFlight) and tweeting regularly about the process.

1 Like

Done, thanks!

20 characters

Maybe you can use his framework that he’s open sourcing for other to write editors?

Today he announced both his App and the framework will be available on May 5:

(For reference: he worked for 18 months on this in his spare time)

4 Likes

Wow, neat! I’ll definitely be checking that out when the time comes.

So many great resources in this thread. Thanks all!

I am one of the founders/creators of Nota. I can say it depends on your goals. If you want to make money from it — don’t do it, the space is filled with hundreds and hundreds of apps, you won’t be able to find them all, I hear about a new app in this space a few times per week. Most of them are multi-people teams with funding.

If you are doing it for the fun — do it. However, note that making a writing app is deceptively hard. A lot of people have written about this. One of my favorite examples is Text editing hates you too (2019) | Hacker News. We are working full-time on Nota for the past 7 years and, still, most people don’t know about us. That’s probably the reason why most competitive apps are built on top of web technologies.

14 Likes