4 ms·
I'd like to build some kind of shared resource where people publish completed generic projects. I find myself and others constantly reinventing the wheel, and i
by throwaway984393 5y ago
I'd like to build some kind of shared resource where people publish completed generic projects. I find myself and others constantly reinventing the wheel, and it seems absolutely nuts; how are we ever going to progress if we keep wasting our time re-making what has already been made?
Say there's some web framework, and lots of people write online shopping carts in it. Well, after the 1000th online shopping cart has been written in this web framework, you'd think there'd just be one standard implementation of a shopping cart published to the framework's website. But often, for all kinds of such common projects, there is no standard implementation. And then you have your shopping cart, but there's all these other components you need to hook up to it. It would be great to have an example of hooking up each of those components. And over time it would become like the "Uber-Shopping-Cart" that can do it all.
This could work for more than code, too: configuration, walkthroughs on integrating components, architectural plans, CI & CD. There's got to be some way to create a shared library of reusable, ready-to-modify, free technology solutions. So that whether you're a hobbyist or an employee in a FAANG, you can just grab an off-the-shelf solution, put in a tiny bit of logic specific to your needs, and go on to your next task. Not only would it save each person countless hours for every one of these, but they could be bug-fixed, supported across multiple versions of their dependencies, have features added by a wide community.
The problem is I really don't have a great idea what it should look like, or how to get people engaged. The scope is enormous; I could add my own project samples, but I don't actually write a whole lot of code, I mostly do Cloud Systems Engineering. So I would love to pair up with others who are interested in having such a library so we can figure out what it should look like and start contributing to it.
- eternityforest 5y agoI'm working on a standard for easy drop-in home IoT drivers: https://github.com/EternityForest/iot_devices https://github.com/EternityForest/iot_devices Maybe you could go one level of meta up and instead of working on reusable components, work on reusable definitions for component interfaces. Reuse is hard because you need a bunch of glue code. But if you had, like a standard for a toolbar, that knew how to find all the ToolbarAble objects, and the shopping cart icon just showed up, etc, things would get easier. The shopping cart could know to look for all the payment requesting components declared in your Big Project File or whatever, and everything could stay modular ish? GitHub is already the standard place to share generic projects.
- minhmeoke 5y ago+1, to make this work you'd need a standardized schema, and well-defined, relatively stable interfaces. Github, some kind of programming ecosystem (eg: Android libraries or Python Flask server modules), or a cloud system (with the associated problems of vendor lock-in which could be mitigated via federation and open-sourcing the system) seem like the best way to distribute these. For example, Salesforce has made this work by giving every customer a standard base schema, and then letting developers build modules on top of that: https://appexchange.salesforce.com/ https://appexchange.salesforce.com/ The hard part is designing a core schema that is sufficiently useful and powerful such that people adopt it, while still allowing sufficient per-user customization so that the system can meet specific customer needs. And then when people start using custom extensions to the core schema, ensuring that all the plug-ins and extensions interoperate seamlessly with the huge number of possible combinations.