Jump to content

Why create your own Framework?


Ikadon

Recommended Posts

We have a database abstraction layer - that's a moot point. The problem is in writing the queries themselves, because different engines support different SQL (certain commands or syntax in MySQL are not available in MSSQL and so on).

I did not say you don't have one, I said using an existing one would have saved you time and enabled us customers to use IPS software without being bound to MySQL alone, which isn't always a possible option. (Take Symfony2's Doctrine or Laravels Eloquent for example ;) Both run a multitude of Databases out of the box!)

For example: I wouldn't use MySQL for my personal or work projects any time soon, because I've moved my attention to Postgres and MongoDB.

Link to comment
Share on other sites

  • Replies 78
  • Created
  • Last Reply

We've already seen issues where the editor has issues that IPS has to wait for the CKEditor devs to fix. Farming more and more of the code out to different third-parties would make it so more and more of the bugs that get reported rely on someone else to fix them.

Nah, never mind, let's make the next version be a few hundred different third-party tools held together by some code which just loads them all. It'll give the devs a lot of time off if they don't need to fix bugs anymore.

Ahem, old topic, but that's the core of the problem here:

The difference is: this editor was NOT free (as in money), neither was it open source!

I can't fix my car, if I'm not a mechanic or the car is welded so I can't open the cowl.

But I may be able to fix my Kernel, if I use an open source operating system and know quite a bit about C-Programming.

The essence of an open source product is, that anyone can add changes. And even if the majority of people says "Nah, this is bullfaeces", the one who edited this, can still use it. If it is good it gets added and many can profit, if not, you can still use the work of others but have to maintain the things others don't want or you don't want to share.

Link to comment
Share on other sites

Your suggestion makes sense from a point. Why reinvent the wheel .

However there are major problems with that approach for many different cases.

For example look at Magento , they need to use a heavily customised Zend version and have to invest on Zend development also.

Your suggestions may sound perfect choice for your own usage but from my stand point suggested frameworks by you are really not great choices.

They all have major flaws in my opinion and i personally stay away from any script that is build on those frameworks.

As you can see your argument will not even hold against another regular customer.

The team is responsible with developing IPB. They were hired because IPB management felt they are good developers. So instead of trying to teach them their job , why not await what the team will bring to the table and then voice your opinion ?

Link to comment
Share on other sites

The team is responsible with developing IPB. They were hired because IPB management felt they are good developers. So instead of trying to teach them their job , why not await what the team will bring to the table and then voice your opinion ?

I was not trying to teach them their jobs, I was pointing out and reviving a discussion why I (and probably other developers too) can't afford to put time into it and stating my point of view regarding this topic.

(And dealing with nonsense like "Security by obscurity is good" ... yes, absolutely, because it contradicts Kerckhoffs's principle *g* *scnr*)

I didn't wait to raise my opinion, because I know now, that as it stands I can't put time into yet another framework that is unique to this software.

It's the same reason I don't put time into any other "proprietary" solution... my time is not endless and in IT I hate nothing more than binding myself to a non open software.

I'm putting so much of my free time into free open source software and I had loved if I could've incorporated IPS-customers into this.

While I do create software to make a living, I never sold a package, because I gave them away for free.

Link to comment
Share on other sites

There's lots of great frameworks out there, for sure, and we're well aware of their benefits. Zend Framework being my personal usual go-to.

However, sometimes it's not appropriate to use a framework. If you're building a car - you're absolutely right that re-inventing the wheel is stupid. But if you're building a boat - trying to starting with a wheel and build a boat around it is silly. Especially if you want your boat to be able to sail really fast and having a wheel on the bottom might slow it down... I'm not very good at analogies but hopefully you see what I'm saying ;)

To pick a random example off the top of my head: one of the things which makes IPS Community Suite so awesome is our community of modification authors. One of the things we wanted to do in 4.0 is make it even more extensible so these guys can keep doing what they do and give them more freedom to do it. To that end, we've created a way mod authors can monkey-patch core classes. Monkey-patching is usually something which is totally impossible within PHP and we've done it by using a particular naming convention and autoloader right at the base of all our code, and it requires specific practices, like declaring most things protected where you might be tempted to use private otherwise. This would be totally impossible with a third-party framework which hadn't been written with this in mind.

If you feel that it will be impossible for you to work with our codebase if it's not based on an open-source framework, I'm disappointed to hear that, but I think the assumption is somewhat flawed - after all, you'd have to learn whatever we put on top of an open-source framework (which would be most of our codebase) anyway. Perhaps it would be a good idea to hold off until 4.0 is out and you can see the code, and then re-evaluate. I'd love to hear your opinions when that time comes :)

Link to comment
Share on other sites

Ya, but if you build a boat you see what all ships have in common, some kind of hulk and that's where I'd use a lightweight (or heavy) hulk that suits my needs best, unless I wanted to do something that has never been done before, but then it wouldn't be a boat, now would it? :D

Yes, absolutely, the modifications authors are great! That's what I love about composer nowadays. Everyone who creates a package can share it with the entire php-community! And that's where my critics hit in: When I develop for IPS the thing I made is bound to IPS... I can't give it to other non IPB-users without having to rewrite a whole lot of code. And as I do all of this for free I simply decide to do it for the majority in the first place.

For you that's not bad, because that way the developers are more bounded to you, but for me it's a waste of time. Not because your framework isn't any good, but because it's bound to you alone.

Ah, monkey patching is absolutely possible with other frameworks (example: Laravel 4 or greater). The IoC-Container is the way to go there.

See, great minds think alike, so you invented the same thing as was invented already, maybe at the same time, but L4 is released since 14 months or so.

But the real problem is, that a company such as yours simply can't fulfill even all basic needs, because you have so much to tackle down.

Let me give you a concrete example:

You don't have any interest to support other databases like Postgres or MongoDB etc.

From a business point of view I totally understand this. Most hosts out there only provide MySQL in shared hosting and the absolute majority of your customers is quite content with this or does not care at all.

However, supporting other databases wouldn't be a problem if used a portion of another framework for this.

For example, I've written 3 packages that need a database connection to work and the abstraction layer provided by the framework I use make it really easy for me to test this stuff.

They work on any database that has a driver in the framework (e.g. sqlite, postgresql, mysql, mongodb ...) so anyone can use them.

The other packages I made framework-agnostic, so when you use the framework I do, you just add two lines to your config and off you go, but if you use another framework that's absolutely fine too.

I would really love with IPS again and put time into this, so hopefully you'll go the composer way some time in the future and add support for alternate databases. :smile:

Anyway, thanks a lot for taking your time to answer.

Link to comment
Share on other sites

Composer is absolutely useless for software that will be used on shared servers. It's a shame, I like composer and use it in my own projects, but if you've got a shared server without any SSH access, then you're stuck.

Depends on the shared hosting, I'd say. I used to have shared hosting, but had ssh-access.

If you don't have access to composer, you may still install and update your application via ftp, it's just more work :/

(unless the packages are packed with all dependencies with a cron-job or so :))

Link to comment
Share on other sites

Depends on the shared hosting, I'd say. I used to have shared hosting, but had ssh-access.

If you don't have access to composer, you may still install and update your application via ftp, it's just more work :/

Yea, it does. But also bear in mind that some users have trouble figuring out how to upload the existing package via FTP (w00t) .

Link to comment
Share on other sites

Yes, absolutely, the modifications authors are great! That's what I love about composer nowadays. Everyone who creates a package can share it with the entire php-community! And that's where my critics hit in: When I develop for IPS the thing I made is bound to IPS... I can't give it to other non IPB-users without having to rewrite a whole lot of code. And as I do all of this for free I simply decide to do it for the majority in the first place.

If you mean this in reference to full-blown applications and hooks (as we know them).. .I don't agree with that at all. A generic package that boasts cross-platform compatibility will never provide anywhere near the kind of integration and unified user experience into the rest of the IPS suite that a platform-specific package would. The only way I see that making sense is if IP.Board itself was little more than a self-contained 'Forum' package for some common framework that does most or all of the heavy lifting, and there's no way that could ever be the case.

Link to comment
Share on other sites

Yea, it does. But also bear in mind that some users have trouble figuring out how to upload the existing package via FTP (w00t) .

Well, for those there are not-self-hosted services and there you could run updates again ;)

Link to comment
Share on other sites

If you mean this in reference to full-blown applications and hooks (as we know them).. .I don't agree with that at all. A generic package that boasts cross-platform compatibility will never provide anywhere near the kind of integration and unified user experience into the rest of the IPS suite that a platform-specific package would. The only way I see that making sense is if IP.Board itself was little more than a self-contained 'Forum' package for some common framework that does most or all of the heavy lifting, and there's no way that could ever be the case.

"Unified user experience" For the greatest part this comes down to usability and ui-design and has little to do with the implementation of the functionality itself.

If you structured your application well the package shouldn't add anything to this, except for the functionality itself.

The integration part should be solved by Interfaces (as in PHP Interface) so that you could exchange one package with the other easily, without even realizing it happened.

Personally I'm all for decoupling as much as possible so it can be reused :)

Link to comment
Share on other sites

If you feel that it will be impossible for you to work with our codebase if it's not based on an open-source framework, I'm disappointed to hear that, but I think the assumption is somewhat flawed - after all, you'd have to learn whatever we put on top of an open-source framework (which would be most of our codebase) anyway.

Exactly what I thought about this discussion, thank you for putting it into words.

Yes, absolutely, the modifications authors are great! That's what I love about composer nowadays. Everyone who creates a package can share it with the entire php-community! And that's where my critics hit in: When I develop for IPS the thing I made is bound to IPS... I can't give it to other non IPB-users without having to rewrite a whole lot of code. And as I do all of this for free I simply decide to do it for the majority in the first place.

Could you give an example of something you would develop with IPB in mind and tell what purpose it would serve? How would you then be able to still use the same exact code in other projects? Because, let's say I code an alternate way to sort the topics in a forum room, how would being "composer-ready" make it any easier for me to share and implement the same code in other projects? Let's say other board vendors used the same framework and was composer ready. Wouldn't it be a possibillity it would have to be rewritten either way? After all, they could have entirely different names on their topic variables!

Link to comment
Share on other sites

How can you critique a framework without ever seeing the code first? What if it's better than other frameworks at doing whatever the goals of the software are? I appreciate the discussion, but it seems like it lacks any argument. The only negative issue could be the learning curve in learning the new framework, but that's the nature of software development. Lots of new things come about.

Link to comment
Share on other sites

Could you give an example of something you would develop with IPB in mind and tell what purpose it would serve?

No, sorry. As said, I've already created some packages that are available today which I could see a benefit to be included in IPS (after all I used it myself extensively a few years ago!), but I simply don't want too much information about me flying around.

How would you then be able to still use the same exact code in other projects? Because, let's say I code an alternate way to sort the topics in a forum room, how would being "composer-ready" make it any easier for me to share and implement the same code in other projects? Let's say other board vendors used the same framework and was composer ready. Wouldn't it be a possibillity it would have to be rewritten either way? After all, they could have entirely different names on their topic variables!

You're thinking of a tailored application I think, while I'm not. I'm not thinking about a fully integrated modification that is embedded into the UI of IPS, but rather of sharing functionality that can then be implemented and tailored to the specific appliciation.

That works quite easily with namespaces and the extensibility of the frameworks I normally use. Basically you add a service provider (or whatever it is called in the framework) and off you go (as a developer).

And regarding the different topic variables: That's why you code to an interface. It's easier to exchange great portions of code in one go then as well ;)

How can you critique a framework without ever seeing the code first? What if it's better than other frameworks at doing whatever the goals of the software are? I appreciate the discussion, but it seems like it lacks any argument. The only negative issue could be the learning curve in learning the new framework, but that's the nature of software development. Lots of new things come about.

Hello! I'm happy if you join the conversation but please don't force me to answer the same questions over and over again.
For the tl;dr - fraction: 1) I want as much parts of the whole (php)community to profit from my package as possible 2) I don't want to learn another framework for every software (that defeats one major benefit that frameworks may have).

Link to comment
Share on other sites

But there are dozens of frameworks, some of which serve unique markets. Which one should IPS choose? Which one is the best? What if they pick one you don't know? What if the one they pick and invest towards stops being developed? What if it costs more to work with a 3rd party framework than a custom one, as strange as that might seem (since there are risks and learning and customization costs involved)?

Bfarber already stated why a custom framework is being used.

By the way, did you have Laravel, codeigniter, symfony, or something else in mind?

Link to comment
Share on other sites

But there are dozens of frameworks, some of which serve unique markets. Which one should IPS choose? Which one is the best? What if they pick one you don't know?


That's their decision. If they had picked one I don't know there was still a, probably bigger and what's more important to me an open, community around it, it could be composer-ready and they still had not needed to create the basics themselves.

Laravel was initially developed by one guy, it's now quite big (so is Symfony2) Other projects move to these frameworks, so they can exchange knowledge and resources without being held back by reinventing the wheel over and over again.

The web is moving forward faster and faster and it took IPS multiple years to get IPS 4.0 ready, so ... I think the time of big updates is about to be gone.

What if the one they pick and invest towards stops being developed?


Doesn't matter, we talk about an open source framework here. If the development really would cease (why would hundreds of devs suddenly abandon a project the use themselves?) they could still improve it by themselves.

Still they wouldn't have needed to develop the hull of the ship (= all the basic stuff that is already covered a dozen times in other frameworks)

Example: Even Laravel builds upon components of Symfony2, because "Why reinvent the wheel?" ;)

What if it costs more to work with a 3rd party framework than a custom one, as strange as that might seem (since there are risks and learning and customization costs involved)?


I think that the cost would've been worth it in the long run, because you would have more people suddenly interested in IPS.

Believe it or not, vendor lock-in "scares" a lot of developers away. I, myself, would never bind me to some software if it's not absolutely necessary to achieve what I want.

Hence I don't develop for DirectX (for example), but prefer OpenGL :smile:

Bfarber already stated why a custom framework is being used.


Yes, he did. And the train has left a while ago. I came back out of interest, that's all.

By the way, did you have Laravel, codeigniter, symfony, or something else in mind?


Symfony could've been a good base, like it is for Drupal 8. Flow could've been a choice, or even Laravel (but the really awesome versions of Laravel weren't ready when development of IPS 4.0 began, so... ;))

And why I don't use IPS 4? Because it still only supports MySQL (whereas other frameworks allow about any database, as long as there is a driver for it) and I don't use MySQL in any way anymore. (In fact I wouldn't touch it with pincers if I can avoid it *g*)

Anyway, I'm repeating myself over and over again. I've literally answered the same questions multiple times now.

I was here to state my personal opinion as a full-time developer and a hobby-web-developer as on what holds me back to further support IPS-Software.

Then I was here to stand against misinformation such as "Security by Obscurity is good" (which it is not and will never be! The safety of a system must be based upon mathematics not upon keeping an algorithm safe) and simple misunderstandings such as comparing another commercial "closed source" product like an editor with an open source framework and the problems that arise with the former.

So, have a wonderful day, enjoy this product and have fun with the future of it (I hope it will be bright)!
Link to comment
Share on other sites

Ya, but if you build a boat you see what all ships have in common, some kind of hulk and that's where I'd use a lightweight (or heavy) hulk that suits my needs best.

I'm no programmer, I'm no mod author but I can edit and fix problems. However, that is irrelevant to my point. I'm a business man, I supply high end quality windows that are highly energy efficient (0.68W/m2K and probably means nothing to a lot of people). However, we work a building principle which is called Passive House (PassivHaus).

That principle is making sure the envelope (the building fabric) is as draught free as possible, that the house is as energy efficient as possible and uses 15kWh per meter squared per annum. What does this mean? Well it means that a house built to Passive House principle in the UK is 10x+ more energy efficientthat current building standards.

It is also calculated on how it performs as it is being built and more importantly controlled by PHPP (Passive House Planning Package). Compared to the current standard of using SAPS which has a 40%, yes 40% allowance for certain things used and is the current standard. It's about using products that do the job and not just claiming the can do the job, certificates of test results confirming the values the obtain can be supplied.

So how is this relevant to IPS?

Simple IPS are using the same principle of building fabric first, look after building fabric and you will get a more efficient product built for what you want it to do, not something that best suits your needs.

Link to comment
Share on other sites

how many big projects are there that use these frameworks? I think these frameworks are great for developers working with private clients with small to mid size projects, but a framework may not always serve corporate interests (e.g., IPS). What framework is vBulletin, opencart, magento, phpBB, or other software using?

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.

  • Recently Browsing   0 members

    • No registered users viewing this page.

×
×
  • Create New...