13 ms·
Boden – Native mobile cross-platform applications
- rhodysurf 7y agoThis is awesome but man the licensing sucks.. Sounds like to release on the App Store you have to pay for a commercial license? Even a free app?
- cheez 7y agoThe licensing is likely intended to ensure sustainability
- mwcampbell 7y agoOr even, gasp, profitability for the developers. That's a perfectly reasonable thing for a developer or company to expect. It would be better, though, if they published pricing and had a self-service purchase process, rather than requiring users to contact them.
- detaro 7y agoIt's a really new project, so they're probably still figuring out what model works best and might want to limit the kind of deal they do - e.g. make sure it fits the client and they can support them with development where necessary. Freely selling licenses and then have unhappy customers that didn't evaluate the current state properly would be problematic.
- GordonS 7y agoPerhaps, but it's a bit of a dilemma - a GPL license likely won't allow this to gain enough traction to become sustainable in the first place.
- detaro 7y agoYes. GPL apps can't go into the app store, because it's terms of use forbid activities that can't be forbidden according to GPL.
- dkersten 7y agoI don't quite understand this. The GPL gives the end user the rights to the source, to modify the source and to redistribute the software (modified or otherwise), as long as they make the source available. It doesn't say it has to be available through the exact same mechanism that you received the software in the first place, nor does it say that you have to release your changed software through the same mechanism. IANAL, so I definitely could be wrong, but as long as your GPL software links to the code, eg on Github or somewhere, and provides all of the source including your modifications there, any other restrictions the App Store enforces should be irrelevant to the GPL, right? (Unless the app store says you can't link to external source code, or something, of course) What am I missing?
- invokestatic 7y agoThe main difference between GPLv2 and v3 is the prevention of “TiVoization”. The background is that TiVo I believe was using the Linux kernel in their devices, and despite the fact that they were contributing their changes back to the community, they used code signing, or some other technical measure, to prevent end-users from running a custom version of the Linux kernel. So in reaction to this, GPLv3 was released that explicitly prohibits this behavior — that is, there must not be any technical measure preventing the user from using a modified version of the GPL’d software. On iOS, Apple enforced code signing on all apps, so a user cannot download an app’s source, modify it, and use it on their device. Code signing prevents that, therefore would be a violation of GPL.
- saagarjha 7y ago> a user cannot download an app’s source, modify it, and use it on their device But I can do this for open source apps? More specifically (disclaimer: I am not a lawyer, and I don't know if this has been tested in court), I personally don't see the GPL requiring that I be able to modify the exact, signed binary that I was shipped if I can create an equivalent one myself.
- 7y ago
- gitoby 7y agoAuthor here. We are aware of the issues with the GPL. We are in the process of adding an LGPL licensing option.
- jfbaro 7y agoAwesome! Does anyone know if there is any similar framework for RUST?
- rhodysurf 7y agoThere is not.
- sidewinder128 7y agoSadly no. Something like this for Rust would be a game changer. Rust is very nice language I love it. Also I love C++17.
- pjmlp 7y agoFirst Rust still requires some ergonomic improvements to handle GUI coding in a better way.
- weberc2 7y agoLike what? (earnest question)
- pjmlp 7y agoHandling callbacks without piles of Rc<RefCell<>> to access widget data, or having vectors simulating graphs, the most used data structure for UI widgets, having to deal with use-after-free indexes.
- holy_city 7y agoIt sounds like you tried to write rust like it's OOP. You're gonna have a bad time if you do that. >Handling callbacks without piles of Rc<RefCell<>> to access widget data That's why you don't let widgets hold program state, they should just propagate deltas and display current state. It's a different way of thinking about how UI can work, but imho it has a lot of benefits aside from just speed and safety. >having vectors simulating graphs, You mean adjacency lists? They're a canonical realization of a graph, and a fast one at that. >having to deal with use-after-free indexes. What do you mean by this?
- sidewinder128 7y agoIt looked very promising but GPL for mobile iOS and Android Apps It is impossible, even I release the Apps free it is very difficult to work with GPL on those ecosystems. It is sad because it really looks very cool code.
- kiki_jiki 7y agoFrom the FAQ: > Finally, there will be a commercial licensing option for everyone who cannot or does not want to comply with the GPL.
- sidewinder128 7y agoThanks for the insight. I hope they can make it happen easy and with a reasonable price I will get it.
- sanxiyn 7y agoThis seems available under GPL v2. v2 is okay with App Store.
- saagarjha 7y agoVLC was pulled from the App Store due to its license being GPLv2 at the time.
- lazerwalker 7y agoApple's App Store licensing agreement allows you to distribute GPL v2 software. However, the GPL v2 license does not allow distribution under Apple's licensing terms. It's possible to have GPL v2-licensed software on the App Store, but it essentially requires relicensing or dual licensing by the copyright holder (which is what they do here with selling a commercial license to distribute).
- gitoby 7y agoBoden author here, a bit overwhelmed by the feedback. We are in the process of releasing a new version that will change the license to LGPL / Commercial.
- openbasic 7y agoI don't see anything on camera, GPS, maps, push, etc. Was this implemented?
- detaro 7y agoFrom what I remember from a podcast with the creators (cppcast I think), it's planned but not yet implemented.
- ericlewis 7y agothere is a lot more than that missing.
- nurettin 7y agoI did not see much, they just have a rudimentary wrapper for instantiating java classes, calling methods and retrieving objects in `bdn::java::wrapper::Class` which itself is a wrapper around JNI.
- ericlewis 7y agoFrom reading the iOS code there is already a number of bugs that will have issue, including but not limited to the iOS handling of text inputs. You won't get events / onchange firing correctly for autocorrections or when Chinese chars compact themselves. Seems like a very cool project anyway, there is a lot you could learn from react-native's approach to native components. Edit: not to mention no support for text areas, will be interested to see that abstraction :)
- Jach 7y agoI didn't look but I suspected such issues the moment they mentioned best practices and std::string in the same paragraph... It seems like it could be a fun project but I wonder who the target audience will be. Maybe they're working with a partner? I'm thinking for others it must be new startups just starting out, since every existing company I've seen that targets both platforms with native apps inevitably seems to split the codebases into iOS and Android sides because the platforms are sufficiently different. And of those companies a subset will have a shared C++ layer where it makes sense, probably with lots of cross platform issues already ironed out such that trying to drop in this would be too risky unless it matures into a really awesome project rather than its current preview release state... Best of luck to them.
- pier25 7y agoSo how does this actually work? It sounds like Xamarin Forms.
- rhodysurf 7y agouses C++ interfaces to native (objC/Java) classes so you can write the whole app in C++
- flopp 7y agoThere's a recent episode of the CppCast where the developers of boden.io are interviewed: http://cppcast.com/2019/04/marcus-tobias/ http://cppcast.com/2019/04/marcus-tobias/
- abtinf 7y agoA cross-platform c++ framework... why not just use QT?
- weberc2 7y agoNative look and feel.
- rhodysurf 7y agoBecause Qt does not use the native UI toolkit
- detaro 7y agoQt isn't using native elements, and their mobile support is usable but not really great either (and doesn't appear to be a current priority, which makes a mobile-only project potentially more attractive). I'm not sure I'd use it if I didn't have existing Qt experience or even code to reuse.
- programmarchy 7y agoThe target audience seems very small. There’s lots of C# shops (Xamarin), and lots of JavaScript shops (React Native, Titanium), but few C++ shops that’d benefit from developing apps. Maybe I’m wrong but the niche seems too small to be sustainable.
- langitbiru 7y agoSoon there will be Dart shops (Flutter). :)
- programmarchy 7y agoFunny you mention that. I primarily work with native mobile development and have grown fond of Flutter. Interestingly, the situation is reversed; shops will adopt Dart because of Flutter.
- pjmlp 7y agoAt least that is what Dart team hopes, after losing support from Chrome and Angular teams.
- felideon 7y agoExcept Angular Dart is alive and kicking, no? Powering AdSense at least which is a huge chunk of Google's business if I recall correctly from a Flutter talk by the PM who put some numbers on a slide.
- pjmlp 7y agoIt looks pretty dead to me. AdSense team rescued Dart from certain death. They also used to be heavy GWT users before, a stack now mostly discarded by Google.
- pjmlp 7y ago#KotlinFirst
- gitoby 7y agoAuthor here. We didn't expect so much attention and are happy about the feedback! Ask us anything. With regard to the GPL licensing issues brought up here: We are aware that the GPL is not sufficient and we are in the process of adding an LGPL option. This will allow you to publish apps based on Boden on the iOS app store.
- injidup 7y agoHow will the license enforce that an app using an LGPL version of the library can't be sold? As such LGPL doesn't mean the consuming app has to be free.
- gitoby 7y agoSorry, I should have written "apps conforming to the terms of the LGPL" instead of "free". Of course it's still possible to sell apps based on Boden licensed under LGPL as long as you comply with the license terms. I fixed the parent comment.
- injidup 7y agoIs there then a business model in a commercial license for Boden if a company can use it as LGPL? In general are there many companies who pay for a commercial license to avoid LGPL?
- IceWreck 7y ago> Write your mobile apps in modern C++17 and compile 100% native Android and iOS apps from a single statically typed codebase. Does this thing work in the same way as flutter? (ie. your own UI framework that looks and feels like the official one?)
- pjmlp 7y agoNot at all, they bind to platform widgets and use a programming language that is one of the building blocks of our industry.
- charlesdaniels 7y agoI am curious to know if this can also target a desktop toolkit such as gtk/qt/tk/wx and so on. I probably wouldn't want to use such an arrangement as a user, but I could see it being very useful as a developer for testing out app functionality without emulation or a separate device. I also wonder if this will be able to target the puri.sm Librem 5 when that comes out?
- gitoby 7y agoThere is already an experimental macOSX port in boden. More desktop support is a future goal. The library is designed to support all types of operating systems.
- bbarley 7y agoForget Boden and forget messy C++... use Google backed Flutter framework with Dart. https://flutter.dev https://flutter.dev Checkout youtube for presentations. Build once for iOS, Android, ChromeOS, Web, All desktops.
- untog 7y agoAs the intro page demonstrates, modern C++ isn't really all that messy. I think there's a solid argument that it's a more dependable option than Dart, which isn't really used by anyone other than Google.
- bbarley 7y agoBetter languages have moved beyond C++. I've developed software for over 20 years. I've use C++ for many of those years. Software languages and tools have evolved past C++. Imagine the "evolution of man" drawing. C++ is the middle guy not exactly standing upright.
- untog 7y agoAn "evolution of man" drawing wouldn't really be accurate because it implies each entry is static in terms of evolution. C++ is very obviously not, and modern C++ is barely recognizable compared to code written years ago.
- equasar 7y agoWhile I really like Flutter, there should be alternatives for everyone, and that includes people who doesn't like Flutter.
- bbarley 7y agoI agree. All should choose their own languages and tools. The more competition in the marketplace the better. Hopefully the one you choose will have long term support, be accepted by industry and developers, deliver on the promised marketing, and have reasonable open source licenses. Anything else?
- layoutIfNeeded 7y agoWhile I love C++, I can’t help but see this as the n-th iteration of the noble but impossible pursuit of a cross-platform GUI framework. Cross-platform GUIs never work. They almost work to the point where managers latch onto the idea because they think it will let them fire half of the engineers, but the end result is always well in the uncanny valley. Open Gimp on macOS and see what I’m talking about. Or Slack. Or Eclipse. Etc.
- bsimpson 7y agoI don't speak C, but as a long-time web developer, it smells to me to see "Center" capitalized in the flexbox snippet. Why is it different than CSS? How is a developer supposed to understand the capitalization rules? https://www.boden.io/reference/ui/yoga/layout/ https://www.boden.io/reference/ui/yoga/layout/
- rayiner 7y agoIn C/C++ a common style is to use camelcase with an initial lower case letter for variable like things and with an initial upper case letter for constant or enumeration like things.
- layoutIfNeeded 7y ago>How is a developer supposed to understand the capitalization rules? By relying on the compiler to check it?
- dang 7y agoA discussion from 6 months ago: https://news.ycombinator.com/item?id=18570423 https://news.ycombinator.com/item?id=18570423.
- Lord_Zero 7y agoFrom that thread: > Yes, I was also wondering why it's necessary to come up with yet another smart pointer, which you need to learn and which is probably not battle tested. - https://news.ycombinator.com/item?id=18586992 https://news.ycombinator.com/item?id=18586992 Even though on the main website they say: > No custom containers, smart pointers, or reinvented basics. This allows you to reuse your existing knowledge and focus on what's most important: your app.
- stackmad 7y agoAuthor of boden here: We have since moved away from a self written smart pointer and replaced as much as possible with standard C++ classes ( shared_ptr, weak_ptr, std::string etc. )
- ppeetteerr 7y agoIt's cool to have options for x-platform development. I think we're at a solid 3 solutions: Boden (C++), Kotlin, and Xamarin (C#). Not to forget Unity and the JS solutions out there...
- andrewmd5 7y agoFlutter (Dart) is one of the best.
- ppeetteerr 7y agoOh yeah! Good call.
- rw2 7y agoI want to use C++ less than Java and Swift, especially Swift, I don't see this as catch on because C++ is lower level language.
- emmanueloga_ 7y agoI was exciting about trying an C++ IDE again after a few years of working in other languages. I tried VisualStudio for some simple C++ stuff (learning OpenGL with GLFW) and I found compilers and IDEs are still a pretty sluggish experience, all these years later. I suspect Qt people developed QML for this reason: it is hard to beat the experience of instantly running something vs compiling C++ code on each run.
- chrismsimpson 7y agoThis is how I think it should be solved: https://github.com/chrismsimpson/Meta https://github.com/chrismsimpson/Meta