Live data from Hacker News

Show HN: Free hosted open-source alternative to Zapier/Airflow

cloud.titanoboa.io

81–87 of 87 posts

Re: Show HN: Free hosted open-source alternative to Zapier/Airflow

#81
post #26

Earlier quoted context omitted.

"However, their marketing tries to sell themselves as no-code platform for business folks." Huh? I've never seen Airflow described as no code or tried to sell itself that way, in fact all the pipelines are written in python and you can do some really complex orchestration. I get you're not saying Airflow is no code but that the category you've put it in is typically low code or marketed as low code, but then I don't…

I would agree. The no-code is an illusion in the enterprise realm - before you know it, you are waist deep in the custom code. No-code can really work only for small businesses imo. I come from enterprise background and that is one of the reasons I built Titanoboa - to make something that makes it easy to rapidly prototype new integrations on the fly. I summed up some of my thoughts on this topic here: https://www.ti…

I see what you are getting at. Yes State Machines to Process Designers is a spectrum and has a quite a bit of overlappings.

For example these are the lowest common denominators I see.

#1 Graph: All of these systems allow you to visually design/represent the process as a graph. You yourself has abstracted these into graph problems and have come out with a simpler non-verbose BPMN alternative - which is great.

#3 Computability: Since the base is a definitive graph, essentially a graph that could execute is a finite-automata. That is, all of these systems put the power back to the end-users to create their own machines (without actually coding) hence the relatability with low-code. So at the end, broadly even the motive aligns from computability perspective.

But I'm still not convinced these denominators justify an all-in-one one-size-fits-all solution to this spectrum. I'm not saying one product shouldn't attack them all, but it's better to appropriately categorize them and develop unique features on top of each of them. At least that is what I feel at this point of time.

Re: Show HN: Free hosted open-source alternative to Zapier/Airflow

#82
post #65

Earlier quoted context omitted.

yes, I am considering this and it should not be that hard (also Kotlin, Nashorn javascript...), but at this stage Titanoboa is just a one-man-show - so patience, I might get there ;)

FWIW, I would have to check all the ones listed but if they're sane scripting languages on the jvm then they'll implement the JSR-223 interface allowing one to pick them at runtime without a huge amount of drama: https://jcp.org/aboutJava/communityprocess/final/jsr223/inde...

[deleted]

Re: Show HN: Free hosted open-source alternative to Zapier/Airflow

#83
post #37

Earlier quoted context omitted.

It's license (fair code) sucks.

That is a fair criticism, I am aware of the AGPL license shortcomings. I just picked up the more restrictive license at the beginning - being a sole funder and not working on this full time etc. I simply did not want somebody (e.g. a big company with a big team) grabbing my code along the way and running away with it. Since now Titanoboa got to the shape I envisioned it to be in I am starting to focus more on adoptio…

>>I just picked up the more restrictive license at the beginning - being a sole funder and not working on this full time etc. I simply did not want somebody (e.g. a big company with a big team) grabbing my code along the way and running away with it.

Sounds like a great reason to use the AGPL! Can always switch the license for later releases as you gain traction.

Re: Show HN: Free hosted open-source alternative to Zapier/Airflow

#84

Earlier quoted context omitted.

> Now imagine yourself in the shoes of a vision-impaired person relying on a technology like VoiceOver —- Yeah - thats “frustrating” for like what, ‘dozens’? As opposed to just the other problems in the world that dwarf this? Now imagine you are a % of the population of the globe who actually requires this to be a thought. Yeah - personally, i see this as a statistical straw-man. Sure, why dont you imagine yourself a…

What is your point? zacwest isn't asking them to completely rewrite the page—the problem they pointed out is trivial to solve and simply needed to be recognized. If you can spend 20 minutes to drastically improve the usability of your product for "dozens" of users, why wouldn't you?

I am not saying it is bad.

I was just commenting that the scale is offset. Get it?

Re: Show HN: Free hosted open-source alternative to Zapier/Airflow

#85
This looks very interesting. The visual component in particular seems very well done.

I have a deep interest in DAG-structured ETL tooling and had a couple of questions that the documentation didn't seem to address...

1. Can I execute workflows without a server running? Something like... $ java -jar titanoboa.jar MyWorkFlowName arg1 arg2 ... ...and then my workflow executes, as a program, on my machine, until it's done and then exits? Or does every workflow always execute within the context of a running server?

2. Is there any notion of resuming a partially failed workflow? As a point of comparison, Luigi structures its DAG concept using Tasks which create Targets, and invoking a Task whose Target already exists is a no-op, so if you have a big execution graph that gets 80% finished and then dies, you can easily restart it. I find that many competing tools are missing this concept.

Re: Show HN: Free hosted open-source alternative to Zapier/Airflow

#86

This looks very interesting. The visual component in particular seems very well done. I have a deep interest in DAG-structured ETL tooling and had a couple of questions that the documentation didn't seem to address... 1. Can I execute workflows without a server running? Something like... $ java -jar titanoboa.jar MyWorkFlowName arg1 arg2 ... ...and then my workflow executes, as a program, on my machine, until it's do…

Now that it's Saturday I've had time to play with this and I believe I've found the answers to my questions...

1. Based on the Clojure REPL example in the main README, I think the answer is YES, though not exactly the way I had imagined. It seems what you would need to do is write a top-level script (or java "main") that starts a "system", starts "workers", runs your job using that system, then stops the system and exits. A little clunky compared to how Luigi does it, but usable.

2. Best as I can tell the answer is NO. Neither the documented API, nor the implementation of the API in src/clj/titanoboa/handler.clj contain any hint of an ability to operate on a job id, beyond retrieving the result of its execution.

Additional commentary: 1. Resuming failed jobs As implied by my question above, the ability to resume a failed job is essential. One of the major reasons to adopt DAG-structured code is parallel execution, and Titanoboa has that. But the OTHER major reason is to allow partially-failed computation to retry/resume without repeating already-completed work. In particular in the ETL space, we often have job graphs composed of hundreds of nodes, with total runtimes measured in hours. If my 100-node job graph fails due to an error in node #78, preventing an additional 15 downstream nodes from running, I don't want want to run all 100 nodes again after I fix the problem. I want to resume executing my graph at #78, and expect only the 16 total affected nodes to execute, since everything else ran correctly the first time (and presumably persisted their outputs). Luigi gets this one right. Airflow sorta tries but it's clunky and you can tell it's not a priority.

2. Flow/Dependency direction When designing a workflow, either in the GUI or as EDN, you tell Titanoboa what jobs are "next". This is intuitive because it comports with our notion of execution flow through a graph of jobs, but it gets things backwards. That is, when we write A->B->C, we are thinking that A will execute, and then B, and then C (perhaps results will be passed from step to step). It is often better though to describe this as A3. Properties The way Titanoboa defines workflow-level "properties", into which job-level properties are merged, and the way properties flow along the path of execution, is very nice. A constant problem with Luigi is how to flow values from one Task to the next without using an excessive number of Parameters. I can't say for sure that Titanoboa's properties construct doesn't have the same problems, without taking the time to actually use it to build a large project, but on the surface it looks good.

4. Logging I noticed that when a step's function returns a map, to be integrated into "properties", that return value is not logged. The message in the log is like "Step [my-cool-step-name] finshed with result []" which is both unhelpful, and not even literally true, as it most certainly did have a result! When a step returns a scalar value, it does get logged. I found this inconsistency frustrating.

Also, the stdout/stderr of each step function apparently goes to /dev/null. I find this odd as the placeholder function when you build a new workflow is (println "Hello World!") but if you actually execute that you'll discover that our classic greeting vanishes into the void. This is a major shortcoming. As a point of comparison, one of the biggest value-adds of using Jenkins as a job scheduler is how it automatically captures the output of anything you run, saves it in a durable log file, AND lets you view it in real time. Job orchestration systems that don't match that level of log-friendliness drive me nuts.

5. Versioning The built-in versioning system is great. Two thumbs up. I don't know how it would work if I were writing my jobs in proper Clojure or Java code in their own repo, but I kinda don't care because the value of storing and versioning what I do in the UI is so great.

6. UI -> data I love the way the interactive UI is just there to generate EDN. In a way this mirrors how Jenkins' UI builds its job XML files, but you have to go hunting for those and they're hard to read (because XML). Being able to see what EDN is generated by your actions in the UI, _right there in the UI_, is fantastic.

7. UI issues The UI is great but it has quite a bit of low-hanging-fruit improvements that could be made. - the run job popup forces you to choose a system every time, even if there is only one - being able to draw arrows in the visualization is cool, but I could not figure out how to delete them there. Needs work. - the UI doesn't lay out well on small screens (I'm on an old 13" Air), I had to zoom to 80% just to be able to see the X to delete a property. It would help if the Workflows panel on the left (the least important UI element by far!) could be collapsed (edit: it can be collapsed, but the collapse button is on the other side of the screen which makes no sense) - the box that pops up after starting a job has nothing clickable in it. I have to close it and go to the jobs tab - the jobs tab doesn't refresh when it loads, even if I just started a job, which needlessly adds clicks to the main workflow - the jobs tab has an "archived" sub-tab but no apparent way to actually move a job to the archive

Overall, there's a lot of promise here, and it's amazing to me that you built this by yourself. Still, it has a long way to go. I recommend spending some time with Luigi, which I still think is the best general way of DAG-structuring real world workflow code, and with Jenkins which remains far and away the best UI-driven job orchestration system. It seems you're already familiar with Airflow, but I would recommend you treat it mainly as an example of what not to do.

Re: Show HN: Free hosted open-source alternative to Zapier/Airflow

#87

This looks very interesting. The visual component in particular seems very well done. I have a deep interest in DAG-structured ETL tooling and had a couple of questions that the documentation didn't seem to address... 1. Can I execute workflows without a server running? Something like... $ java -jar titanoboa.jar MyWorkFlowName arg1 arg2 ... ...and then my workflow executes, as a program, on my machine, until it's do…

Now that it's Saturday I've had time to play with this and I believe I've found the answers to my questions... 1. Based on the Clojure REPL example in the main README, I think the answer is YES, though not exactly the way I had imagined. It seems what you would need to do is write a top-level script (or java "main") that starts a "system", starts "workers", runs your job using that system, then stops the system and e…

Really appreciate your time looking into this and apologies, missed your original post. You got the answeres right. Re 2 - it shouldn't be that hard to add, since everything is just data. It is however partially covered by the retry property on each step. Will read through your additional comments and will respond tomorrow (busy day, plus it's midnight here in Europe)! Cheers Miro
Post reply on HN